1:"$Sreact.fragment"
b:I[168027,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
:HL["/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","style"]
:HL["/docs/_next/static/chunks/663a923474cdb1e6.css?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","style"]
:HL["/docs/_next/static/media/83afe278b6a6bb3c.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/docs/_next/static/media/PaperMono_Variable.p.aa32f7a0.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/docs/_next/static/media/f67ad414ed34149c.p.84166d94.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
0:{"P":null,"b":"eGGTvLnUPuyhF0XPrCwmV","p":"/docs","c":["","_sites","launchdarkly","api","overview"],"i":false,"f":[[["",{"children":["%5Fsites",{"children":[["subdomain","launchdarkly","d"],{"children":["(multitenant)",{"children":[["slug","api/overview","oc"],{"children":["__PAGE__",{}]}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/docs/_next/static/chunks/663a923474cdb1e6.css?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}]],["$","html",null,{"suppressHydrationWarning":true,"lang":"en","className":"inter_1d81deff-module__CYM0aG__variable papermono_89c757f2-module__6aS5zq__variable dark","data-banner-state":"visible","data-assistant-state":"closed","data-page-mode":"none","data-current-path":"/","children":[["$","head",null,{"children":[["$","script",null,{"type":"text/javascript","dangerouslySetInnerHTML":{"__html":"!function(){var b=\"/docs\";\nfunction a(p){if(p==null)return\"/\";p=\"\"+p;if(\"\"===p)return\"/\";return\"/\"===p.charAt(0)?p:\"/\"+p}\nfunction u(p){if(p==null)return p;p=\"\"+p;if(!p||p.charAt(p.length-1)===\"/\")return p.slice(0,-1);return p}\nfunction i(p){if(p==null)return p;p=\"\"+p;if(6<=p.length&&p.substring(p.length-6)===\"/index\")return p.substring(0,p.length-6);if(\"index\"===p)return\"\";return p}\nvar p=(location.pathname||\"\").split(\"?\")[0].split(\"#\")[0]||\"\";\nif(b)if(p===b)p=\"\";else if(0===p.indexOf(b+\"/\"))p=p.substring(b.length);\np=a(p);p=u(p);p=i(p);p=\"\"===p||\"index\"===p?\"/\":a(p);\ndocument.documentElement.setAttribute(\"data-current-path\",p);\n}();"}}],["$","script",null,{"type":"text/javascript","dangerouslySetInnerHTML":{"__html":"(() => {\n  const isIOS =\n    /iP(hone|ad|od)/.test(navigator.userAgent) ||\n    (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints > 1);\n  if (!isIOS) return;\n  const apply = () => {\n    for (const meta of document.querySelectorAll('meta[name=\"viewport\"]')) {\n      const content = meta.getAttribute('content') || '';\n      if (!content.includes('maximum-scale')) {\n        meta.setAttribute('content', content + ', maximum-scale=1');\n      }\n    }\n  };\n  apply();\n  new MutationObserver(apply).observe(document.head, {\n    childList: true,\n    subtree: true,\n    attributes: true,\n    attributeFilter: ['content'],\n  });\n})();"}}],["$","script",null,{"type":"text/javascript","dangerouslySetInnerHTML":{"__html":"!function(){\nfunction read(){try{\nvar e=performance.getEntriesByType?performance.getEntriesByType(\"navigation\"):[];\nvar st=(e[0]&&e[0].serverTiming)||[];\nvar g={};\nfor(var i=0;i<st.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}\nif(n===\"country\")g.country=d;else if(n===\"region\")g.region=d;else if(n===\"continent\")g.continent=d;}\nvar w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;\n}catch(x){}}\nread();document.addEventListener(\"DOMContentLoaded\",read);\n}();"}}],["$","script",null,{"type":"text/javascript","dangerouslySetInnerHTML":{"__html":"!function(){try{\nvar w=window;w.mintlify=w.mintlify||{};\nvar q=w.mintlify.__apiPlaygroundInputsQueue;\nif(!Array.isArray(q)){q=[];w.mintlify.__apiPlaygroundInputsQueue=q;}\nw.mintlify.api=w.mintlify.api||{};\nw.mintlify.api.playground=w.mintlify.api.playground||{};\nif(typeof w.mintlify.api.playground.setServerVariables!==\"function\"){\nw.mintlify.api.playground.setServerVariables=function(v){q.push({type:\"set\",variables:v});};\n}\nif(typeof w.mintlify.api.playground.clearServerVariables!==\"function\"){\nw.mintlify.api.playground.clearServerVariables=function(){q.push({type:\"clear\"});};\n}\n}catch(e){}}();"}}],"$L2","$L3",false]}],"$L4"]}]]}],{"children":["%5Fsites","$L5",{"children":[["subdomain","launchdarkly","d"],"$L6",{"children":["(multitenant)","$L7",{"children":[["slug","api/overview","oc"],"$L8",{"children":["__PAGE__","$L9",{},null,false]},null,false]},null,false]},null,false]},null,false]},null,false],"$La",false]],"m":"$undefined","G":["$b",["$Lc","$Ld"]],"s":false,"S":true}
e:I[667786,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"MintlifyApiPlaygroundInputsInit"]
f:I[339756,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
10:I[556357,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a7bfe18a449dcfc.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
11:I[837457,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
12:I[894587,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ThemeProvider"]
13:I[152823,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ColorVariables"]
14:I[531961,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"FontScript"]
15:I[649328,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"RoundedVariables"]
16:I[702910,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1ab9b93a6248b56d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"RecommendedPagesList"]
17:I[570420,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"DataCurrentPathUpdater"]
18:I[341175,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/980a6eea27abb7f8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
1b:I[897367,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"OutletBoundary"]
1d:I[711533,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"AsyncMetadataOutlet"]
1f:I[897367,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ViewportBoundary"]
21:I[897367,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"MetadataBoundary"]
22:"$Sreact.suspense"
2:["$","script",null,{"type":"text/javascript","dangerouslySetInnerHTML":{"__html":"(function(){\nif(typeof CSS===\"undefined\"||!(\"registerProperty\" in CSS))return;\nif(CSS.supports&&CSS.supports(\"-webkit-backdrop-filter:none\"))return;\nvar n=[\"--scroll-area-overflow-x-start\",\"--scroll-area-overflow-x-end\",\"--scroll-area-overflow-y-start\",\"--scroll-area-overflow-y-end\"];\nvar d={\"syntax\":\"<length>\",\"inherits\":false,\"initialValue\":\"0px\"};\nfor(var i=0;i<n.length;i++){try{CSS.registerProperty({name:n[i],syntax:d.syntax,inherits:d.inherits,initialValue:d.initialValue})}catch(e){}}\n})();"}}]
3:["$","script",null,{"type":"text/javascript","dangerouslySetInnerHTML":{"__html":"(function(a,b){try{let c=document.getElementById(\"banner\")?.innerText;if(c){for(let d=0;d<localStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)&&localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,\"hidden\")}document.documentElement.setAttribute(b,\"visible\");return}for(let c=0;c<localStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)&&localStorage.getItem(d))return void document.documentElement.setAttribute(b,\"hidden\")}document.documentElement.setAttribute(b,\"visible\")}catch(a){document.documentElement.setAttribute(b,\"hidden\")}})(\n  \"bannerDismissed\",\n  \"data-banner-state\",\n)"}}]
4:["$","body",null,{"className":"antialiased","children":[["$","$Le",null,{}],false,["$","$Lf",null,{"parallelRouterKey":"children","error":"$10","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/docs/_next/static/chunks/1a7bfe18a449dcfc.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}],["$","script","script-1",{"src":"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}],["$","script","script-2",{"src":"/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}],["$","script","script-3",{"src":"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}]],"template":["$","$L11",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","$L12",null,{"children":[["$","$L13",null,{}],["$","$L14",null,{}],["$","$L15",null,{}],["$","style",null,{"children":":root {\n  --primary: 17 120 102;\n  --primary-light: 74 222 128;\n  --primary-dark: 22 101 52;\n  --background-light: 255 255 255;\n  --background-dark: 15 17 23;\n}"}],["$","main",null,{"className":"h-screen bg-background-light dark:bg-background-dark text-left","children":["$","article",null,{"className":"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full","children":["$","div",null,{"className":"w-full max-w-xl px-10","children":[["$","span",null,{"className":"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary","children":["Error ",404]}],["$","h1",null,{"className":"font-semibold mb-3 text-3xl","children":"Page not found!"}],["$","p",null,{"className":"text-lg text-gray-600 dark:text-gray-400 mb-6","children":"We couldn't find the page."}],["$","$L16",null,{}]]}]}]}]]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],false,["$","$L17",null,{}]]}]
5:["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L11",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
6:["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","error":"$18","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"/docs/_next/static/chunks/980a6eea27abb7f8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}],["$","script","script-1",{"src":"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}],["$","script","script-2",{"src":"/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}],["$","script","script-3",{"src":"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true}]],"template":["$","$L11",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","$L12",null,{"children":[["$","$L13",null,{}],["$","$L14",null,{}],["$","$L15",null,{}],["$","style",null,{"children":":root {\n  --primary: 17 120 102;\n  --primary-light: 74 222 128;\n  --primary-dark: 22 101 52;\n  --background-light: 255 255 255;\n  --background-dark: 15 17 23;\n}"}],["$","main",null,{"className":"h-screen bg-background-light dark:bg-background-dark text-left","children":["$","article",null,{"className":"bg-custom bg-fixed bg-center bg-cover relative flex flex-col items-center justify-center h-full","children":["$","div",null,{"className":"w-full max-w-xl px-10","children":[["$","span",null,{"className":"inline-flex mb-6 rounded-full px-3 py-1 text-sm font-semibold mr-4 text-white p-1 bg-primary","children":["Error ",404]}],["$","h1",null,{"className":"font-semibold mb-3 text-3xl","children":"Page not found!"}],["$","p",null,{"className":"text-lg text-gray-600 dark:text-gray-400 mb-6","children":"We couldn't find the page."}],["$","$L16",null,{}]]}]}]}]]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}]
7:["$","$1","c",{"children":[[["$","script","script-0",{"src":"/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-6",{"src":"/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-7",{"src":"/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-8",{"src":"/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-9",{"src":"/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-10",{"src":"/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-11",{"src":"/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-12",{"src":"/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-13",{"src":"/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-14",{"src":"/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-15",{"src":"/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-16",{"src":"/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-17",{"src":"/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-18",{"src":"/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}]],"$L19"]}]
8:["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L11",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
9:["$","$1","c",{"children":["$L1a",[["$","script","script-0",{"src":"/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}],["$","script","script-6",{"src":"/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","async":true,"nonce":"$undefined"}]],["$","$L1b",null,{"children":["$L1c",["$","$L1d",null,{"promise":"$@1e"}]]}]]}]
a:["$","$1","h",{"children":[null,[["$","$L1f",null,{"children":"$L20"}],null],["$","$L21",null,{"children":["$","div",null,{"hidden":true,"children":["$","$22",null,{"fallback":null,"children":"$L23"}]}]}]]}]
c:["$","link","0",{"rel":"stylesheet","href":"/docs/_next/static/chunks/462bacc63bed9960.css?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
d:["$","link","1",{"rel":"stylesheet","href":"/docs/_next/static/chunks/663a923474cdb1e6.css?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
20:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover"}]]
1c:null
24:I[27201,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"IconMark"]
1e:{"metadata":[["$","title","0",{"children":"REST API overview - LaunchDarkly"}],["$","meta","1",{"name":"application-name","content":"LaunchDarkly"}],["$","meta","2",{"name":"generator","content":"Mintlify"}],["$","meta","3",{"name":"msapplication-config","content":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon/browserconfig.xml"}],["$","meta","4",{"name":"apple-mobile-web-app-title","content":"LaunchDarkly"}],["$","meta","5",{"name":"msapplication-TileColor","content":"#90C610"}],["$","link","6",{"rel":"canonical","href":"https://launchdarkly.com/docs/api/overview"}],["$","link","7",{"rel":"alternate","type":"application/xml","href":"/docs/sitemap.xml"}],["$","link","8",{"rel":"alternate","type":"text/markdown","href":"/docs/api/overview.md"}],["$","meta","9",{"property":"og:title","content":"REST API overview - LaunchDarkly"}],["$","meta","10",{"property":"og:url","content":"https://launchdarkly.com/docs/api/overview"}],["$","meta","11",{"property":"og:site_name","content":"LaunchDarkly"}],["$","meta","12",{"property":"og:image","content":"https://launchdarkly.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3D%2B%26title%3DREST%2BAPI%2Boverview%26theme%3Dfd3a9ef04749e9b93828da8e&w=1200&q=100"}],["$","meta","13",{"property":"og:image:width","content":"1200"}],["$","meta","14",{"property":"og:image:height","content":"630"}],["$","meta","15",{"property":"og:type","content":"website"}],["$","meta","16",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","17",{"name":"twitter:title","content":"REST API overview - LaunchDarkly"}],["$","meta","18",{"name":"twitter:image","content":"https://launchdarkly.mintlify.app/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3D%2B%26title%3DREST%2BAPI%2Boverview%26theme%3Dfd3a9ef04749e9b93828da8e&w=1200&q=100"}],["$","meta","19",{"name":"twitter:image:width","content":"1200"}],["$","meta","20",{"name":"twitter:image:height","content":"630"}],["$","link","21",{"rel":"icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon/android-chrome-192x192.png","type":"image/png","sizes":"192x192","media":"(prefers-color-scheme: light)"}],["$","link","22",{"rel":"apple-touch-icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon/apple-touch-icon.png","type":"image/png","sizes":"180x180","media":"$undefined"}],["$","link","23",{"rel":"icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon/favicon-16x16.png","type":"image/png","sizes":"16x16","media":"(prefers-color-scheme: light)"}],["$","link","24",{"rel":"icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon/favicon-32x32.png","type":"image/png","sizes":"32x32","media":"(prefers-color-scheme: light)"}],["$","link","25",{"rel":"shortcut icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon/favicon.ico","type":"image/x-icon","sizes":"$undefined","media":"(prefers-color-scheme: light)"}],["$","link","26",{"rel":"icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon-dark/android-chrome-192x192.png","type":"image/png","sizes":"192x192","media":"(prefers-color-scheme: dark)"}],["$","link","27",{"rel":"icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon-dark/favicon-16x16.png","type":"image/png","sizes":"16x16","media":"(prefers-color-scheme: dark)"}],["$","link","28",{"rel":"icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon-dark/favicon-32x32.png","type":"image/png","sizes":"32x32","media":"(prefers-color-scheme: dark)"}],["$","link","29",{"rel":"shortcut icon","href":"/docs/_mintlify/favicons/launchdarkly/1ZzqxX2iveyFEKVQ/_generated/favicon-dark/favicon.ico","type":"image/x-icon","sizes":"$undefined","media":"(prefers-color-scheme: dark)"}],["$","$L24","30",{}]],"error":null,"digest":"$undefined"}
23:"$1e:metadata"
25:I[707934,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"WebMcpRegistration"]
26:I[590280,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"LivePreviewProvider"]
27:I[973254,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"LivePreviewFavicon"]
28:I[197336,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
29:I[91557,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"AuthProvider"]
2a:I[91557,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"DeploymentMetadataProvider"]
2b:I[91557,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"DocsConfigProvider"]
19:[null,["$","$L25",null,{"subdomain":"launchdarkly","siteName":"LaunchDarkly"}],["$","$L26",null,{"isLivePreviewRoute":false,"children":[["$","$L27",null,{}],["$","$L12",null,{"appearance":"$undefined","codeblockTheme":"system","children":[["$","blockquote",null,{"className":"sr-only","data-agent-docs-index":true,"aria-hidden":"true","children":[["$","h2",null,{"children":"Documentation Index"}],["$","p",null,{"children":["Fetch the complete documentation index at:"," ",["$","a",null,{"href":"/docs/llms.txt","tabIndex":-1,"children":"/docs/llms.txt"}]]}],["$","p",null,{"children":"Use this file to discover all available pages before exploring further."}]]}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root{--banner-height:0px!important}"}}],null,null,["$","script",null,{"id":"_mintlify-banner-script","dangerouslySetInnerHTML":{"__html":"(function i(a,b,c,d,e){try{let f,g,h=[];try{h=window.location.pathname.split(\"/\").filter(a=>\"\"!==a&&\"global\"!==a).slice(0,2)}catch{h=[]}let i=h.find(a=>c.includes(a)),j=[];for(let c of(i?j.push(i):j.push(b),j.push(\"global\"),j)){if(!c)continue;let b=a[c];if(b?.content){f=b.content,g=c;break}}if(!f)return void document.documentElement.setAttribute(d,\"hidden\");let k=!0,l=0;for(;l<localStorage.length;){let a=localStorage.key(l);if(l++,!a?.endsWith(e))continue;let b=localStorage.getItem(a);if(b&&b===f){k=!1;break}g&&(a.startsWith(`lang:${g}_`)||!a.startsWith(\"lang:\"))&&(localStorage.removeItem(a),l--)}document.documentElement.setAttribute(d,k?\"visible\":\"hidden\")}catch(a){console.error(a),document.documentElement.setAttribute(d,\"hidden\")}})(\n  {},\n  \"en\",\n  [],\n  \"data-banner-state\",\n  \"bannerDismissed\",\n)"},"suppressHydrationWarning":true}],["$","$L28",null,{"appId":"$undefined","autoBoot":true,"children":["$","$L29",null,{"value":{"auth":"$undefined","userAuth":"$undefined"},"children":["$","$L2a",null,{"value":{"subdomain":"launchdarkly","hasAudioNarration":false,"actualSubdomain":"launchdarkly","customDomains":["launchdarkly.com"],"gitSource":{"type":"github","owner":"launchdarkly","repo":"ld-docs-private","deployBranch":"main","contentDirectory":"mintlify","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"e81664c5-8eac-419c-b77f-b16280e9eafd","liveDeploymentHistoryId":"6ac42c9d7c29185f9368e9b5","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac42c9d7c29185f9368e9b5"},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ac42c9d7c29185f9368e9b5","clientVersion":"0.0.3777","preview":"$undefined","searchFilterCounts":[{"language":"default","tag":"API docs","count":401},{"language":"default","tag":"Docs","count":325},{"language":"default","tag":"SDKs","count":180},{"language":"default","tag":"Integrations","count":123},{"language":"default","tag":"Feature flags","count":101},{"language":"default","tag":"AgentControl","count":100},{"language":"default","tag":"Guides","count":90},{"language":"default","tag":"Tutorials","count":67},{"language":"default","tag":"Your account","count":63},{"language":"default","tag":"SDK features","count":55}],"searchSettings":"$undefined","disableKonamiCode":"$undefined"},"children":["$","$L2b",null,{"value":{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"LaunchDarkly","colors":{"primary":"#90C610","light":"#CFFC55","dark":"#90C610"},"logo":{"light":"https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/logo/logo-light.svg?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=f4dbea60f22010ab8a14e328c1759864","dark":"https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/logo/logo-dark.svg?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=fda98a01ec19b754a3278af5f3420e2c"},"favicon":"https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/logo/favicon.svg?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=62d28ab95997685e297ea01b92322611","background":{"decoration":"grid","color":{"dark":"#191919"}},"navbar":{"links":[{"href":"https://app.launchdarkly.com/login","label":"Sign in"}],"primary":{"type":"button","label":"Try it free","href":"https://app.launchdarkly.com/signup"}},"fonts":{"heading":{"family":"Audimat","source":"assets/fonts/Audimat3000-Regular.woff2","format":"woff2"},"body":{"family":"Söhne","source":"assets/fonts/Sohne-Buch.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true,"codeblocks":"system"},"navigation":{"pages":[]}},"docsNavWithMetadata":"$undefined","anonymizedNav":"$undefined","hasFullNav":false},"children":"$L2c"}]}]}]}]]}]]}]]
2d:I[604804,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"LoginButtonProvider"]
2e:I[141180,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"SidebarLoginButtonProvider"]
2f:I[343590,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"NavigationContextController"]
30:I[378486,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"PageListProvider"]
31:I[742977,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"PrefetchProvider"]
32:I[237978,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"PageModeOverrideProvider"]
33:I[378896,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ConfiguredVariationProvider"]
34:I[557611,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"Fonts"]
35:I[330080,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"BannerProvider"]
36:I[864506,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"NavbarTransitionScript"]
37:T9e0,(function () {
  var measure = function(){let a=document.querySelectorAll("[id='navbar'], [data-top-chrome]"),b=0;a.forEach(a=>{let c=a.getBoundingClientRect();c.height>0&&(b=Math.max(b,c.bottom))});let c=0,d=document.getElementById("content-container");if(d){let{overflowY:a}=getComputedStyle(d);("auto"===a||"scroll"===a)&&(c=Math.max(0,d.getBoundingClientRect().top))}let e=`${Math.round(Math.max(0,b-c))+40}px`,f=document.documentElement.style;f.getPropertyValue("--scroll-mt")!==e&&f.setProperty("--scroll-mt",e)};
  (function(a){let b=[],c=0,d="undefined"==typeof ResizeObserver?null:new ResizeObserver(f);function e(){let c=Array.from(document.querySelectorAll("[id='navbar'], [data-top-chrome]"));(c.length!==b.length||c.some((a,c)=>a!==b[c]))&&d&&(d.disconnect(),c.forEach(a=>d.observe(a))),b=c,a()}function f(){c||(c=requestAnimationFrame(()=>{c=0,e()}))}let g="[id='navbar'], [data-top-chrome]";function h(a){let b=a.target;if(b instanceof Element&&b.closest(g))return!0;for(let b of a.addedNodes)if(b instanceof Element&&(b.matches(g)||b.querySelector(g)))return!0;for(let b of a.removedNodes)if(b instanceof Element&&(b.matches(g)||b.querySelector(g)))return!0;return!1}new MutationObserver(a=>{a.some(h)&&f()}).observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener("resize",f),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",e),e()})(measure);
  (function(a){let b=window.location.hash.slice(1);if(!b)return;function c(){return"smooth"===getComputedStyle(document.documentElement).scrollBehavior}function d(c){let d=document.getElementById(b);return!!d&&(a(),d.scrollIntoView(c?{behavior:c}:void 0),!0)}if("complete"===document.readyState)return void d();let e=new MutationObserver(()=>{!c()&&d("instant")&&f()});function f(){e.disconnect(),window.removeEventListener("load",g)}function g(){let a=c();f(),a&&requestAnimationFrame(()=>{d(),function(){let a=["wheel","touchstart","keydown","pointerdown"],c=0,e=window.scrollY,f=setInterval(()=>{c+=1;let a=document.getElementById(b);if(!a||c>=6)return g();let f=Math.abs(window.scrollY-e)>1;if(e=window.scrollY,f)return;let h=parseFloat(getComputedStyle(a).scrollMarginTop)||0;Math.abs(a.getBoundingClientRect().top-h)>4&&d()},350);function g(){clearInterval(f),a.forEach(a=>window.removeEventListener(a,g))}a.forEach(a=>window.addEventListener(a,g,{passive:!0}))}()})}window.addEventListener("load",g),e.observe(document.documentElement,{childList:!0,subtree:!0}),!c()&&d("instant")&&f()})(measure);
})();2c:["$","$L2d",null,{"children":["$","$L2e",null,{"children":["$","$L2f",null,{"children":["$","$L30",null,{"pageListDataMap":{},"children":["$","$L31",null,{"disabled":"$undefined","children":["$","$L32",null,{"children":["$","$L33",null,{"children":[["$","$L14",null,{"fonts":"$19:2:props:children:1:props:children:5:props:children:props:children:props:children:props:value:docsConfig:fonts","theme":"aspen","subdomain":"launchdarkly"}],[["$","$L13",null,{"docsConfig":"$19:2:props:children:1:props:children:5:props:children:props:children:props:children:props:value:docsConfig"}],[["$","link",null,{"rel":"preload","href":"https://d4tuoctqmanu0.cloudfront.net/katex.min.css","as":"style"}],["$","script",null,{"type":"text/javascript","children":"\n          (function() {\n            function loadKatex() {\n              const link = document.querySelector('link[href=\"https://d4tuoctqmanu0.cloudfront.net/katex.min.css\"]');\n              if (link) link.rel = 'stylesheet';\n            }\n            if (document.readyState === 'loading') {\n              document.addEventListener('DOMContentLoaded', loadKatex);\n            } else {\n              loadKatex();\n            }\n          })();\n        "}]],["$","$L15",null,{"theme":"aspen"}],["$","$L34",null,{"fonts":"$19:2:props:children:1:props:children:5:props:children:props:children:props:children:props:value:docsConfig:fonts","children":["$","$L35",null,{"bannersByLocale":{},"subdomain":"launchdarkly","children":[["$","$L36",null,{"theme":"aspen"}],["$","script",null,{"id":"_mintlify-scroll-margin-script","dangerouslySetInnerHTML":{"__html":"$37"},"suppressHydrationWarning":true}],"$L38"]}]}]]]}]}]}]}]}]}]}]
39:I[540345,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ConsentProvider"]
3a:I[529058,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"LocalStorageAndAnalyticsProviders"]
3b:I[958547,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
3c:I[604780,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"CaptchaProvider"]
3d:I[859465,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"AssistantUiProvider"]
3e:I[832740,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"AssistantTransportProviderSelector"]
3f:I[601054,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"SearchProvider"]
43:I[597003,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ScopedNavProvider"]
38:["$","$L39",null,{"privacy":"$undefined","children":["$","$L3a",null,{"subdomain":"launchdarkly","isAtlas":false,"children":["$","$L3b",null,{"toggles":[{"name":"dashboard-editor-theseus","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"teamspace","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"children":["$","$L3c",null,{"enabled":true,"children":["$","$L3d","launchdarkly",{"children":["$","$L3e",null,{"children":["$","$L3f",null,{"subdomain":"launchdarkly","hasChatPermissions":true,"isLoggedInCli":false,"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":false}},"starterQuestions":"$undefined","children":["$L40","$L41",false,"$L42"]}]}]}]}]}]}]}]
44:T8db,Invite one or more new members to join an account. Each member is sent an invitation. Members with Admin or Owner roles may create new members, as well as anyone with a `createMember` permission for "member/\*". If a member cannot be invited, the entire request is rejected and no members are invited from that request.

Each member _must_ have an `email` field and either a `role` or a `customRoles` field. If any of the fields are not populated correctly, the request is rejected with the reason specified in the "message" field of the response.

Valid base role names that you can provide for the `role` field include `reader`, `writer`, `admin`, `owner/admin`, and `no_access`. To learn more about base roles, read [Organization roles](/home/account/roles/organization-roles).

If you are using the `customRoles` field instead, you can provide the key for any role that you have created, or for any preset [organization role](/home/account/roles/organization-roles) or [project role](/home/account/roles/project-roles) provided by LaunchDarkly. Some preset roles additionally require that you specify `roleAttributes`. To learn more, read [Using role scope](/home/account/roles/role-scope).

Requests to create account members will not work if SCIM is enabled for the account.

You can assign new members to teams with the `teamKeys` field. Teams are available only on Enterprise plans. If your plan does not include teams, a request that includes a non-empty `teamKeys` field returns an HTTP response code of 403 (Forbidden). Omit `teamKeys` to invite members without assigning them to a team.

_No more than 50 members may be created per request._

A request may also fail because of conflicts with existing members. These conflicts are reported using the additional `code` and `invalid_emails` response fields with the following possible values for `code`:

- **email_already_exists_in_account**: A member with this email address already exists in this account.
- **email_taken_in_different_account**: A member with this email address exists in another account.
- **duplicate_email**s: This request contains two or more members with the same email address.

A request that fails for one of the above reasons returns an HTTP response code of 400 (Bad Request).
45:Tde4,Return a list of account members.

By default, this returns the first 20 members. Page through this list with the `limit` parameter and by following the `first`, `prev`, `next`, and `last` links in the returned `_links` field. These links are not present if the pages they refer to don't exist. For example, the `first` and `prev` links will be missing from the response on the first page.

### Filtering members

LaunchDarkly supports the following fields for filters:

- `query` is a string that matches against the members' emails and names. It is not case sensitive.
- `role` is a `|` separated list of roles and custom roles. It filters the list to members who have any of the roles in the list. For the purposes of this filtering, `Owner` counts as `Admin`.
- `id` is a `|` separated list of member IDs. It filters the list to members who match any of the IDs in the list.
- `email` is a `|` separated list of member emails. It filters the list to members who match any of the emails in the list.
- `team` is a string that matches against the key of the teams the members belong to. It is not case sensitive.
- `noteam` is a boolean that filters the list of members who are not on a team if true and members on a team if false.
- `lastSeen` is a JSON object in one of the following formats:
  - `{"never": true}` - Members that have never been active, such as those who have not accepted their invitation to LaunchDarkly, or have not logged in after being provisioned via SCIM.
  - `{"noData": true}` - Members that have not been active since LaunchDarkly began recording last seen timestamps.
  - `{"before": 1608672063611}` - Members that have not been active since the provided value, which should be a timestamp in Unix epoch milliseconds.
- `accessCheck` is a string that represents a specific action on a specific resource and is in the format `<ActionSpecifier>:<ResourceSpecifier>`. It filters the list to members who have the ability to perform that action on that resource. Note: `accessCheck` is only supported in API version `20220603` and earlier. To learn more, read [Versioning](/api/overview#versioning).
  - For example, the filter `accessCheck:createApprovalRequest:proj/default:env/test:flag/alternate-page` matches members with the ability to create an approval request for the `alternate-page` flag in the `test` environment of the `default` project.
  - Wildcard and tag filters are not supported when filtering for access.

For example, the filter `query:abc,role:admin|customrole` matches members with the string `abc` in their email or name, ignoring case, who also are either an `Owner` or `Admin` or have the custom role `customrole`.

### Sorting members

LaunchDarkly supports two fields for sorting: `displayName` and `lastSeen`:

- `displayName` sorts by first + last name, using the member's email if no name is set.
- `lastSeen` sorts by the `_lastSeen` property. LaunchDarkly considers members that have never been seen or have no data the oldest.

### Expanding the members response
LaunchDarkly supports two fields for expanding the "List members" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:

* `customRoles` includes a list of the roles that you have assigned to the member.
* `roleAttributes` includes a list of the role attributes that you have assigned to the member.

For example, `expand=roleAttributes` includes `roleAttributes` field in the response.
46:T14ef,> ### Full use of this API resource is an Enterprise feature
>
> The ability to perform a partial update to multiple members is available to customers on an Enterprise plan. If you are on another plan, you can update members individually. To learn more, [read about our pricing](https://launchdarkly.com/pricing/). To upgrade your plan, [contact Sales](https://launchdarkly.com/contact-sales/).

Perform a partial update to multiple members. Updating members uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating members.

<details>
<summary>Click to expand instructions for <strong>updating members</strong></summary>

#### replaceMembersRoles

Replaces the roles of the specified members. This also removes all custom roles assigned to the specified members.

##### Parameters

- `value`: The new role. Must be a valid [base role](/home/getting-started/vocabulary#base-role). To learn more, read [Roles](/home/account/roles).
- `memberIDs`: List of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "replaceMembersRoles",
    "value": "reader",
    "memberIDs": [
      "1234a56b7c89d012345e678f",
      "507f1f77bcf86cd799439011"
    ]
  }]
}
```

#### replaceAllMembersRoles

Replaces the roles of all members. This also removes all custom roles assigned to the specified members.

Members that match any of the filters are **excluded** from the update.

##### Parameters

- `value`: The new role. Must be a valid [base role](/home/getting-started/vocabulary#base-role). To learn more, read [Roles](/home/account/roles).
- `filterLastSeen`: (Optional) A JSON object with one of the following formats:
  - `{"never": true}` - Members that have never been active, such as those who have not accepted their invitation to LaunchDarkly, or have not logged in after being provisioned via SCIM.
  - `{"noData": true}` - Members that have not been active since LaunchDarkly began recording last seen timestamps.
  - `{"before": 1608672063611}` - Members that have not been active since the provided value, which should be a timestamp in Unix epoch milliseconds.
- `filterQuery`: (Optional) A string that matches against the members' emails and names. It is not case sensitive.
- `filterRoles`: (Optional) A `|` separated list of roles and custom roles. For the purposes of this filtering, `Owner` counts as `Admin`.
- `filterTeamKey`: (Optional) A string that matches against the key of the team the members belong to. It is not case sensitive.
- `ignoredMemberIDs`: (Optional) A list of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "replaceAllMembersRoles",
    "value": "reader",
    "filterLastSeen": { "never": true }
  }]
}
```

#### replaceMembersCustomRoles

Replaces the custom roles of the specified members.

##### Parameters

- `values`: List of new custom roles. Must be a valid custom role key or ID.
- `memberIDs`: List of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "replaceMembersCustomRoles",
    "values": [ "example-custom-role" ],
    "memberIDs": [
      "1234a56b7c89d012345e678f",
      "507f1f77bcf86cd799439011"
    ]
  }]
}
```

#### replaceAllMembersCustomRoles

Replaces the custom roles of all members. Members that match any of the filters are **excluded** from the update.

##### Parameters

- `values`: List of new roles. Must be a valid custom role key or ID.
- `filterLastSeen`: (Optional) A JSON object with one of the following formats:
  - `{"never": true}` - Members that have never been active, such as those who have not accepted their invitation to LaunchDarkly, or have not logged in after being provisioned via SCIM.
  - `{"noData": true}` - Members that have not been active since LaunchDarkly began recording last seen timestamps.
  - `{"before": 1608672063611}` - Members that have not been active since the provided value, which should be a timestamp in Unix epoch milliseconds.
- `filterQuery`: (Optional) A string that matches against the members' emails and names. It is not case sensitive.
- `filterRoles`: (Optional) A `|` separated list of roles and custom roles. For the purposes of this filtering, `Owner` counts as `Admin`.
- `filterTeamKey`: (Optional) A string that matches against the key of the team the members belong to. It is not case sensitive.
- `ignoredMemberIDs`: (Optional) A list of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "replaceAllMembersCustomRoles",
    "values": [ "example-custom-role" ],
    "filterLastSeen": { "never": true }
  }]
}
```

#### replaceMembersRoleAttributes

Replaces the role attributes of the specified members.

##### Parameters

- `value`: Map of role attribute keys to lists of values.
- `memberIDs`: List of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "replaceMembersRoleAttributes",
    "value": {
      "myRoleProjectKey": ["mobile", "web"],
      "myRoleEnvironmentKey": ["production"]
    },
    "memberIDs": [
      "1234a56b7c89d012345e678f",
      "507f1f77bcf86cd799439011"
    ]
  }]
}
```

</details>
47:T3a63,Perform a partial update to an AI Config's targeting. The request body must be a valid semantic patch.

### Using semantic patches on an AI Config

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

The body of a semantic patch request for updating an AI Config's targeting takes the following properties:

* `comment` (string): (Optional) A description of the update.
* `environmentKey` (string): The key of the LaunchDarkly environment.
* `instructions` (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a `kind` property that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object. The body of a single semantic patch can contain many different instructions.

### Instructions

Semantic patch requests support the following `kind` instructions for updating AI Configs.

<details>
<summary>Click to expand instructions for <strong>working with targeting and variations</strong> for AI Configs</summary>

#### addClauses

Adds the given clauses to the rule indicated by `ruleId`.

##### Parameters

- `ruleId`: ID of a rule in the AI Config.
- `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [{
    "kind": "addClauses",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
    "clauses": [{
      "contextKind": "user",
      "attribute": "country",
      "op": "in",
      "negate": false,
      "values": ["USA", "Canada"]
    }]
  }]
}
```

#### addRule

Adds a new targeting rule to the AI Config. The rule may contain `clauses` and serve the variation that `variationId` indicates, or serve a percentage rollout that `rolloutWeights`, `rolloutBucketBy`, and `rolloutContextKind` indicate.

If you set `beforeRuleId`, this adds the new rule before the indicated rule. Otherwise, adds the new rule to the end of the list.

##### Parameters

- `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.
- `beforeRuleId`: (Optional) ID of a rule.
- Either
- `variationId`: ID of a variation.

or

- `rolloutWeights`: (Optional) Map of `variationId` to weight, in thousandths of a percent (0-100000).
- `rolloutBucketBy`: (Optional) Context attribute available in the specified `rolloutContextKind`.
- `rolloutContextKind`: (Optional) Context kind, defaults to `user`

Here's an example that uses a `variationId`:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "addRule",
  "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00",
  "clauses": [{
    "contextKind": "organization",
    "attribute": "located_in",
    "op": "in",
    "negate": false,
    "values": ["Sweden", "Norway"]
  }]
}]
}
```

Here's an example that uses a percentage rollout:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "addRule",
  "clauses": [{
    "contextKind": "organization",
    "attribute": "located_in",
    "op": "in",
    "negate": false,
    "values": ["Sweden", "Norway"]
  }],
  "rolloutContextKind": "organization",
  "rolloutWeights": {
    "2f43f67c-3e4e-4945-a18a-26559378ca00": 15000, // serve 15% this variation
    "e5830889-1ec5-4b0c-9cc9-c48790090c43": 85000  // serve 85% this variation
  }
}]
}
```

#### addTargets

Adds context keys to the individual context targets for the context kind that `contextKind` specifies and the variation that `variationId` specifies. Returns an error if this causes the AI Config to target the same context key in multiple variations.

##### Parameters

- `values`: List of context keys.
- `contextKind`: (Optional) Context kind to target, defaults to `user`
- `variationId`: ID of a variation.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "addTargets",
  "values": ["context-key-123abc", "context-key-456def"],
  "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
}]
}
```

#### addValuesToClause

Adds `values` to the values of the clause that `ruleId` and `clauseId` indicate. Does not update the context kind, attribute, or operator.

##### Parameters

- `ruleId`: ID of a rule in the AI Config.
- `clauseId`: ID of a clause in that rule.
- `values`: Array of strings, case sensitive.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "addValuesToClause",
  "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
  "clauseId": "10a58772-3121-400f-846b-b8a04e8944ed",
  "values": ["beta_testers"]
}]
}
```

#### clearTargets

Removes all individual targets from the variation that `variationId` specifies. This includes both user and non-user targets.

##### Parameters

- `variationId`: ID of a variation.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [ { "kind": "clearTargets", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]
}
```

#### removeClauses

Removes the clauses specified by `clauseIds` from the rule indicated by `ruleId`.

##### Parameters

- `ruleId`: ID of a rule.
- `clauseIds`: Array of IDs of clauses in the rule.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "removeClauses",
  "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
  "clauseIds": ["10a58772-3121-400f-846b-b8a04e8944ed", "36a461dc-235e-4b08-97b9-73ce9365873e"]
}]
}
```

#### removeRule

Removes the targeting rule specified by `ruleId`. Does nothing if the rule does not exist.

##### Parameters

- `ruleId`: ID of a rule.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [ { "kind": "removeRule", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29" } ]
}
```

#### removeTargets

Removes context keys from the individual context targets for the context kind that `contextKind` specifies and the variation that `variationId` specifies. Does nothing if the flag does not target the context keys.

##### Parameters

- `values`: List of context keys.
- `contextKind`: (Optional) Context kind to target, defaults to `user`
- `variationId`: ID of a variation.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "removeTargets",
  "values": ["context-key-123abc", "context-key-456def"],
  "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
}]
}
```

#### removeValuesFromClause

Removes `values` from the values of the clause indicated by `ruleId` and `clauseId`. Does not update the context kind, attribute, or operator.

##### Parameters

- `ruleId`: ID of a rule.
- `clauseId`: ID of a clause in that rule.
- `values`: Array of strings, case sensitive.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "removeValuesFromClause",
  "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
  "clauseId": "10a58772-3121-400f-846b-b8a04e8944ed",
  "values": ["beta_testers"]
}]
}
```

#### reorderRules

Rearranges the rules to match the order given in `ruleIds`. Returns an error if `ruleIds` does not match the current set of rules on the AI Config.

##### Parameters

- `ruleIds`: Array of IDs of all rules.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "reorderRules",
  "ruleIds": ["a902ef4a-2faf-4eaf-88e1-ecc356708a29", "63c238d1-835d-435e-8f21-c8d5e40b2a3d"]
}]
}
```

#### replaceRules

Removes all targeting rules for the AI Config and replaces them with the list you provide.

##### Parameters

- `rules`: A list of rules.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [
  {
    "kind": "replaceRules",
    "rules": [
      {
        "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00",
        "description": "My new rule",
        "clauses": [
          {
            "contextKind": "user",
            "attribute": "segmentMatch",
            "op": "segmentMatch",
            "values": ["test"]
          }
        ]
      }
    ]
  }
]
}
```

#### replaceTargets

Removes all existing targeting and replaces it with the list of targets you provide.

##### Parameters

- `targets`: A list of context targeting. Each item in the list includes an optional `contextKind` that defaults to `user`, a required `variationId`, and a required list of `values`.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [
  {
    "kind": "replaceTargets",
    "targets": [
      {
        "contextKind": "user",
        "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00",
        "values": ["user-key-123abc"]
      },
      {
        "contextKind": "device",
        "variationId": "e5830889-1ec5-4b0c-9cc9-c48790090c43",
        "values": ["device-key-456def"]
      }
    ]
  }
]
}
```

#### updateClause

Replaces the clause indicated by `ruleId` and `clauseId` with `clause`.

##### Parameters

- `ruleId`: ID of a rule.
- `clauseId`: ID of a clause in that rule.
- `clause`: New `clause` object, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "updateClause",
  "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
  "clauseId": "10c7462a-2062-45ba-a8bb-dfb3de0f8af5",
  "clause": {
    "contextKind": "user",
    "attribute": "country",
    "op": "in",
    "negate": false,
    "values": ["Mexico", "Canada"]
  }
}]
}
```

#### updateDefaultVariation

Updates the default on or off variation of the AI Config.

##### Parameters

- `onVariationValue`: (Optional) The value of the variation of the new on variation.
- `offVariationValue`: (Optional) The value of the variation of the new off variation

Here's an example:

```json
{
"instructions": [ { "kind": "updateDefaultVariation", "OnVariationValue": true, "OffVariationValue": false } ]
}
```

#### updateFallthroughVariationOrRollout

Updates the default or "fallthrough" rule for the AI Config, which the AI Config serves when a context matches none of the targeting rules. The rule can serve either the variation that `variationId` indicates, or a percentage rollout that `rolloutWeights` and `rolloutBucketBy` indicate.

##### Parameters

- `variationId`: ID of a variation.

or

- `rolloutWeights`: Map of `variationId` to weight, in thousandths of a percent (0-100000).
- `rolloutBucketBy`: (Optional) Context attribute available in the specified `rolloutContextKind`.
- `rolloutContextKind`: (Optional) Context kind, defaults to `user`

Here's an example that uses a `variationId`:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "updateFallthroughVariationOrRollout",
  "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
}]
}
```

Here's an example that uses a percentage rollout:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "updateFallthroughVariationOrRollout",
  "rolloutContextKind": "user",
  "rolloutWeights": {
    "2f43f67c-3e4e-4945-a18a-26559378ca00": 15000, // serve 15% this variation
    "e5830889-1ec5-4b0c-9cc9-c48790090c43": 85000  // serve 85% this variation
  }
}]
}
```

#### updateOffVariation

Updates the default off variation to `variationId`. The AI Config serves the default off variation when the AI Config's targeting is **Off**.

##### Parameters

- `variationId`: ID of a variation.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [ { "kind": "updateOffVariation", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]
}
```

#### updateRuleDescription

Updates the description of the targeting rule.

##### Parameters

- `description`: The new human-readable description for this rule.
- `ruleId`: The ID of the rule. You can retrieve this by making a GET request for the AI Config.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "updateRuleDescription",
  "description": "New rule description",
  "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29"
}]
}
```

#### updateRuleTrackEvents

Updates whether or not LaunchDarkly tracks events for the AI Config associated with this rule.

##### Parameters

- `ruleId`: The ID of the rule. You can retrieve this by making a GET request for the AI Config.
- `trackEvents`: Whether or not events are tracked.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "updateRuleTrackEvents",
  "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
  "trackEvents": true
}]
}
```

#### updateRuleVariationOrRollout

Updates what `ruleId` serves when its clauses evaluate to true. The rule can serve either the variation that `variationId` indicates, or a percent rollout that `rolloutWeights` and `rolloutBucketBy` indicate.

##### Parameters

- `ruleId`: ID of a rule.
- `variationId`: ID of a variation.

or

- `rolloutWeights`: Map of `variationId` to weight, in thousandths of a percent (0-100000).
- `rolloutBucketBy`: (Optional) Context attribute available in the specified `rolloutContextKind`.
- `rolloutContextKind`: (Optional) Context kind, defaults to `user`

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [{
  "kind": "updateRuleVariationOrRollout",
  "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
  "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
}]
}
```

#### updateTrackEvents

Updates whether or not LaunchDarkly tracks events for the AI Config, for all rules.

##### Parameters

- `trackEvents`: Whether or not events are tracked.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [ { "kind": "updateTrackEvents", "trackEvents": true } ]
}
```

#### updateTrackEventsFallthrough

Updates whether or not LaunchDarkly tracks events for the AI Config, for the default rule.

##### Parameters

- `trackEvents`: Whether or not events are tracked.

Here's an example:

```json
{
"environmentKey": "environment-key-123abc",
"instructions": [ { "kind": "updateTrackEventsFallthrough", "trackEvents": true } ]
}
```
</details>
48:T826,Get all approval requests.

### Filtering approvals

LaunchDarkly supports the `filter` query param for filtering, with the following fields:

- `notifyMemberIds` filters for only approvals that are assigned to a member in the specified list. For example: `filter=notifyMemberIds anyOf ["memberId1", "memberId2"]`.
- `requestorId` filters for only approvals that correspond to the ID of the member who requested the approval. For example: `filter=requestorId equals 457034721476302714390214`.
- `resourceId` filters for only approvals that correspond to the the specified resource identifier. For example: `filter=resourceId equals proj/my-project:env/my-environment:flag/my-flag`.
- `resourceKind` filters for only approvals that correspond to the specified resource kind. For example: `filter=resourceKind equals flag`. Currently, `flag`, `segment`, and `aiConfig` resource kinds are supported.
- `reviewStatus` filters for only approvals which correspond to the review status in the specified list. The possible values are `approved`, `declined`, and `pending`. For example: `filter=reviewStatus anyOf ["pending", "approved"]`.
- `status` filters for only approvals which correspond to the status in the specified list. The possible values are `pending`, `scheduled`, `failed`, and `completed`. For example: `filter=status anyOf ["pending", "scheduled"]`.

You can also apply multiple filters at once. For example, setting `filter=projectKey equals my-project, reviewStatus anyOf ["pending","approved"]` matches approval requests which correspond to the `my-project` project key, and a review status of either `pending` or `approved`.

### Expanding approval response

LaunchDarkly supports the `expand` query param to include additional fields in the response, with the following fields:

- `flag` includes the flag the approval request belongs to
- `project` includes the project the approval request belongs to
- `environments` includes the environments the approval request relates to

For example, `expand=project,flag` includes the `project` and `flag` fields in the response.
49:T541,Perform a partial update to an approval request. Updating an approval request uses the semantic patch format. This endpoint works with any approval requests.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating an approval request.

#### addReviewers

Adds the specified members and teams to the existing list of reviewers. You must include at least one of `notifyMemberIds` and `notifyTeamKeys`.

##### Parameters

- `notifyMemberIds`: (Optional) List of member IDs.
- `notifyTeamKeys`: (Optional) List of team keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addReviewers",
    "notifyMemberIds": [ "user-key-123abc", "user-key-456def" ],
    "notifyTeamKeys": [ "team-key-789abc"]
  }]
}
```

#### updateDescription

Updates the description (title) of the approval request.

##### Parameters

- `value`: (Required) The new description for the approval request. Must be non-empty and no more than 5000 characters.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateDescription",
    "value": "Updated approval request title"
  }]
}
```
4a:T426,Perform a partial update to an approval request. Updating an approval request uses the semantic patch format. This endpoint requires a feature flag key, and can only be used for updating approval requests for flags.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating an approval request.

#### addReviewers

Adds the specified members and teams to the existing list of reviewers. You must include at least one of `notifyMemberIds` and `notifyTeamKeys`.

##### Parameters

- `notifyMemberIds`: (Optional) List of member IDs.
- `notifyTeamKeys`: (Optional) List of team keys.

#### updateDescription

Updates the description (title) of the approval request.

##### Parameters

- `value`: (Required) The new description for the approval request. Must be non-empty and no more than 5000 characters.
4b:T4db,Evaluate flags for a context instance, for example, to determine the expected flag variation. **Do not use this API instead of an SDK.** The LaunchDarkly SDKs are specialized for the tasks of evaluating feature flags in your application at scale and generating analytics events based on those evaluations. This API is not designed for that use case. Any evaluations you perform with this API will not be reflected in features such as flag statuses and flag insights. Context instances evaluated by this API will not appear in the Contexts list. To learn more, read [Comparing LaunchDarkly's SDKs and REST API](/guides/api/comparing-sdk-rest-api).

### Filtering

LaunchDarkly supports the `filter` query param for filtering, with the following fields:

- `query` filters for a string that matches against the flags' keys and names. It is not case sensitive. For example: `filter=query equals dark-mode`.
- `tags` filters the list to flags that have all of the tags in the list. For example: `filter=tags contains ["beta","q1"]`.

You can also apply multiple filters at once. For example, setting `filter=query equals dark-mode, tags contains ["beta","q1"]` matches flags which match the key or name `dark-mode` and are tagged `beta` and `q1`.
4c:T999,
Create a new Data Export destination.

In the `config` request body parameter, the fields required depend on the type of Data Export destination.

<details>
<summary>Click to expand <code>config</code> parameter details</summary>

#### Azure Event Hubs

To create a Data Export destination with a `kind` of `azure-event-hubs`, the `config` object requires the following fields:

* `namespace`: The Event Hub Namespace name
* `name`: The Event Hub name
* `policyName`: The shared access signature policy name. You can find your policy name in the settings of your Azure Event Hubs Namespace.
* `policyKey`: The shared access signature key. You can find your policy key in the settings of your Azure Event Hubs Namespace.

#### Google Cloud Pub/Sub

To create a Data Export destination with a `kind` of `google-pubsub`, the `config` object requires the following fields:

* `project`: The Google PubSub project ID for the project to publish to
* `topic`: The Google PubSub topic ID for the topic to publish to

#### Amazon Kinesis

To create a Data Export destination with a `kind` of `kinesis`, the `config` object requires the following fields:

* `region`: The Kinesis stream's AWS region key
* `roleArn`: The Amazon Resource Name (ARN) of the AWS role that will be writing to Kinesis
* `streamName`: The name of the Kinesis stream that LaunchDarkly is sending events to. This is not the ARN of the stream.

#### mParticle

To create a Data Export destination with a `kind` of `mparticle`, the `config` object requires the following fields:

* `apiKey`: The mParticle API key
* `secret`: The mParticle API secret
* `userIdentity`: The type of identifier you use to identify your end users in mParticle
* `anonymousUserIdentity`: The type of identifier you use to identify your anonymous end users in mParticle

#### Segment

To create a Data Export destination with a `kind` of `segment`, the `config` object requires the following fields:

* `writeKey`: The Segment write key. This is used to authenticate LaunchDarkly's calls to Segment.

#### Snowflake

To create a Data Export destination with a `kind` of `snowflake-v2`, the `config` object requires the following fields:

* `publicKey`: The `publicKey` is returned as part of the [Generate Snowflake destination key pair](/api/data-export-destinations/generate-snowflake-destination-key-pair) response. It is the `public_key` field.
* `snowflakeHostAddress`: Your Snowflake account URL.

</details>
4d:T6ab,Return a list of environments for the specified project.

By default, this returns the first 20 environments. Page through this list with the `limit` parameter and by following the `first`, `prev`, `next`, and `last` links in the `_links` field that returns. If those links do not appear, the pages they refer to don't exist. For example, the `first` and `prev` links will be missing from the response on the first page, because there is no previous page and you cannot return to the first page when you are already on the first page.

### Filtering environments

LaunchDarkly supports the following fields for filters:
- `query` is a string that matches against the environments' names and keys. It is not case sensitive.
- `tags` is a `+`-separated list of environment tags. It filters the list of environments that have all of the tags in the list.
- `critical` is a boolean filter. `critical:true` returns only environments marked as critical, and `critical:false` returns only non-critical environments.

For example, the filter `filter=query:abc,tags:tag-1+tag-2` matches environments with the string `abc` in their name or key and also are tagged with `tag-1` and `tag-2`. The filter is not case-sensitive.

The documented values for `filter` query parameters are prior to URL encoding. For example, the `+` in `filter=tags:tag-1+tag-2` must be encoded to `%2B`.

### Sorting environments

LaunchDarkly supports the following fields for sorting:

- `createdOn` sorts by the creation date of the environment.
- `critical` sorts by whether the environments are marked as critical.
- `name` sorts by environment name.

For example, `sort=name` sorts the response by environment name in ascending order.
4e:T48f,Get details about an experiment.

### Expanding the experiment response

LaunchDarkly supports five fields for expanding the "Get experiment" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:

- `previousIterations` includes all iterations prior to the current iteration. By default only the current iteration is included in the response.
- `draftIteration` includes the iteration which has not been started yet, if any.
- `secondaryMetrics` includes secondary metrics. By default only the primary metric is included in the response.
- `treatments` includes all treatment and parameter details. By default treatment data is not included in the response.
- `analysisConfig` includes the analysis configuration for the experiment, such as the Bayesian threshold or significance threshold.

For example, `expand=draftIteration,treatments` includes the `draftIteration` and `treatments` fields in the response. If fields that you request with the `expand` query parameter are empty, they are not included in the response.
4f:T715,Get details about all experiments in an environment.

### Filtering experiments

LaunchDarkly supports the `filter` query param for filtering, with the following fields:

- `flagKey` filters for only experiments that use the flag with the given key.
- `metricKey` filters for only experiments that use the metric with the given key.
- `status` filters for only experiments with an iteration with the given status. An iteration can have the status `not_started`, `running` or `stopped`.

For example, `filter=flagKey:my-flag,status:running,metricKey:page-load-ms` filters for experiments for the given flag key and the given metric key which have a currently running iteration.

### Expanding the experiments response

LaunchDarkly supports five fields for expanding the "Get experiments" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:

- `previousIterations` includes all iterations prior to the current iteration. By default only the current iteration is included in the response.
- `draftIteration` includes the iteration which has not been started yet, if any.
- `secondaryMetrics` includes secondary metrics. By default only the primary metric is included in the response.
- `treatments` includes all treatment and parameter details. By default treatment data is not included in the response.
- `analysisConfig` includes the analysis configuration for the experiment, such as the Bayesian threshold or significance threshold.

For example, `expand=draftIteration,treatments` includes the `draftIteration` and `treatments` fields in the response. If fields that you request with the `expand` query parameter are empty, they are not included in the response.
50:T137f,Update an experiment. Updating an experiment uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating experiments.

#### updateName

> **Deprecated**: `updateName` will be removed in a future version. Use `updateExperimentFields` instead.

Updates the experiment name.

##### Parameters

- `value`: The new name.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateName",
    "value": "Example updated experiment name"
  }]
}
```

#### updateDescription

> **Deprecated**: `updateDescription` will be removed in a future version. Use `updateExperimentFields` instead.

Updates the experiment description.

##### Parameters

- `value`: The new description.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateDescription",
    "value": "Example updated description"
  }]
}
```

#### updateExperimentFields

Updates one or more fields on an experiment or its current iteration. Each field update specifies an operation (`add`, `update`, or `remove`) and an optional value.

Which fields are mutable depends on the current iteration status. To discover which fields and operations are allowed, expand `mutableFieldsByStatus` on the [Get experiment](/api/experiments/get-experiment) response.

##### Parameters

- `value`: An object mapping field names to field updates. Each field update has the following properties:
  - `operation`: The operation to perform. One of `add`, `update`, or `remove`.
  - `value`: The new value for the field. Required for `add` and `update` operations.

To find which fields are supported and which operations are allowed for each iteration status, expand `mutableFieldsByStatus` on the [Get experiment](/api/experiments/get-experiment) response.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateExperimentFields",
    "value": {
      "name": {
        "operation": "update",
        "value": "Updated experiment name"
      },
      "tags": {
        "operation": "add",
        "value": ["tag1", "tag2"]
      }
    }
  }]
}
```

#### saveAndStartNewIteration

Stops the current running iteration, creates a new iteration from it, optionally applies field updates, and starts the new iteration. This is a convenience instruction that combines stopping, updating, and starting in a single operation.

##### Parameters

- `changeJustification`: (Optional) The reason for stopping and starting a new iteration.
- `value`: (Optional) An object mapping field names to field updates, using the same format as `updateExperimentFields`. These updates are applied to the new iteration before it is started.

Here's an example:

```json
{
  "instructions": [{
    "kind": "saveAndStartNewIteration",
    "changeJustification": "Adjusting hypothesis based on early results",
    "value": {
      "hypothesis": {
        "operation": "update",
        "value": "Updated hypothesis text"
      }
    }
  }]
}
```

#### startIteration

Starts a new iteration for this experiment. You must [create a new iteration](/api/experiments/create-iteration) before calling this instruction.

An iteration may not be started until it meets the following criteria:

* Its associated flag is toggled on and is not archived
* Its `randomizationUnit` is set
* At least one of its `treatments` has a non-zero `allocationPercent`

##### Parameters

- `changeJustification`: The reason for starting a new iteration. Required when you call `startIteration` on an already running experiment, otherwise optional.

Here's an example:

```json
{
  "instructions": [{
    "kind": "startIteration",
    "changeJustification": "It's time to start a new iteration"
  }]
}
```

#### stopIteration

Stops the current iteration for this experiment.

##### Parameters

- `winningTreatmentId`: The ID of the winning treatment. Treatment IDs are returned as part of the [Get experiment](/api/experiments/get-experiment) response. They are the `_id` of each element in the `treatments` array.
- `winningReason`: The reason for the winner

Here's an example:

```json
{
  "instructions": [{
    "kind": "stopIteration",
    "winningTreatmentId": "3a548ec2-72ac-4e59-8518-5c24f5609ccf",
    "winningReason": "Example reason to stop the iteration"
  }]
}
```

#### archiveExperiment

Archives this experiment. Archived experiments are hidden by default in the LaunchDarkly user interface. You cannot start new iterations for archived experiments.

Here's an example:

```json
{
  "instructions": [{ "kind": "archiveExperiment" }]
}
```

#### restoreExperiment

Restores an archived experiment. After restoring an experiment, you can start new iterations for it again.

Here's an example:

```json
{
  "instructions": [{ "kind": "restoreExperiment" }]
}
```
51:T48a,Get a single feature flag by key. By default, this returns the configurations for all environments. You can filter environments with the `env` query parameter. For example, setting `env=production` restricts the returned configurations to just the `production` environment.

> #### Recommended use
>
> This endpoint can return a large amount of information. Specifying one or multiple environments with the `env` parameter can decrease response time and overall payload size. We recommend using this parameter to return only the environments relevant to your query.

### Expanding response

LaunchDarkly supports the `expand` query param to include additional fields in the response, with the following fields:

- `evaluation` includes evaluation information within returned environments, including which context kinds the flag has been evaluated for in the past 30 days 
- `migrationSettings` includes migration settings information within the flag and within returned environments. These settings are only included for migration flags, that is, where `purpose` is `migration`.

For example, `expand=evaluation` includes the `evaluation` field in the response.
52:T1be5,Get a list of all feature flags in the given project. You can include information specific to different environments by adding `env` query parameter. For example, setting `env=production` adds configuration details about your production environment to the response. You can also filter feature flags by tag with the `tag` query parameter.

> #### Recommended use
>
> This endpoint can return a large amount of information. We recommend using some or all of these query parameters to decrease response time and overall payload size: `limit`, `env`, `query`, and `filter=creationDate`.

### Filtering flags

You can filter on certain fields using the `filter` query parameter. For example, setting `filter=query:dark-mode,tags:beta+test` matches flags with the string `dark-mode` in their key or name, ignoring case, which also have the tags `beta` and `test`.

The `filter` query parameter supports the following arguments:

| Filter argument       | Description | Example              |
|-----------------------|-------------|----------------------|
| `applicationEvaluated`  | A string. It filters the list to flags that are evaluated in the application with the given key. | `filter=applicationEvaluated:com.launchdarkly.cafe` |
| `archived`              | (deprecated) A boolean value. It filters the list to archived flags. | Use `filter=state:archived` instead |
| `contextKindsEvaluated` | A `+`-separated list of context kind keys. It filters the list to flags which have been evaluated in the past 30 days for all of the context kinds in the list. | `filter=contextKindsEvaluated:user+application` |
| `codeReferences.max`    | An integer value. Use `0` to return flags that do not have code references. | `filter=codeReferences.max:0` |
| `codeReferences.min`    | An integer value. Use `1` to return flags that do have code references. | `filter=codeReferences.min:1` |
| `creationDate`          | An object with an optional `before` field whose value is Unix time in milliseconds. It filters the list to flags created before the date. | `filter=creationDate:{"before":1690527600000}` |
| `evaluated`             | An object that contains a key of `after` and a value in Unix time in milliseconds. It filters the list to all flags that have been evaluated since the time you specify, in the environment provided. This filter requires the `filterEnv` filter. | `filter=evaluated:{"after":1690527600000},filterEnv:production` |
| `filterEnv`             | A valid environment key. You must use this field for filters that are environment-specific. If there are multiple environment-specific filters, you only need to include this field once. | `filter=evaluated:{"after": 1590768455282},filterEnv:production` |
| `guardedRollout` | A string, one of `any`, `monitoring`, `regressed`, `rolledBack`, `completed`, `archived`. It filters the list to flags that are part of guarded rollouts. | `filter=guardedRollout:monitoring` |
| `hasExperiment`         | A boolean value. It filters the list to flags that are used in an experiment. | `filter=hasExperiment:true` |
| `maintainerId`          | A valid member ID. It filters the list to flags that are maintained by this member. | `filter=maintainerId:12ab3c45de678910abc12345` |
| `maintainerTeamKey`     | A string. It filters the list to flags that are maintained by the team with this key. | `filter=maintainerTeamKey:example-team-key` |
| `query`                 | A string. It filters the list to flags that include the specified string in their key or name. It is not case sensitive. | `filter=query:example` |
| `releasePipeline`       | A release pipeline key. It filters the list to flags that are either currently active in the release pipeline or have completed the release pipeline. | `filter=releasePipeline:default-release-pipeline` |
| `state`                 | A string, either `live`, `deprecated`, or `archived`. It filters the list to flags in this state. | `filter=state:archived` |
| `sdkAvailability`       | A string, one of `client`, `mobile`, `anyClient`, `server`. Using `client` filters the list to flags whose client-side SDK availability is set to use the client-side ID. Using `mobile` filters to flags set to use the mobile key. Using `anyClient` filters to flags set to use either the client-side ID or the mobile key. Using `server` filters to flags set to use neither, that is, to flags only available in server-side SDKs.  | `filter=sdkAvailability:client` |
| `tags`                  | A `+`-separated list of tags. It filters the list to flags that have all of the tags in the list. | `filter=tags:beta+test` |
| `type`                  | A string, either `temporary` or `permanent`. It filters the list to flags with the specified type. | `filter=type:permanent` |

The documented values for the `filter` query are prior to URL encoding. For example, the `+` in `filter=tags:beta+test` must be encoded to `%2B`.

By default, this endpoint returns all flags. You can page through the list with the `limit` parameter and by following the `first`, `prev`, `next`, and `last` links in the returned `_links` field. These links will not be present if the pages they refer to don't exist. For example, the `first` and `prev` links will be missing from the response on the first page.

### Sorting flags

You can sort flags based on the following fields:

- `creationDate` sorts by the creation date of the flag.
- `key` sorts by the key of the flag.
- `maintainerId` sorts by the flag maintainer.
- `name` sorts by flag name.
- `tags` sorts by tags.
- `targetingModifiedDate` sorts by the date that the flag's targeting rules were last modified in a given environment. It must be used with `env` parameter and it can not be combined with any other sort. If multiple `env` values are provided, it will perform sort using the first one. For example, `sort=-targetingModifiedDate&env=production&env=staging` returns results sorted by `targetingModifiedDate` for the `production` environment.
- `type` sorts by flag type

All fields are sorted in ascending order by default. To sort in descending order, prefix the field with a dash ( - ). For example, `sort=-name` sorts the response by flag name in descending order.

### Expanding response

LaunchDarkly supports the `expand` query param to include additional fields in the response, with the following fields:

- `codeReferences` includes code references for the feature flag
- `evaluation` includes evaluation information within returned environments, including which context kinds the flag has been evaluated for in the past 30 days
- `migrationSettings` includes migration settings information within the flag and within returned environments. These settings are only included for migration flags, that is, where `purpose` is `migration`.

For example, `expand=evaluation` includes the `evaluation` field in the response.

### Migration flags
For migration flags, the cohort information is included in the `rules` property of a flag's response, and default cohort information is included in the `fallthrough` property of a flag's response.
To learn more, read [Migration Flags](/home/flags/migration).
53:Tc04,Schedule a context for removal from individual targeting on a feature flag. The flag must already individually target the context.

You can add, update, or remove a scheduled removal date. You can only schedule a context for removal on a single variation per flag.

Updating an expiring target uses the semantic patch format. To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating expiring targets.

<details>
<summary>Click to expand instructions for <strong>updating expiring targets</strong></summary>

#### addExpiringTarget

Adds a date and time that LaunchDarkly will remove the context from the flag's individual targeting.

##### Parameters

* `value`: The time, in Unix milliseconds, when LaunchDarkly should remove the context from individual targeting for this flag
* `variationId`: ID of a variation on the flag
* `contextKey`: The context key for the context to remove from individual targeting
* `contextKind`: The kind of context represented by the `contextKey`

Here's an example:

```json
{
  "instructions": [{
    "kind": "addExpiringTarget",
    "value": 1754006460000,
    "variationId": "4254742c-71ae-411f-a992-43b18a51afe0",
    "contextKey": "user-key-123abc",
    "contextKind": "user"
  }]
}
```

#### updateExpiringTarget

Updates the date and time that LaunchDarkly will remove the context from the flag's individual targeting

##### Parameters

* `value`: The time, in Unix milliseconds, when LaunchDarkly should remove the context from individual targeting for this flag
* `variationId`: ID of a variation on the flag
* `contextKey`: The context key for the context to remove from individual targeting
* `contextKind`: The kind of context represented by the `contextKey`
* `version`: (Optional) The version of the expiring target to update. If included, update will fail if version doesn't match current version of the expiring target.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateExpiringTarget",
    "value": 1754006460000,
    "variationId": "4254742c-71ae-411f-a992-43b18a51afe0",
    "contextKey": "user-key-123abc",
    "contextKind": "user"
  }]
}
```

#### removeExpiringTarget

Removes the scheduled removal of the context from the flag's individual targeting. The context will remain part of the flag's individual targeting until you explicitly remove it, or until you schedule another removal.

##### Parameters

* `variationId`: ID of a variation on the flag
* `contextKey`: The context key for the context to remove from individual targeting
* `contextKind`: The kind of context represented by the `contextKey`

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeExpiringTarget",
    "variationId": "4254742c-71ae-411f-a992-43b18a51afe0",
    "contextKey": "user-key-123abc",
    "contextKind": "user"
  }]
}
```

</details>
54:T9c7,> ### Contexts are now available
>
> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Update expiring context targets on feature flag](/api/feature-flags/update-expiring-context-targets-on-feature-flag) instead of this endpoint. To learn more, read [Contexts](/home/flags/contexts).

Schedule a target for removal from individual targeting on a feature flag. The flag must already serve a variation to specific targets based on their key.

You can add, update, or remove a scheduled removal date. You can only schedule a target for removal on a single variation per flag.

Updating an expiring target uses the semantic patch format. To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating expiring user targets.

<details>
<summary>Click to expand instructions for <strong>updating expiring user targets</strong></summary>

#### addExpireUserTargetDate

Adds a date and time that LaunchDarkly will remove the user from the flag's individual targeting.

##### Parameters

* `value`: The time, in Unix milliseconds, when LaunchDarkly should remove the user from individual targeting for this flag
* `variationId`: ID of a variation on the flag
* `userKey`: The user key for the user to remove from individual targeting

#### updateExpireUserTargetDate

Updates the date and time that LaunchDarkly will remove the user from the flag's individual targeting.

##### Parameters

* `value`: The time, in Unix milliseconds, when LaunchDarkly should remove the user from individual targeting for this flag
* `variationId`: ID of a variation on the flag
* `userKey`: The user key for the user to remove from individual targeting
* `version`: (Optional) The version of the expiring user target to update. If included, update will fail if version doesn't match current version of the expiring user target.

#### removeExpireUserTargetDate

Removes the scheduled removal of the user from the flag's individual targeting. The user will remain part of the flag's individual targeting until you explicitly remove them, or until you schedule another removal.

##### Parameters

* `variationId`: ID of a variation on the flag
* `userKey`: The user key for the user to remove from individual targeting

</details>
55:T7c17,Perform a partial update to a feature flag. The request body must be a valid semantic patch, JSON patch, or JSON merge patch. To learn more the different formats, read [Updates](/api/overview#updates).

### Using semantic patches on a feature flag

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

The body of a semantic patch request for updating feature flags takes the following properties:

* `comment` (string): (Optional) A description of the update.
* `environmentKey` (string): (Required for some instructions only) The key of the LaunchDarkly environment.
* `instructions` (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a `kind` property that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object. The body of a single semantic patch can contain many different instructions.

### Instructions

Semantic patch requests support the following `kind` instructions for updating feature flags.

<details>
<summary>Click to expand instructions for <strong>turning flags on and off</strong></summary>

These instructions require the `environmentKey` parameter.

#### turnFlagOff

Sets the flag's targeting state to **Off**.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "turnFlagOff" } ]
}
```

#### turnFlagOn

Sets the flag's targeting state to **On**.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "turnFlagOn" } ]
}
```

</details><br />

<details>
<summary>Click to expand instructions for <strong>working with targeting and variations</strong></summary>

These instructions require the `environmentKey` parameter.

Several of the instructions for working with targeting and variations require flag rule IDs, variation IDs, or clause IDs as parameters. Each of these are returned as part of the [Get feature flag](/api/feature-flags/get-feature-flag) response. The flag rule ID is the `_id` field of each element in the `rules` array within each environment listed in the `environments` object. The variation ID is the `_id` field in each element of the `variations` array. The clause ID is the `_id` field of each element of the `clauses` array within the `rules` array within each environment listed in the `environments` object.

#### addClauses

Adds the given clauses to the rule indicated by `ruleId`.

##### Parameters

- `ruleId`: ID of a rule in the flag.
- `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "addClauses",
		"ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
		"clauses": [{
			"contextKind": "user",
			"attribute": "country",
			"op": "in",
			"negate": false,
			"values": ["USA", "Canada"]
		}]
	}]
}
```

#### addPrerequisite

Adds the flag indicated by `key` with variation `variationId` as a prerequisite to the flag in the path parameter.

##### Parameters

- `key`: Flag key of the prerequisite flag.
- `variationId`: ID of a variation of the prerequisite flag.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "addPrerequisite",
		"key": "example-prereq-flag-key",
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

#### addRule

Adds a new targeting rule to the flag. The rule may contain `clauses` and serve the variation that `variationId` indicates, or serve a percentage rollout that `rolloutWeights`, `rolloutBucketBy`, and `rolloutContextKind` indicate.

If you set `beforeRuleId`, this adds the new rule before the indicated rule. Otherwise, adds the new rule to the end of the list.

##### Parameters

- `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.
- `beforeRuleId`: (Optional) ID of a flag rule.
- Either
  - `variationId`: ID of a variation of the flag.

  or

  - `rolloutWeights`: (Optional) Map of `variationId` to weight, in thousandths of a percent (0-100000).
  - `rolloutBucketBy`: (Optional) Context attribute available in the specified `rolloutContextKind`.
  - `rolloutContextKind`: (Optional) Context kind, defaults to `user`

Here's an example that uses a `variationId`:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [{
    "kind": "addRule",
    "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00",
    "clauses": [{
      "contextKind": "organization",
      "attribute": "located_in",
      "op": "in",
      "negate": false,
      "values": ["Sweden", "Norway"]
    }]
  }]
}
```

Here's an example that uses a percentage rollout:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [{
    "kind": "addRule",
    "clauses": [{
      "contextKind": "organization",
      "attribute": "located_in",
      "op": "in",
      "negate": false,
      "values": ["Sweden", "Norway"]
    }],
    "rolloutContextKind": "organization",
    "rolloutWeights": {
      "2f43f67c-3e4e-4945-a18a-26559378ca00": 15000, // serve 15% this variation
      "e5830889-1ec5-4b0c-9cc9-c48790090c43": 85000  // serve 85% this variation
    }
  }]
}
```

#### addTargets

Adds context keys to the individual context targets for the context kind that `contextKind` specifies and the variation that `variationId` specifies. Returns an error if this causes the flag to target the same context key in multiple variations.

##### Parameters

- `values`: List of context keys.
- `contextKind`: (Optional) Context kind to target, defaults to `user`
- `variationId`: ID of a variation on the flag.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "addTargets",
		"values": ["context-key-123abc", "context-key-456def"],
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

#### addUserTargets

Adds user keys to the individual user targets for the variation that `variationId` specifies. Returns an error if this causes the flag to target the same user key in multiple variations. If you are working with contexts, use `addTargets` instead of this instruction.

##### Parameters

- `values`: List of user keys.
- `variationId`: ID of a variation on the flag.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "addUserTargets",
		"values": ["user-key-123abc", "user-key-456def"],
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

#### addValuesToClause

Adds `values` to the values of the clause that `ruleId` and `clauseId` indicate. Does not update the context kind, attribute, or operator.

##### Parameters

- `ruleId`: ID of a rule in the flag.
- `clauseId`: ID of a clause in that rule.
- `values`: Array of strings, case sensitive.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "addValuesToClause",
		"ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
		"clauseId": "10a58772-3121-400f-846b-b8a04e8944ed",
		"values": ["beta_testers"]
	}]
}
```

#### addVariation

Adds a variation to the flag.

##### Parameters

- `value`: The variation value.
- `name`: (Optional) The variation name.
- `description`: (Optional) A description for the variation.

Here's an example:

```json
{
	"instructions": [ { "kind": "addVariation", "value": 20, "name": "New variation" } ]
}
```

#### clearTargets

Removes all individual targets from the variation that `variationId` specifies. This includes both user and non-user targets.

##### Parameters

- `variationId`: ID of a variation on the flag.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "clearTargets", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]
}
```

#### clearUserTargets

Removes all individual user targets from the variation that `variationId` specifies. If you are working with contexts, use `clearTargets` instead of this instruction.

##### Parameters

- `variationId`: ID of a variation on the flag.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "clearUserTargets", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]
}
```

#### removeClauses

Removes the clauses specified by `clauseIds` from the rule indicated by `ruleId`.

##### Parameters

- `ruleId`: ID of a rule in the flag.
- `clauseIds`: Array of IDs of clauses in the rule.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "removeClauses",
		"ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
		"clauseIds": ["10a58772-3121-400f-846b-b8a04e8944ed", "36a461dc-235e-4b08-97b9-73ce9365873e"]
	}]
}
```

#### removePrerequisite

Removes the prerequisite flag indicated by `key`. Does nothing if this prerequisite does not exist.

##### Parameters

- `key`: Flag key of an existing prerequisite flag.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "removePrerequisite", "key": "prereq-flag-key-123abc" } ]
}
```

#### removeRule

Removes the targeting rule specified by `ruleId`. Does nothing if the rule does not exist.

##### Parameters

- `ruleId`: ID of a rule in the flag.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "removeRule", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29" } ]
}
```

#### removeTargets

Removes context keys from the individual context targets for the context kind that `contextKind` specifies and the variation that `variationId` specifies. Does nothing if the flag does not target the context keys.

##### Parameters

- `values`: List of context keys.
- `contextKind`: (Optional) Context kind to target, defaults to `user`
- `variationId`: ID of a flag variation.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "removeTargets",
		"values": ["context-key-123abc", "context-key-456def"],
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

#### removeUserTargets

Removes user keys from the individual user targets for the variation that `variationId` specifies. Does nothing if the flag does not target the user keys. If you are working with contexts, use `removeTargets` instead of this instruction.

##### Parameters

- `values`: List of user keys.
- `variationId`: ID of a flag variation.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "removeUserTargets",
		"values": ["user-key-123abc", "user-key-456def"],
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

#### removeValuesFromClause

Removes `values` from the values of the clause indicated by `ruleId` and `clauseId`. Does not update the context kind, attribute, or operator.

##### Parameters

- `ruleId`: ID of a rule in the flag.
- `clauseId`: ID of a clause in that rule.
- `values`: Array of strings, case sensitive.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "removeValuesFromClause",
		"ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
		"clauseId": "10a58772-3121-400f-846b-b8a04e8944ed",
		"values": ["beta_testers"]
	}]
}
```

#### removeVariation

Removes a variation from the flag.

##### Parameters

- `variationId`: ID of a variation of the flag to remove.

Here's an example:

```json
{
	"instructions": [ { "kind": "removeVariation", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]
}
```

#### reorderRules

Rearranges the rules to match the order given in `ruleIds`. Returns an error if `ruleIds` does not match the current set of rules on the flag.

##### Parameters

- `ruleIds`: Array of IDs of all rules in the flag.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "reorderRules",
		"ruleIds": ["a902ef4a-2faf-4eaf-88e1-ecc356708a29", "63c238d1-835d-435e-8f21-c8d5e40b2a3d"]
	}]
}
```

#### replacePrerequisites

Removes all existing prerequisites and replaces them with the list you provide.

##### Parameters

- `prerequisites`: A list of prerequisites. Each item in the list must include a flag `key` and `variationId`.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [
    {
      "kind": "replacePrerequisites",
      "prerequisites": [
        {
          "key": "prereq-flag-key-123abc",
          "variationId": "10a58772-3121-400f-846b-b8a04e8944ed"
        },
        {
          "key": "another-prereq-flag-key-456def",
          "variationId": "e5830889-1ec5-4b0c-9cc9-c48790090c43"
        }
      ]
    }
  ]
}
```

#### replaceRules

Removes all targeting rules for the flag and replaces them with the list you provide.

##### Parameters

- `rules`: A list of rules.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [
    {
      "kind": "replaceRules",
      "rules": [
        {
          "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00",
          "description": "My new rule",
          "clauses": [
            {
              "contextKind": "user",
              "attribute": "segmentMatch",
              "op": "segmentMatch",
              "values": ["test"]
            }
          ],
          "trackEvents": true
        }
      ]
    }
  ]
}
```

#### replaceTargets

Removes all existing targeting and replaces it with the list of targets you provide.

##### Parameters

- `targets`: A list of context targeting. Each item in the list includes an optional `contextKind` that defaults to `user`, a required `variationId`, and a required list of `values`.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [
    {
      "kind": "replaceTargets",
      "targets": [
        {
          "contextKind": "user",
          "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00",
          "values": ["user-key-123abc"]
        },
        {
          "contextKind": "device",
          "variationId": "e5830889-1ec5-4b0c-9cc9-c48790090c43",
          "values": ["device-key-456def"]
        }
      ]
    }    
  ]
}
```

#### replaceUserTargets

Removes all existing user targeting and replaces it with the list of targets you provide. In the list of targets, you must include a target for each of the flag's variations. If you are working with contexts, use `replaceTargets` instead of this instruction.

##### Parameters

- `targets`: A list of user targeting. Each item in the list must include a `variationId` and a list of `values`.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [
    {
      "kind": "replaceUserTargets",
      "targets": [
        {
          "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00",
          "values": ["user-key-123abc", "user-key-456def"]
        },
        {
          "variationId": "e5830889-1ec5-4b0c-9cc9-c48790090c43",
          "values": ["user-key-789ghi"]
        }
      ]
    }
  ]
}
```

#### updateClause

Replaces the clause indicated by `ruleId` and `clauseId` with `clause`.

##### Parameters

- `ruleId`: ID of a rule in the flag.
- `clauseId`: ID of a clause in that rule.
- `clause`: New `clause` object, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [{
    "kind": "updateClause",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
    "clauseId": "10c7462a-2062-45ba-a8bb-dfb3de0f8af5",
    "clause": {
      "contextKind": "user",
      "attribute": "country",
      "op": "in",
      "negate": false,
      "values": ["Mexico", "Canada"]
    }
  }]
}
```

#### updateDefaultVariation

Updates the default on or off variation of the flag.

##### Parameters

- `onVariationValue`: (Optional) The value of the variation of the new on variation.
- `offVariationValue`: (Optional) The value of the variation of the new off variation

Here's an example:

```json
{
	"instructions": [ { "kind": "updateDefaultVariation", "OnVariationValue": true, "OffVariationValue": false } ]
}
```

#### updateFallthroughVariationOrRollout

Updates the default or "fallthrough" rule for the flag, which the flag serves when a context matches none of the targeting rules. The rule can serve either the variation that `variationId` indicates, or a percentage rollout that `rolloutWeights` and `rolloutBucketBy` indicate.

##### Parameters

- `variationId`: ID of a variation of the flag.

or

- `rolloutWeights`: Map of `variationId` to weight, in thousandths of a percent (0-100000).
- `rolloutBucketBy`: (Optional) Context attribute available in the specified `rolloutContextKind`.
- `rolloutContextKind`: (Optional) Context kind, defaults to `user`

Here's an example that uses a `variationId`:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "updateFallthroughVariationOrRollout",
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

Here's an example that uses a percentage rollout:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "updateFallthroughVariationOrRollout",
		"rolloutContextKind": "user",
		"rolloutWeights": {
			"2f43f67c-3e4e-4945-a18a-26559378ca00": 15000, // serve 15% this variation
			"e5830889-1ec5-4b0c-9cc9-c48790090c43": 85000  // serve 85% this variation
		}
	}]
}
```

#### updateOffVariation

Updates the default off variation to `variationId`. The flag serves the default off variation when the flag's targeting is **Off**.

##### Parameters

- `variationId`: ID of a variation of the flag.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "updateOffVariation", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]
}
```

#### updatePrerequisite

Changes the prerequisite flag that `key` indicates to use the variation that `variationId` indicates. Returns an error if this prerequisite does not exist.

##### Parameters

- `key`: Flag key of an existing prerequisite flag.
- `variationId`: ID of a variation of the prerequisite flag.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "updatePrerequisite",
		"key": "example-prereq-flag-key",
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

#### updateRuleDescription

Updates the description of the feature flag rule.

##### Parameters

- `description`: The new human-readable description for this rule.
- `ruleId`: The ID of the rule. You can retrieve this by making a GET request for the flag.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "updateRuleDescription",
		"description": "New rule description",
		"ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29"
	}]
}
```

#### updateRuleTrackEvents

Updates whether the SDK sends a detailed event for every evaluation of this rule, instead of only summary counts. Required for Data Export, but doesn't enable Data Export on its own.

##### Parameters

- `ruleId`: The ID of the rule. You can retrieve this by making a GET request for the flag.
- `trackEvents`: Whether or not detailed events are sent for this rule.

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "updateRuleTrackEvents",
		"ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
		"trackEvents": true
	}]
}
```

#### updateRuleVariationOrRollout

Updates what `ruleId` serves when its clauses evaluate to true. The rule can serve either the variation that `variationId` indicates, or a percent rollout that `rolloutWeights` and `rolloutBucketBy` indicate.

##### Parameters

- `ruleId`: ID of a rule in the flag.
- `variationId`: ID of a variation of the flag.

  or

- `rolloutWeights`: Map of `variationId` to weight, in thousandths of a percent (0-100000).
- `rolloutBucketBy`: (Optional) Context attribute available in the specified `rolloutContextKind`.
- `rolloutContextKind`: (Optional) Context kind, defaults to `user`

Here's an example:

```json
{
	"environmentKey": "environment-key-123abc",
	"instructions": [{
		"kind": "updateRuleVariationOrRollout",
		"ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
		"variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"
	}]
}
```

#### updateTrackEvents

Updates whether the SDK sends detailed evaluation events for this flag, for all rules. Required for Data Export, but doesn't enable Data Export on its own.

##### Parameters

- `trackEvents`: Whether or not detailed events are sent for this flag.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "updateTrackEvents", "trackEvents": true } ]
}
```

#### updateTrackEventsFallthrough

Updates whether the SDK sends detailed evaluation events for the flag's default rule. Required for Data Export, but doesn't enable Data Export on its own.

##### Parameters

- `trackEvents`: Whether or not detailed events are sent for the default rule.

Here's an example:

```json
{
  "environmentKey": "environment-key-123abc",
  "instructions": [ { "kind": "updateTrackEventsFallthrough", "trackEvents": true } ]
}
```

#### updateVariation

Updates a variation of the flag.

##### Parameters

- `variationId`: The ID of the variation to update.
- `name`: (Optional) The updated variation name.
- `value`: (Optional) The updated variation value.
- `description`: (Optional) The updated variation description.

Here's an example:

```json
{
	"instructions": [ { "kind": "updateVariation", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00", "value": 20 } ]
}
```

</details><br />

<details>
<summary>Click to expand instructions for <strong>updating flag settings</strong></summary>

These instructions do not require the `environmentKey` parameter. They make changes that apply to the flag across all environments.

#### addCustomProperties

Adds a new custom property to the feature flag. Custom properties are used to associate feature flags with LaunchDarkly integrations. For example, if you create an integration with an issue tracking service, you may want to associate a flag with a list of issues related to a feature's development.

##### Parameters

 - `key`: The custom property key.
 - `name`: The custom property name.
 - `values`: A list of the associated values for the custom property.

Here's an example:

```json
{
	"instructions": [{
		"kind": "addCustomProperties",
		"key": "example-custom-property",
		"name": "Example custom property",
		"values": ["value1", "value2"]
	}]
}
```

#### addTags

Adds tags to the feature flag.

##### Parameters

- `values`: A list of tags to add.

Here's an example:

```json
{
  "instructions": [ { "kind": "addTags", "values": ["tag1", "tag2"] } ]
}
```

#### makeFlagPermanent

Marks the feature flag as permanent. LaunchDarkly does not prompt you to remove permanent flags, even if one variation is rolled out to all your customers.

Here's an example:

```json
{
  "instructions": [ { "kind": "makeFlagPermanent" } ]
}
```

#### makeFlagTemporary

Marks the feature flag as temporary.

Here's an example:

```json
{
  "instructions": [ { "kind": "makeFlagTemporary" } ]
}
```

#### removeCustomProperties

Removes the associated values from a custom property. If all the associated values are removed, this instruction also removes the custom property.

##### Parameters

 - `key`: The custom property key.
 - `values`: A list of the associated values to remove from the custom property.

```json
{
	"instructions": [{
		"kind": "replaceCustomProperties",
		"key": "example-custom-property",
		"values": ["value1", "value2"]
	}]
}
```

#### removeMaintainer

Removes the flag's maintainer. To set a new maintainer, use the `updateMaintainerMember` or `updateMaintainerTeam` instructions.

Here's an example:

```json
{
  "instructions": [ { "kind": "removeMaintainer" } ]
}
```

#### removeTags

Removes tags from the feature flag.

##### Parameters

- `values`: A list of tags to remove.

Here's an example:

```json
{
  "instructions": [ { "kind": "removeTags", "values": ["tag1", "tag2"] } ]
}
```

#### replaceCustomProperties

Replaces the existing associated values for a custom property with the new values.

##### Parameters

 - `key`: The custom property key.
 - `name`: The custom property name.
 - `values`: A list of the new associated values for the custom property.

Here's an example:

```json
{
 "instructions": [{
   "kind": "replaceCustomProperties",
   "key": "example-custom-property",
   "name": "Example custom property",
   "values": ["value1", "value2"]
 }]
}
```

#### turnOffClientSideAvailability

Turns off client-side SDK availability for the flag. This is equivalent to unchecking the **SDKs using Mobile key** and/or **SDKs using Client-side ID** boxes for the flag. If you're using a client-side or mobile SDK, you must expose your feature flags in order for the client-side or mobile SDKs to evaluate them.

##### Parameters

- `value`: Use "usingMobileKey" to turn off availability for mobile SDKs. Use "usingEnvironmentId" to turn on availability for client-side SDKs.

Here's an example:

```json
{
  "instructions": [ { "kind": "turnOffClientSideAvailability", "value": "usingMobileKey" } ]
}
```

#### turnOnClientSideAvailability

Turns on client-side SDK availability for the flag. This is equivalent to checking the **SDKs using Mobile key** and/or **SDKs using Client-side ID** boxes for the flag. If you're using a client-side or mobile SDK, you must expose your feature flags in order for the client-side or mobile SDKs to evaluate them.

##### Parameters

- `value`: Use "usingMobileKey" to turn on availability for mobile SDKs. Use "usingEnvironmentId" to turn on availability for client-side SDKs.

Here's an example:

```json
{
  "instructions": [ { "kind": "turnOnClientSideAvailability", "value": "usingMobileKey" } ]
}
```

#### updateDescription

Updates the feature flag description.

##### Parameters

- `value`: The new description.

Here's an example:

```json
{
  "instructions": [ { "kind": "updateDescription", "value": "Updated flag description" } ]
}
```
#### updateMaintainerMember

Updates the maintainer of the flag to an existing member and removes the existing maintainer.

##### Parameters

- `value`: The ID of the member.

Here's an example:

```json
{
  "instructions": [ { "kind": "updateMaintainerMember", "value": "61e9b714fd47591727db558a" } ]
}
```

#### updateMaintainerTeam

Updates the maintainer of the flag to an existing team and removes the existing maintainer.

##### Parameters

- `value`: The key of the team.

Here's an example:

```json
{
  "instructions": [ { "kind": "updateMaintainerTeam", "value": "example-team-key" } ]
}
```

#### updateName

Updates the feature flag name.

##### Parameters

- `value`: The new name.

Here's an example:

```json
{
  "instructions": [ { "kind": "updateName", "value": "Updated flag name" } ]
}
```

</details><br />

<details>
<summary>Click to expand instructions for <strong>updating the flag lifecycle</strong></summary>

These instructions do not require the `environmentKey` parameter. They make changes that apply to the flag across all environments.

#### archiveFlag

Archives the feature flag. This retires it from LaunchDarkly without deleting it. You cannot archive a flag that is a prerequisite of other flags.

```json
{
  "instructions": [ { "kind": "archiveFlag" } ]
}
```

#### deleteFlag

Deletes the feature flag and its rules. You cannot restore a deleted flag. If this flag is requested again, the flag value defined in code will be returned for all contexts.

Here's an example:

```json
{
  "instructions": [ { "kind": "deleteFlag" } ]
}
```

#### deprecateFlag

Deprecates the feature flag. This hides it from the live flags list without archiving or deleting it.

Here's an example:

```json
{
  "instructions": [ { "kind": "deprecateFlag" } ]
}
```

#### restoreDeprecatedFlag

Restores the feature flag if it was previously deprecated.

Here's an example:

```json
{
  "instructions": [ { "kind": "restoreDeprecatedFlag" } ]
}
```

#### restoreFlag

Restores the feature flag if it was previously archived.

Here's an example:

```json
{
  "instructions": [ { "kind": "restoreFlag" } ]
}
```

</details>

### Using JSON patches on a feature flag

If you do not include the semantic patch header described above, you can use a [JSON patch](/api/overview#updates-using-json-patch) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes.

In the JSON patch representation, use a JSON pointer in the `path` element to describe what field to change. Use the [Get feature flag](/api/feature-flags/get-feature-flag) endpoint to find the field you want to update.

There are a few special cases to keep in mind when determining the value of the `path` element:

  * To add an individual target to a specific variation if the flag variation already has individual targets, the path for the JSON patch operation is:

  ```json
  [
    {
      "op": "add",
      "path": "/environments/devint/targets/0/values/-",
      "value": "TestClient10"
    }
  ]
  ```

  * To add an individual target to a specific variation if the flag variation does not already have individual targets, the path for the JSON patch operation is:

  ```json
  [
    {
      "op": "add",
      "path": "/environments/devint/targets/-",
      "value": { "variation": 0, "values": ["TestClient10"] }
    }
  ]
  ```

  * To add a flag to a release pipeline, the path for the JSON patch operation is:

  ```json
  [
    {
      "op": "add",
      "path": "/releasePipelineKey",
      "value": "example-release-pipeline-key"
    }
  ]
  ```

### Required approvals
If a request attempts to alter a flag configuration in an environment where approvals are required for the flag, the request will fail with a 405. Changes to the flag configuration in that environment will require creating an [approval request](/api/approvals).

### Conflicts
If a flag configuration change made through this endpoint would cause a pending scheduled change or approval request to fail, this endpoint will return a 400. You can ignore this check by adding an `ignoreConflicts` query parameter set to `true`.

### Migration flags
For migration flags, the cohort information is included in the `rules` property of a flag's response. You can update cohorts by updating `rules`. Default cohort information is included in the `fallthrough` property of a flag's response. You can update the default cohort by updating `fallthrough`.
When you update the rollout for a cohort or the default cohort through the API, provide a rollout instead of a single `variationId`.
To learn more, read [Migration flags](/home/flags/migration).
56:T69c,Update a flag trigger. Updating a flag trigger uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating flag triggers.

<details>
<summary>Click to expand instructions for <strong>updating flag triggers</strong></summary>

#### replaceTriggerActionInstructions

Removes the existing trigger action and replaces it with the new instructions.

##### Parameters

- `value`: An array of the new `kind`s of actions to perform when triggering. Supported flag actions are `turnFlagOn` and `turnFlagOff`.

Here's an example that replaces the existing action with new instructions to turn flag targeting off:

```json
{
  "instructions": [
    {
      "kind": "replaceTriggerActionInstructions",
      "value": [ {"kind": "turnFlagOff"} ]
    }
  ]
}
```

#### cycleTriggerUrl

Generates a new URL for this trigger. You must update any clients using the trigger to use this new URL.

Here's an example:

```json
{
  "instructions": [{ "kind": "cycleTriggerUrl" }]
}
```

#### disableTrigger

Disables the trigger. This saves the trigger configuration, but the trigger stops running. To re-enable, use `enableTrigger`.

Here's an example:

```json
{
  "instructions": [{ "kind": "disableTrigger" }]
}
```

#### enableTrigger

Enables the trigger. If you previously disabled the trigger, it begins running again.

Here's an example:

```json
{
  "instructions": [{ "kind": "enableTrigger" }]
}
```

</details>
57:T672,Get details about a holdout.

### Expanding the holdout response

LaunchDarkly supports the following fields for expanding the "Get holdout" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:

- `draftIteration` includes the iteration which has not been started yet, if any, for this holdout.
- `previousIterations` includes all iterations prior to the current iteration, for this holdout. By default only the current iteration is included in the response.
- `rel-draftIteration` includes the iteration which has not been started yet, if any, for the experiments related to this holdout.
- `rel-metrics` includes metrics for experiments related to this holdout.
- `rel-previousIterations` includes all iterations prior to the current iteration, for the experiments related to this holdout.
- `rel-secondaryMetrics` includes secondary metrics for experiments related to this holdout.
- `rel-treatments` includes all treatment and parameter details for experiments related to this holdout.
- `secondaryMetrics` includes secondary metrics for this holdout. By default only the primary metric is included in the response.
- `treatments` includes all treatment and parameter details for this holdout. By default treatment data is not included in the response.

For example, `expand=draftIteration,rel-draftIteration` includes the `draftIteration` and `rel-draftIteration` fields in the response. If fields that you request with the `expand` query parameter are empty, they are not included in the response.
58:T67c,Updates an existing holdout, and returns the updated holdout. Updating holdouts uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating holdouts.

<details>
<summary>Click to expand instructions for <strong>updating holdouts</strong></summary>

#### endHoldout

Ends a holdout.

##### Parameters

None.

Here's an example:

```json
{
  "comment": "Optional comment describing why the holdout is ending",
  "instructions": [{
    "kind": "endHoldout"
  }]
}
```

#### removeExperiment

Removes an experiment from a holdout.

##### Parameters

- `value`: The key of the experiment to remove

Here's an example:

```json
{
  "comment": "Optional comment describing the change",
  "instructions": [{
    "kind": "removeExperiment",
    "value": "experiment-key"
  }]
}
```

#### updateDescription

Updates the description of the holdout.

##### Parameters

- `value`: The new description.

Here's an example:

```json
{
  "comment": "Optional comment describing the update",
  "instructions": [{
    "kind": "updateDescription",
    "value": "Updated holdout description"
  }]
}
```

#### updateName

Updates the name of the holdout.

##### Parameters

- `value`: The new name.

Here's an example:

```json
{
  "comment": "Optional comment describing the update",
  "instructions": [{
    "kind": "updateName",
    "value": "Updated holdout name"
  }]
}
```

</details>
59:T7d1,Update a layer by adding, changing, or removing traffic reservations for experiments, or by changing layer name or description.
Updating a layer uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating layers.

<details>
<summary>Click to expand instructions for <strong>updating layers</strong></summary>

#### updateName

Updates the layer name.

##### Parameters

- `name`: The new layer name.

Here's an example:

```json
{
  "instructions": [{
      "kind": "updateName",
      "name": "New name"
  }]
}
```

#### updateDescription

Updates the layer description.

##### Parameters

- `description`: The new description.

Here's an example:

```json
{
  "instructions": [{
      "kind": "updateDescription",
      "description": "New description"
  }]
}
```

#### updateExperimentReservation

Adds or updates a traffic reservation for an experiment in a layer.

##### Parameters

- `experimentKey`: The key of the experiment whose reservation you are adding to or updating in the layer.
- `reservationPercent`: The amount of traffic in the layer to reserve. Must be an integer. Zero is allowed until iteration start.

Here's an example:

```json
{
  "environmentKey": "production",
  "instructions": [{
      "kind": "updateExperimentReservation",
      "experimentKey": "exp-key",
      "reservationPercent": 10
  }]
}
```

#### removeExperiment

Removes a traffic reservation for an experiment from a layer.

##### Parameters

- `experimentKey`: The key of the experiment whose reservation you want to remove from the layer.

Here's an example:

```json
{
  "environmentKey": "production",
  "instructions": [{
      "kind": "removeExperiment",
      "experimentKey": "exp-key"
  }]
}
```

</details>
5a:T9b4,Get a list of all metrics for the specified project.

### Filtering metrics

The `filter` parameter supports the following operators: `contains`, `equals`, `anyOf`.

#### Supported fields and operators

You can only filter certain fields in metrics when using the `filter` parameter. Additionally, you can only filter some fields with certain operators.

When you search for metrics, the `filter` parameter supports the following fields and operators:

|<div style={{ width: '120px' }}>Field</div> |Description |Supported operators |
|---|---|---|
| `dataSourceKeys` | The data source that provides events for this metric (for example, "launchdarkly-hosted"). | `anyOf`, `notEquals` |
| `eventKeys` | The metric event key. | `anyOf` |
| `eventKind` | The metric event kind. One of `custom`, `pageview`, `click`. | `equals` |
| `hasConnections` | Whether the metric has connections to experiments or guarded rollouts. One of `true`, `false`. | `equals` |
| `isNumeric` | Whether the metric is numeric. One of `true`, `false`. | `equals` |
| `maintainerIds` | A comma-separated list of metric maintainer IDs. | `anyOf` |
| `maintainerTeamKey` | The metric maintainer team key. | `equals` |
| `metricUsedIn` | Filter by where the metric is used. One of `experiments`, `guarded_rollouts`, `any`, `none`. | `equals` |
| `query` | A "fuzzy" search across metric key and name. Supply a string or list of strings to the operator. | `equals` |
| `tags` | The metric tags. | `contains` |
| `unitAggregationType` | The metric's unit aggregation type. One of `sum`, `average`. | `equals` |
| `versionIds` | The metric version number. | `anyOf` |
| `view` | The view used to restrict access to the metric. | `equals` |

For example, the filter `?filter=tags contains ["tag1", "tag2", "tag3"]` matches metrics that have all three tags.

The documented values for `filter` query parameters are prior to URL encoding. For example, the `[` in `?filter=tags contains ["tag1", "tag2", "tag3"]` must be encoded to `%5B`.

### Expanding the metric list response

LaunchDarkly supports expanding the "List metrics" response. By default, the expandable field is **not** included in the response.

To expand the response, append the `expand` query parameter and add the following supported field:

- `experimentCount` includes the number of experiments from the specific project that use the metric

For example, `expand=experimentCount` includes the `experimentCount` field for each metric in the response.
5b:T7c6,Get a list of all metric groups for the specified project.

### Expanding the metric groups response

This endpoint does not support response expansion.

Although the API accepts an `expand` query parameter for compatibility reasons, it does not currently modify the response. The parameter is reserved for future use.

### Filtering metric groups

The `filter` parameter supports the following operators: `contains`, `equals`, `anyOf`.

#### Supported fields and operators

You can only filter certain fields in metrics when using the `filter` parameter. Additionally, you can only filter some fields with certain operators.

When you search for metrics, the `filter` parameter supports the following fields and operators:

|<div style={{ width: '120px' }}>Field</div> |Description |Supported operators |
|---|---|---|
| `experimentStatus` | The experiment's status. One of `not_started`, `running`, `stopped`, `started`. | `equals` |
| `hasConnections` | Whether the metric group has connections to experiments or guarded rollouts. One of `true`, `false`. | `equals` |
| `kind` | The metric group kind. One of `funnel`, `standard`. | `equals` |
| `maintainerIds` | The metric maintainer IDs. | `anyOf` |
| `maintainerTeamKey` | The metric maintainer team key. | `equals` |
| `query` | A "fuzzy" search across metric group key and name. Supply a string or list of strings to the operator. | `equals` |

### Sorting metric groups

LaunchDarkly supports the following fields for sorting:

- `name` sorts by metric group name.
- `createdAt` sorts by the creation date of the metric group.
- `connectionCount` sorts by the number of connections to experiments the metric group has.

By default, the sort is in ascending order. Use `-` to sort in descending order. For example, `?sort=name` sorts the response by metric group name in ascending order, and `?sort=-name` sorts in descending order.

#### Sample query

`filter=experimentStatus equals 'not_started' and query equals 'metric name'`
5c:T508,
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)
* 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](/home/flags/segment-config).
5d:T7c4,Return a list of projects.

By default, this returns the first 20 projects. Page through this list with the `limit` parameter and by following the `first`, `prev`, `next`, and `last` links in the `_links` field that returns. If those links do not appear, the pages they refer to don't exist. For example, the `first` and `prev` links will be missing from the response on the first page, because there is no previous page and you cannot return to the first page when you are already on the first page.

### Filtering projects

LaunchDarkly supports three fields for filters:
- `query` is a string that matches against the projects' names and keys. It is not case sensitive.
- `tags` is a `+`-separated list of project tags. It filters the list of projects that have all of the tags in the list.
- `keys` is a `|` separated list of project keys. It filters the list to projects that have any of the keys in the list.

For example, the filter `filter=query:abc,tags:tag-1+tag-2` matches projects with the string `abc` in their name or key and also are tagged with `tag-1` and `tag-2`. The filter is not case-sensitive.

The documented values for `filter` query parameters are prior to URL encoding. For example, the `+` in `filter=tags:tag-1+tag-2` must be encoded to `%2B`.

### Sorting projects

LaunchDarkly supports two fields for sorting:
- `name` sorts by project name.
- `createdOn` sorts by the creation date of the project.

For example, `sort=name` sorts the response by project name in ascending order.

### Expanding the projects response

LaunchDarkly supports one field for expanding the "List projects" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with the `environments` field.

* `environments` includes a paginated list of the project environments.

For example, `expand=environments` includes the `environments` field for each project in the response.
5e:T673,
Update a scheduled change, overriding existing instructions with the new ones. Updating a scheduled change uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating scheduled changes.

<details>
<summary>Click to expand instructions for <strong>updating scheduled changes</strong></summary>

#### deleteScheduledChange

Removes the scheduled change.

Here's an example:

```json
{
  "instructions": [{ "kind": "deleteScheduledChange" }]
}
```

#### replaceScheduledChangesInstructions

Removes the existing scheduled changes and replaces them with the new instructions.

##### Parameters

- `value`: An array of the new actions to perform when the execution date for these scheduled changes arrives. Supported scheduled actions are `turnFlagOn` and `turnFlagOff`.

Here's an example that replaces the scheduled changes with new instructions to turn flag targeting off:

```json
{
  "instructions": [
    {
      "kind": "replaceScheduledChangesInstructions",
      "value": [ {"kind": "turnFlagOff"} ]
    }
  ]
}
```

#### updateScheduledChangesExecutionDate

Updates the execution date for the scheduled changes.

##### Parameters

- `value`: the new execution date, in Unix milliseconds.

Here's an example:

```json
{
  "instructions": [
    {
      "kind": "updateScheduledChangesExecutionDate",
      "value": 1754092860000
    }
  ]
}
```

</details>
5f:T8a1,Get a list of all segments in the given project.

Segments can be rule-based, list-based, or synced. Big segments include larger list-based segments and synced segments. Some fields in the response only apply to big segments.

### Filtering segments

The `filter` parameter supports the following operators: `equals`, `anyOf`, and `exists`.

You can also combine filters in the following ways:

- Use a comma (`,`) as an AND operator
- Use a vertical bar (`|`) as an OR operator
- Use parentheses (`()`) to group filters

#### Supported fields and operators

You can only filter certain fields in segments when using the `filter` parameter. Additionally, you can only filter some fields with certain operators.

When you search for segments, the `filter` parameter supports the following fields and operators:

|<div style={{ width: '120px' }}>Field</div> |Description |Supported operators |
|---|---|---|
| `excludedKeys` | The segment keys of segments to exclude from the results. | `anyOf` |
| `external` | Whether the segment is a synced segment. | `exists` |
| `includedKeys` | The segment keys of segments to include in the results. | `anyOf` |
| `query` | A "fuzzy" search across segment key, name, and description. Supply a string or list of strings to the operator. | `equals` |
| `tags` | The segment tags. | `anyOf` |
| `unbounded` | Whether the segment is a standard segment (`false`) or a big segment (`true`). Standard segments include rule-based segments and smaller list-based segments. Big segments include larger list-based segments and synced segments. | `equals` |

Here are a few examples:

* The filter `?filter=tags anyOf ["enterprise", "beta"],query equals "toggle"` matches segments with "toggle" in their key, name, or description that also have "enterprise" or "beta" as a tag.
* The filter `?filter=excludedKeys anyOf ["segmentKey1", "segmentKey2"]` excludes the segments with those keys from the results.
* The filter `?filter=unbounded equals true` matches larger list-based segments and synced segments.

The documented values for `filter` query parameters are prior to URL encoding. For example, the `[` in `?filter=tags anyOf ["enterprise", "beta"]` must be encoded to `%5B`.
60:T40b1,Update a segment. The request body must be a valid semantic patch, JSON patch, or JSON merge patch. To learn more the different formats, read [Updates](/api/overview#updates).

### Using semantic patches on a segment

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

The body of a semantic patch request for updating segments requires an `environmentKey` in addition to `instructions` and an optional `comment`. The body of the request takes the following properties:

* `comment` (string): (Optional) A description of the update.
* `environmentKey` (string): (Required) The key of the LaunchDarkly environment.
* `instructions` (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a `kind` property that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object.

### Instructions

Semantic patch requests support the following `kind` instructions for updating segments.

<details>
<summary>Click to expand instructions for <strong>updating segment details and settings</strong></summary>

#### addTags

Adds tags to the segment.

##### Parameters

- `values`: A list of tags to add.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addTags",
    "values": ["tag1", "tag2"]
  }]
}
```

#### removeTags

Removes tags from the segment.

##### Parameters

- `values`: A list of tags to remove.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeTags",
    "values": ["tag1", "tag2"]
  }]
}
```

#### updateName

Updates the name of the segment.

##### Parameters

- `value`: Name of the segment.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateName",
    "value": "Updated segment name"
  }]
}
```

</details>

<details>
<summary>Click to expand instructions for <strong>updating segment individual targets</strong></summary>

#### addExcludedTargets

Adds context keys to the individual context targets excluded from the segment for the specified `contextKind`. Returns an error if this causes the same context key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500.

##### Parameters

- `contextKind`: The context kind the targets should be added to.
- `values`: List of keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addExcludedTargets",
    "contextKind": "org",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

#### addExcludedUsers

Adds user keys to the individual user targets excluded from the segment. Returns an error if this causes the same user key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. If you are working with contexts, use `addExcludedTargets` instead of this instruction.

##### Parameters

- `values`: List of user keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addExcludedUsers",
    "values": [ "user-key-123abc", "user-key-456def" ]
  }]
}
```

#### addIncludedTargets

Adds context keys to the individual context targets included in the segment for the specified `contextKind`. Returns an error if this causes the same context key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500.

##### Parameters

- `contextKind`: The context kind the targets should be added to.
- `values`: List of keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addIncludedTargets",
    "contextKind": "org",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

#### addIncludedUsers

Adds user keys to the individual user targets included in the segment. Returns an error if this causes the same user key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. If you are working with contexts, use `addIncludedTargets` instead of this instruction.

##### Parameters

- `values`: List of user keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addIncludedUsers",
    "values": [ "user-key-123abc", "user-key-456def" ]
  }]
}
```

#### removeExcludedTargets

Removes context keys from the individual context targets excluded from the segment for the specified `contextKind`. Returns an error if the number of operations on targets exceeds the batch limit of 1,500.

##### Parameters

- `contextKind`: The context kind the targets should be removed from.
- `values`: List of keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeExcludedTargets",
    "contextKind": "org",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

#### removeExcludedUsers

Removes user keys from the individual user targets excluded from the segment. If you are working with contexts, use `removeExcludedTargets` instead of this instruction. Returns an error if the number of operations on targets exceeds the batch limit of 1,500.

##### Parameters

- `values`: List of user keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeExcludedUsers",
    "values": [ "user-key-123abc", "user-key-456def" ]
  }]
}
```

#### removeIncludedTargets

Removes context keys from the individual context targets included in the segment for the specified `contextKind`. Returns an error if the number of operations on targets exceeds the batch limit of 1,500.

##### Parameters

- `contextKind`: The context kind the targets should be removed from.
- `values`: List of keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeIncludedTargets",
    "contextKind": "org",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

#### removeIncludedUsers

Removes user keys from the individual user targets included in the segment. If you are working with contexts, use `removeIncludedTargets` instead of this instruction. Returns an error if the number of operations on targets exceeds the batch limit of 1,500.

##### Parameters

- `values`: List of user keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeIncludedUsers",
    "values": [ "user-key-123abc", "user-key-456def" ]
  }]
}
```

</details>

<details>
<summary>Click to expand instructions for <strong>updating segment targeting rules</strong></summary>

#### addClauses

Adds the given clauses to the rule indicated by `ruleId`.

##### Parameters

- `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.
- `ruleId`: ID of a rule in the segment.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addClauses",
    "clauses": [
      {
        "attribute": "email",
        "negate": false,
        "op": "contains",
        "values": ["value1"]
      }
    ],
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
  }]
}
```

#### addRule

Adds a new targeting rule to the segment. The rule may contain `clauses`.

##### Parameters

- `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.
- `description`: A description of the rule.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addRule",
    "clauses": [
      {
        "attribute": "email",
        "op": "contains",
        "negate": false,
        "values": ["@launchdarkly.com"]
      }
    ],
    "description": "Targeting rule for LaunchDarkly employees",
  }]
}
```

#### addValuesToClause

Adds `values` to the values of the clause that `ruleId` and `clauseId` indicate. Does not update the context kind, attribute, or operator.

##### Parameters

- `ruleId`: ID of a rule in the segment.
- `clauseId`: ID of a clause in that rule.
- `values`: Array of strings, case sensitive.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addValuesToClause",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
    "clauseId": "10a58772-3121-400f-846b-b8a04e8944ed",
    "values": ["beta_testers"]
  }]
}
```

#### removeClauses

Removes the clauses specified by `clauseIds` from the rule indicated by `ruleId`.

##### Parameters

- `ruleId`: ID of a rule in the segment.
- `clauseIds`: Array of IDs of clauses in the rule.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeClauses",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
    "clauseIds": ["10a58772-3121-400f-846b-b8a04e8944ed", "36a461dc-235e-4b08-97b9-73ce9365873e"]
  }]
}
```

#### removeRule

Removes the targeting rule specified by `ruleId`. Does nothing if the rule does not exist.

##### Parameters

- `ruleId`: ID of a rule in the segment.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeRule",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29"
  }]
}
```

#### removeValuesFromClause

Removes `values` from the values of the clause indicated by `ruleId` and `clauseId`. Does not update the context kind, attribute, or operator.

##### Parameters

- `ruleId`: ID of a rule in the segment.
- `clauseId`: ID of a clause in that rule.
- `values`: Array of strings, case sensitive.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeValuesFromClause",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
    "clauseId": "10a58772-3121-400f-846b-b8a04e8944ed",
    "values": ["beta_testers"]
  }]
}
```

#### reorderRules

Rearranges the rules to match the order given in `ruleIds`. Returns an error if `ruleIds` does not match the current set of rules in the segment.

##### Parameters

- `ruleIds`: Array of IDs of all targeting rules in the segment.

Here's an example:

```json
{
  "instructions": [{
    "kind": "reorderRules",
    "ruleIds": ["a902ef4a-2faf-4eaf-88e1-ecc356708a29", "63c238d1-835d-435e-8f21-c8d5e40b2a3d"]
  }]
}
```

#### updateClause

Replaces the clause indicated by `ruleId` and `clauseId` with `clause`.

##### Parameters

- `ruleId`: ID of a rule in the segment.
- `clauseId`: ID of a clause in that rule.
- `clause`: New `clause` object, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateClause",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
    "clauseId": "10c7462a-2062-45ba-a8bb-dfb3de0f8af5",
    "clause": {
      "contextKind": "user",
      "attribute": "country",
      "op": "in",
      "negate": false,
      "values": ["Mexico", "Canada"]
    }
  }]
}
```

#### updateRuleDescription

Updates the description of the segment targeting rule.

##### Parameters

- `description`: The new human-readable description for this rule.
- `ruleId`: The ID of the rule. You can retrieve this by making a GET request for the segment.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateRuleDescription",
    "description": "New rule description",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29"
  }]
}
```

#### updateRuleRolloutAndContextKind

For a rule that includes a percentage of targets, updates the percentage and the context kind of the targets to include.

##### Parameters

- `ruleId`: The ID of a targeting rule in the segment that includes a percentage of targets.
- `weight`: The weight, in thousandths of a percent (0-100000).
- `contextKind`: The context kind.

Here's an example:

```json
{
  "instructions": [{
    "kind": "reorderRules",
    "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29",
    "weight": "20000",
    "contextKind": "device"
  }]
}
```

</details>

<details>
<summary>Click to expand instructions for <strong>working with Big Segments</strong></summary>

A "big segment" is a segment that is either a synced segment, or a list-based segment with more than 15,000 entries that includes only one targeted context kind. LaunchDarkly uses different implementations for different types of segments so that all of your segments have good performance.

The following semantic patch instructions apply only to these [larger list-based segments](/home/flags/segments-create#create-larger-list-based-segments).

#### addBigSegmentExcludedTargets

For use with [larger list-based segments](/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets excluded from the segment. Returns an error if this causes the same context key to be both included and excluded.

##### Parameters

- `values`: List of context keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addBigSegmentExcludedTargets",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

#### addBigSegmentIncludedTargets

For use with [larger list-based segments](/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets included in the segment. Returns an error if this causes the same context key to be both included and excluded.

##### Parameters

- `values`: List of context keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addBigSegmentIncludedTargets",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

#### processBigSegmentImport

For use with [larger list-based segments](/home/flags/segments-create#create-larger-list-based-segments) ONLY. Processes a segment import.

##### Parameters

- `importId`: The ID of the import. The import ID is returned in the `Location` header as part of the [Create big segment import](/api/segments/create-big-segment-import) request.

Here's an example:

```json
{
  "instructions": [{
    "kind": "processBigSegmentImport",
    "importId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29"
  }]
}
```


#### removeBigSegmentExcludedTargets

For use with [larger list-based segments](/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets excluded from the segment.

##### Parameters

- `values`: List of context keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeBigSegmentExcludedTargets",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

#### removeBigSegmentIncludedTargets

For use with [larger list-based segments](/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets included in the segment.

##### Parameters

- `values`: List of context keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeBigSegmentIncludedTargets",
    "values": [ "org-key-123abc", "org-key-456def" ]
  }]
}
```

</details>

### Using JSON patches on a segment

If you do not include the header described above, you can use a [JSON patch](/api/overview#updates-using-json-patch) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes.

For example, to update the description for a segment with a JSON patch, use the following request body:

```json
{
  "patch": [
    {
      "op": "replace",
      "path": "/description",
      "value": "new description"
    }
  ]
}
```

To update fields in the segment that are arrays, set the `path` to the name of the field and then append `/<array index>`. Use `/0` to add the new entry to the beginning of the array. Use `/-` to add the new entry to the end of the array.

For example, to add a rule to a segment, use the following request body:

```json
{
  "patch":[
    {
      "op": "add",
      "path": "/rules/0",
      "value": {
        "clauses": [{ "contextKind": "user", "attribute": "email", "op": "endsWith", "values": [".edu"], "negate": false }]
      }
    }
  ]
}
```

To add or remove targets from segments, we recommend using semantic patch. Semantic patch for segments includes specific instructions for adding and removing both included and excluded targets.
61:Tae8,
Update expiring context targets for a segment. Updating a context target expiration uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

If the request is well-formed but any of its instructions failed to process, this operation returns status code `200`. In this case, the response `errors` array will be non-empty.

### Instructions

Semantic patch requests support the following `kind` instructions for updating expiring context targets.

<details>
<summary>Click to expand instructions for <strong>updating expiring context targets</strong></summary>

#### addExpiringTarget

Schedules a date and time when LaunchDarkly will remove a context from segment targeting. The segment must already have the context as an individual target.

##### Parameters

- `targetType`: The type of individual target for this context. Must be either `included` or `excluded`.
- `contextKey`: The context key.
- `contextKind`: The kind of context being targeted.
- `value`: The date when the context should expire from the segment targeting, in Unix milliseconds.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addExpiringTarget",
    "targetType": "included",
    "contextKey": "user-key-123abc",
    "contextKind": "user",
    "value": 1754092860000
  }]
}
```

#### updateExpiringTarget

Updates the date and time when LaunchDarkly will remove a context from segment targeting.

##### Parameters

- `targetType`: The type of individual target for this context. Must be either `included` or `excluded`.
- `contextKey`: The context key.
- `contextKind`: The kind of context being targeted.
- `value`: The new date when the context should expire from the segment targeting, in Unix milliseconds.
- `version`: (Optional) The version of the expiring target to update. If included, update will fail if version doesn't match current version of the expiring target.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateExpiringTarget",
    "targetType": "included",
    "contextKey": "user-key-123abc",
    "contextKind": "user",
    "value": 1754179260000
  }]
}
```

#### removeExpiringTarget

Removes the scheduled expiration for the context in the segment.

##### Parameters

- `targetType`: The type of individual target for this context. Must be either `included` or `excluded`.
- `contextKey`: The context key.
- `contextKind`: The kind of context being targeted.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeExpiringTarget",
    "targetType": "included",
    "contextKey": "user-key-123abc",
    "contextKind": "user",
  }]
}
```

</details>
62:T7db,
> ### Contexts are now available
>
> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Update expiring targets for segment](/api/segments/update-expiring-targets-for-segment) instead of this endpoint. To learn more, read [Contexts](/home/flags/contexts).

Update expiring user targets for a segment. Updating a user target expiration uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

If the request is well-formed but any of its instructions failed to process, this operation returns status code `200`. In this case, the response `errors` array will be non-empty.

### Instructions

Semantic patch requests support the following `kind` instructions for updating expiring user targets.

<details>
<summary>Click to expand instructions for <strong>updating expiring user targets</strong></summary>

#### addExpireUserTargetDate

Schedules a date and time when LaunchDarkly will remove a user from segment targeting.

##### Parameters

- `targetType`: A segment's target type, must be either `included` or `excluded`.
- `userKey`: The user key.
- `value`: The date when the user should expire from the segment targeting, in Unix milliseconds.

#### updateExpireUserTargetDate

Updates the date and time when LaunchDarkly will remove a user from segment targeting.

##### Parameters

- `targetType`: A segment's target type, must be either `included` or `excluded`.
- `userKey`: The user key.
- `value`: The new date when the user should expire from the segment targeting, in Unix milliseconds.
- `version`: The segment version.

#### removeExpireUserTargetDate

Removes the scheduled expiration for the user in the segment.

##### Parameters

- `targetType`: A segment's target type, must be either `included` or `excluded`.
- `userKey`: The user key.

</details>
63:Tb85,Add multiple members to an existing team by uploading a CSV file of member email addresses. Your CSV file must include email addresses in the first column. You can include data in additional columns, but LaunchDarkly ignores all data outside the first column. Headers are optional. To learn more, read [Manage team members](/home/account/manage-teams#manage-team-members).

**Members are only added on a `201` response.** A `207` indicates the CSV file contains a combination of valid and invalid entries. A `207` results in no members being added to the team.

On a `207` response, if an entry contains bad input, the `message` field contains the row number as well as the reason for the error. The `message` field is omitted if the entry is valid.

Example `207` response:
```json
{
  "items": [
    {
      "status": "success",
      "value": "new-team-member@acme.com"
    },
    {
      "message": "Line 2: empty row",
      "status": "error",
      "value": ""
    },
    {
      "message": "Line 3: email already exists in the specified team",
      "status": "error",
      "value": "existing-team-member@acme.com"
    },
    {
      "message": "Line 4: invalid email formatting",
      "status": "error",
      "value": "invalid email format"
    }
  ]
}
```

Message | Resolution
--- | ---
Empty row | This line is blank. Add an email address and try again.
Duplicate entry | This email address appears in the file twice. Remove the email from the file and try again.
Email already exists in the specified team | This member is already on your team. Remove the email from the file and try again.
Invalid formatting | This email address is not formatted correctly. Fix the formatting and try again.
Email does not belong to a LaunchDarkly member | The email address doesn't belong to a LaunchDarkly account member. Invite them to LaunchDarkly, then re-add them to the team.

On a `400` response, the `message` field may contain errors specific to this endpoint.

Example `400` response:
```json
{
  "code": "invalid_request",
  "message": "Unable to process file"
}
```

Message | Resolution
--- | ---
Unable to process file | LaunchDarkly could not process the file for an unspecified reason. Review your file for errors and try again.
File exceeds 25mb | Break up your file into multiple files of less than 25mbs each.
All emails have invalid formatting | None of the email addresses in the file are in the correct format. Fix the formatting and try again.
All emails belong to existing team members | All listed members are already on this team. Populate the file with member emails that do not belong to the team and try again.
File is empty | The CSV file does not contain any email addresses. Populate the file and try again.
No emails belong to members of your LaunchDarkly organization | None of the email addresses belong to members of your LaunchDarkly account. Invite these members to LaunchDarkly, then re-add them to the team.
64:T92f,Return a list of teams.

By default, this returns the first 20 teams. Page through this list with the `limit` parameter and by following the `first`, `prev`, `next`, and `last` links in the `_links` field that returns. If those links do not appear, the pages they refer to don't exist. For example, the `first` and `prev` links will be missing from the response on the first page, because there is no previous page and you cannot return to the first page when you are already on the first page.

### Filtering teams

LaunchDarkly supports the following fields for filters:

- `query` is a string that matches against the teams' names and keys. It is not case-sensitive.
  - A request with `query:abc` returns teams with the string `abc` in their name or key.
- `nomembers` is a boolean that filters the list of teams who have 0 members
  - A request with `nomembers:true` returns teams that have 0 members
  - A request with `nomembers:false` returns teams that have 1 or more members

### Sorting teams

LaunchDarkly supports the following fields for sorting:

- `name` sorts by team name. It is not case-sensitive.
- `memberCount` sorts by the number of members on the team.

By default, the sort is in ascending order. Use `-` to sort in descending order. For example, `?sort=name` sorts the response by team name in ascending order, and `?sort=-memberCount` sorts by member count from largest to smallest. Combine fields with a comma to break ties, for example `?sort=-memberCount,name`.

### Expanding the teams response
LaunchDarkly supports expanding several fields in the "List teams" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:

* `members` includes the total count of members that belong to the team.
* `roles` includes a paginated list of the custom roles that you have assigned to the team.
* `roleAttributes` includes a list of the role attributes that you have assigned to the team.
* `projects` includes a paginated list of the projects that the team has any write access to.
* `maintainers` includes a paginated list of the maintainers that you have assigned to the team.

For example, `expand=members,maintainers` includes the `members` and `maintainers` fields in the response.
65:T196e,Perform a partial update to a team. Updating a team uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating teams. Several of the instructions require one or more member IDs as parameters. The member ID is returned as part of the [List account members](/api/account-members/list-account-members) response. It is the `_id` field of each element in the `items` array.


<details>
<summary>Click to expand instructions for <strong>updating teams</strong></summary>

#### addCustomRoles

Adds custom roles to the team. Team members will have these custom roles granted to them.

##### Parameters

- `values`: List of custom role keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addCustomRoles",
    "values": [ "example-custom-role" ]
  }]
}
```

#### addMembers

Adds members to the team.

##### Parameters

- `values`: List of member IDs to add.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addMembers",
    "values": [ "1234a56b7c89d012345e678f", "507f1f77bcf86cd799439011" ]
  }]
}
```

#### addPermissionGrants

Adds permission grants to members for the team. For example, a permission grant could allow a member to act as a team maintainer. A permission grant may have either an `actionSet` or a list of `actions` but not both at the same time. The members do not have to be team members to have a permission grant for the team.

##### Parameters

- `actionSet`: Name of the action set.
- `actions`: List of actions.
- `memberIDs`: List of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addPermissionGrants",
    "actions": [ "updateTeamName", "updateTeamDescription" ],
    "memberIDs": [ "1234a56b7c89d012345e678f", "507f1f77bcf86cd799439011" ]
  }]
}
```

#### addRoleAttribute

Adds a role attribute to a team. Team members will have these role attribute values scoped for all custom roles granted to them.

##### Parameters

- `key`: The role attribute key to add.
- `values`: List of role attribute values for that key.

Here's an example:

```json
{
  "instructions": [
    {
      "kind": "addRoleAttribute",
      "key": "testAttribute",
      "values": ["someNewValue", "someOtherNewValue"]
    }
  ]
}
```

#### removeCustomRoles

Removes custom roles from the team. The app will no longer grant these custom roles to the team members.

##### Parameters

- `values`: List of custom role keys.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeCustomRoles",
    "values": [ "example-custom-role" ]
  }]
}
```

#### removeMembers

Removes members from the team.

##### Parameters

- `values`: List of member IDs to remove.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removeMembers",
    "values": [ "1234a56b7c89d012345e678f", "507f1f77bcf86cd799439011" ]
  }]
}
```

#### removePermissionGrants

Removes permission grants from members for the team. A permission grant may have either an `actionSet` or a list of `actions` but not both at the same time. The `actionSet` and `actions` must match an existing permission grant.

##### Parameters

- `actionSet`: Name of the action set.
- `actions`: List of actions.
- `memberIDs`: List of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "removePermissionGrants",
    "actions": [ "updateTeamName", "updateTeamDescription" ],
    "memberIDs": [ "1234a56b7c89d012345e678f", "507f1f77bcf86cd799439011" ]
  }]
}
```

#### removeRoleAttribute

Removes a role attribute from the team.

##### Parameters

- `key`: The role attribute key to remove.

Here's an example:
```json
{
  "instructions": [
    {
      "kind": "removeRoleAttribute",
      "key": "testAttribute"
    }
  ]
}
```

#### replaceMembers

Replaces the existing members of the team with the new members.

##### Parameters

- `values`: List of member IDs of the new members.

Here's an example:

```json
{
  "instructions": [{
    "kind": "replaceMembers",
    "values": [ "1234a56b7c89d012345e678f", "507f1f77bcf86cd799439011" ]
  }]
}
```

#### replaceRoleAttributes

Replaces the existing role attributes for the team with new role attributes.

##### Parameters

- `value`: A map of role attribute keys to lists of role attribute values

Here's an example:

```json
{
  "instructions": [{
    "kind": "replaceRoleAttributes",
    "value": {
      "testAttribute": [ "someNewValue", "someOtherNewValue" ],
      "projectRoleAttribute": [ "project1", "project2"]
    }
  }]
}
```

#### updateDescription

Updates the description of the team.

##### Parameters

- `value`: The new description.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateDescription",
    "value": "Updated team description"
  }]
}
```

#### updateName

Updates the name of the team.

##### Parameters

- `value`: The new name.

Here's an example:

```json
{
  "instructions": [{
    "kind": "updateName",
    "value": "Updated team name"
  }]
}
```

#### updateRoleAttribute

Updates a role attribute on the team. Any existing values for the given key will be replaced with the new values. Team members will have these role attribute values scoped for all custom roles granted to them.

##### Parameters

- `key`: The role attribute key to update.
- `values`: List of role attribute values for that key.

Here's an example:
```json
{
  "instructions": [
    {
      "kind": "updateRoleAttribute",
      "key": "testAttribute",
      "values": ["someNewValue", "someOtherNewValue"]
    }
  ]
}
```

</details>

### Expanding the teams response
LaunchDarkly supports four fields for expanding the "Update team" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:

* `members` includes the total count of members that belong to the team.
* `roles` includes a paginated list of the custom roles that you have assigned to the team.
* `projects` includes a paginated list of the projects that the team has any write access to.
* `maintainers` includes a paginated list of the maintainers that you have assigned to the team.

For example, `expand=members,roles` includes the `members` and `roles` fields in the response.
66:T8dd,Perform a partial update to multiple teams. Updating teams uses the semantic patch format.

To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating teams.

<details>
<summary>Click to expand instructions for <strong>updating teams</strong></summary>

#### addMembersToTeams

Add the members to teams.

##### Parameters

- `memberIDs`: List of member IDs to add.
- `teamKeys`: List of teams to update.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addMembersToTeams",
    "memberIDs": [
      "1234a56b7c89d012345e678f"
    ],
    "teamKeys": [
      "example-team-1",
      "example-team-2"
    ]
  }]
}
```

#### addAllMembersToTeams

Add all members to the team. Members that match any of the filters are **excluded** from the update.

##### Parameters

- `teamKeys`: List of teams to update.
- `filterLastSeen`: (Optional) A JSON object with one of the following formats:
  - `{"never": true}` - Members that have never been active, such as those who have not accepted their invitation to LaunchDarkly, or have not logged in after being provisioned via SCIM.
  - `{"noData": true}` - Members that have not been active since LaunchDarkly began recording last seen timestamps.
  - `{"before": 1608672063611}` - Members that have not been active since the provided value, which should be a timestamp in Unix epoch milliseconds.
- `filterQuery`: (Optional) A string that matches against the members' emails and names. It is not case sensitive.
- `filterRoles`: (Optional) A `|` separated list of roles and custom roles. For the purposes of this filtering, `Owner` counts as `Admin`.
- `filterTeamKey`: (Optional) A string that matches against the key of the team the members belong to. It is not case sensitive.
- `ignoredMemberIDs`: (Optional) A list of member IDs.

Here's an example:

```json
{
  "instructions": [{
    "kind": "addAllMembersToTeams",
    "teamKeys": [
      "example-team-1",
      "example-team-2"
    ],
    "filterLastSeen": { "never": true }
  }]
}
```

</details>
67:T7d1,Schedule the specified user for removal from individual targeting on one or more flags. The user must already be individually targeted for each flag.

You can add, update, or remove a scheduled removal date. You can only schedule a user for removal on a single variation per flag.

Updating an expiring target uses the semantic patch format. To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](/api/overview#updates-using-semantic-patch).

### Instructions

Semantic patch requests support the following `kind` instructions for updating expiring user targets.

<details>
<summary>Click to expand instructions for <strong>updating expiring user targets</strong></summary>

#### addExpireUserTargetDate

Adds a date and time that LaunchDarkly will remove the user from the flag's individual targeting.

##### Parameters

* `flagKey`: The flag key
* `variationId`: ID of a variation on the flag
* `value`: The time, in Unix milliseconds, when LaunchDarkly should remove the user from individual targeting for this flag.

#### updateExpireUserTargetDate

Updates the date and time that LaunchDarkly will remove the user from the flag's individual targeting.

##### Parameters

* `flagKey`: The flag key
* `variationId`: ID of a variation on the flag
* `value`: The time, in Unix milliseconds, when LaunchDarkly should remove the user from individual targeting for this flag.
* `version`: The version of the expiring user target to update. If included, update will fail if version doesn't match current version of the expiring user target.

#### removeExpireUserTargetDate

Removes the scheduled removal of the user from the flag's individual targeting. The user will remain part of the flag's individual targeting until explicitly removed, or until another removal is scheduled.

##### Parameters

* `flagKey`: The flag key
* `variationId`: ID of a variation on the flag

</details>
68:T10e1,> ### Workflows are in maintenance mode
>
> The workflows feature is in maintenance mode, and is planned for future deprecation at a date not yet specified. We will work with existing customers using workflows to migrate to a replacement solution when deprecation occurs.

Create a workflow for a feature flag. You can create a workflow directly, or you can apply a template to create a new workflow.

### Creating a workflow

You can use the create workflow endpoint to create a workflow directly by adding a `stages` array to the request body.

For each stage, define the `name`, `conditions` when the stage should be executed, and `action` that describes the stage. For approval stages, only standard LaunchDarkly approvals are permitted. Workflows of `kind` `integration-approval` cannot be used for custom workflows. 

<details>
<summary>Click to expand example</summary>

_Example request body_
```json
{
  "name": "Progressive rollout starting in two days",
  "description": "Turn flag targeting on and increase feature rollout in 10% increments each day",
  "stages": [
    {
      "name": "10% rollout on day 1",
      "conditions": [
        {
          "kind": "schedule",
          "scheduleKind": "relative", // or "absolute"
              //  If "scheduleKind" is "absolute", set "executionDate";
              // "waitDuration" and "waitDurationUnit" will be ignored
          "waitDuration": 2,
          "waitDurationUnit": "calendarDay"
        },
        {
          "kind": "ld-approval",
          "notifyMemberIds": [ "507f1f77bcf86cd799439011" ],
          "notifyTeamKeys": [ "team-key-123abc" ]
        }
      ],
      "action": {
        "instructions": [
          {
            "kind": "turnFlagOn"
          },
          {
            "kind": "updateFallthroughVariationOrRollout",
            "rolloutWeights": {
              "452f5fb5-7320-4ba3-81a1-8f4324f79d49": 90000,
              "fc15f6a4-05d3-4aa4-a997-446be461345d": 10000
            }
          }
        ]
      }
    }
  ]
}
```
</details>

### Creating a workflow by applying a workflow template

You can also create a workflow by applying a workflow template. If you pass a valid workflow template key as the `templateKey` query parameter with the request, the API will attempt to create a new workflow with the stages defined in the workflow template with the corresponding key.

#### Applicability of stages
Templates are created in the context of a particular flag in a particular environment in a particular project. However, because workflows created from a template can be applied to any project, environment, and flag, some steps of the workflow may need to be updated in order to be applicable for the target resource.

You can pass a `dryRun` query parameter to tell the API to return a report of which steps of the workflow template are applicable in the target project/environment/flag, and which will need to be updated. When the `dryRun` query parameter is present the response body includes a `meta` property that holds a list of parameters that could potentially be inapplicable for the target resource. Each of these parameters will include a `valid` field. You will need to update any invalid parameters in order to create the new workflow. You can do this using the `parameters` property, which overrides the workflow template parameters.

#### Overriding template parameters
You can use the `parameters` property in the request body to tell the API to override the specified workflow template parameters with new values that are specific to your target project/environment/flag.

<details>
<summary>Click to expand example</summary>

_Example request body_
```json
{
	"name": "workflow created from my-template",
	"description": "description of my workflow",
	"parameters": [
		{
			"_id": "62cf2bc4cadbeb7697943f3b",
			"path": "/clauses/0/values",
			"default": {
				"value": ["updated-segment"]
			}
		},
		{
			"_id": "62cf2bc4cadbeb7697943f3d",
			"path": "/variationId",
			"default": {
				"value": "abcd1234-abcd-1234-abcd-1234abcd12"
			}
		}
	]
}
```
</details>

If there are any steps in the template that are not applicable to the target resource, the workflow will not be created, and the `meta` property will be included in the response body detailing which parameters need to be updated.
1a:["$","$L43",null,{"scopedNav":{"global":null,"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/home"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides"}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdk"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"API docs","pages":[{"group":" ","pages":[{"title":"REST API overview","description":null,"href":"/api/overview"},{"group":"Access tokens","root":{"title":"Access tokens","description":null,"href":"/api/access-tokens"},"pages":[{"title":"Create access token","description":"Create a new access token.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/tokens","href":"/api/access-tokens/create-access-token","autogeneratedByOpenApi":true},{"title":"Delete access token","description":"Delete an access token by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/tokens/{id}","href":"/api/access-tokens/delete-access-token","autogeneratedByOpenApi":true},{"title":"Get access token","description":"Get a single access token by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/tokens/{id}","href":"/api/access-tokens/get-access-token","autogeneratedByOpenApi":true},{"title":"List access tokens","description":"Fetch a list of all access tokens.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/tokens","href":"/api/access-tokens/list-access-tokens","autogeneratedByOpenApi":true},{"title":"Patch access token","description":"Update an access token's settings. Updating an access token uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/tokens/{id}","href":"/api/access-tokens/patch-access-token","autogeneratedByOpenApi":true},{"title":"Reset access token (legacy)","description":"Reset an access token's secret key with an optional expiry time for the old key. Use of this legacy handler is discouraged. Patch the `expiry` field on the token directly instead.","deprecated":true,"version":null,"openapi":"/api/openapi.json post /api/v2/tokens/{id}/reset","href":"/api/access-tokens/reset-access-token-legacy","autogeneratedByOpenApi":true}]},{"group":"Account members","root":{"title":"Account members","description":null,"href":"/api/account-members"},"pages":[{"title":"Add a member to teams","description":"Add one member to one or more teams.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/members/{id}/teams","href":"/api/account-members/add-a-member-to-teams","autogeneratedByOpenApi":true},{"title":"Delete account member","description":"Delete a single account member by ID. Requests to delete account members will not work if SCIM is enabled for the account.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/members/{id}","href":"/api/account-members/delete-account-member","autogeneratedByOpenApi":true},{"title":"Get account member","description":"Get a single account member by member ID.\n\n`me` is a reserved value for the `id` parameter that returns the caller's member information.\n\n### Expanding the member response\nLaunchDarkly supports the following fields for expanding the \"Get member\" response. By default, these fields are **not** included in the response.\n\nTo expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:\n\n* `customRoles` includes details on each custom role assigned to the member, including the role key, name, and ID.\n* `roleAttributes` includes a list of the role attributes that you have assigned to the member.\n\nFor example, `expand=customRoles,roleAttributes` includes both the `customRolesInfo` and `roleAttributes` fields in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/members/{id}","href":"/api/account-members/get-account-member","autogeneratedByOpenApi":true},{"title":"Invite new members","description":"$44","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/members","href":"/api/account-members/invite-new-members","autogeneratedByOpenApi":true},{"title":"List account members","description":"$45","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/members","href":"/api/account-members/list-account-members","autogeneratedByOpenApi":true},{"title":"Modify account members","description":"$46","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/members","href":"/api/account-members/modify-account-members","autogeneratedByOpenApi":true},{"title":"Modify an account member","description":"\nUpdate a single account member. Updating a member uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).\n\nTo update fields in the account member object that are arrays, set the `path` to the name of the field and then append `/<array index>`. Use `/0` to add to the beginning of the array. Use `/-` to add to the end of the array. For example, to add a new custom role to a member, use the following request body:\n\n```\n  [\n    {\n      \"op\": \"add\",\n      \"path\": \"/customRoles/0\",\n      \"value\": \"some-role-id\"\n    }\n  ]\n```\n\nYou can update only an account member's role or custom role using a JSON patch. Members can update their own names and email addresses though the LaunchDarkly UI.\n\nWhen SAML SSO or SCIM is enabled for the account, account members are managed in the Identity Provider (IdP). Requests to update account members will succeed, but the IdP will override the update shortly afterwards.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/members/{id}","href":"/api/account-members/modify-an-account-member","autogeneratedByOpenApi":true}]},{"group":"Account usage (beta)","root":{"title":"Account usage (beta)","description":null,"href":"/api/account-usage"},"pages":[{"title":"Get AI runs usage","description":"Get a time series array showing the number of AI runs recorded for your account. The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/ai-runs","href":"/api/account-usage-beta/get-ai-runs-usage","autogeneratedByOpenApi":true},{"title":"Get contexts clientside usage","description":"Get a detailed time series of the number of context key usages observed by LaunchDarkly in your account, including non-primary context kinds. Use this for breakdowns that go beyond the primary-only aggregation of MAU endpoints. The counts reflect data reported by client-side SDKs.<br/><br/>The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/clientside-contexts","href":"/api/account-usage-beta/get-contexts-clientside-usage","autogeneratedByOpenApi":true},{"title":"Get contexts serverside usage","description":"Get a detailed time series of the number of context key usages observed by LaunchDarkly in your account, including non-primary context kinds. Use this for breakdowns that go beyond the primary-only aggregation of MAU endpoints. The counts reflect data reported by server-side SDKs.<br/><br/>The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/serverside-contexts","href":"/api/account-usage-beta/get-contexts-serverside-usage","autogeneratedByOpenApi":true},{"title":"Get contexts total usage","description":"Get a detailed time series of the number of context key usages observed by LaunchDarkly in your account, including non-primary context kinds. Use this for breakdowns that go beyond the primary-only aggregation of MAU endpoints.<br/><br/>The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/total-contexts","href":"/api/account-usage-beta/get-contexts-total-usage","autogeneratedByOpenApi":true},{"title":"Get data export events usage","description":"Get a time series array showing the number of data export events from your account. The supported granularity varies by aggregation type. The maximum time range is 365 days. `groupBy=projectId` resolves legacy rows through the account's current environment-to-project mapping and returns `409` instead of a partial series when any successful row remains unattributed. Plain project filtering keeps its current-environment compatibility behavior.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/data-export-events","href":"/api/account-usage-beta/get-data-export-events-usage","autogeneratedByOpenApi":true},{"title":"Rank Streaming usage by project","description":"Rank projects with usage in the requested range by successful Streaming transfers. Legacy rows are attributed through the account's complete current environment-to-project mapping. If any successful row remains unattributed after resolution, the operation returns `409` instead of a partial ranking. The result limit does not cap the account-wide project universe or environment mapping. This source-specific operation does not provide Combined or Warehouse ranking.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/data-export-events/projects/ranking","href":"/api/account-usage-beta/rank-streaming-usage-by-project","autogeneratedByOpenApi":true},{"title":"Get evaluations usage","description":"Get time-series arrays of the number of times a flag is evaluated, broken down by the variation that resulted from that evaluation. The granularity of the returned data depends on the length of the requested time range: ranges shorter than two hours return minutely data, ranges shorter than two days return hourly data, and ranges of two days or longer return daily data. Minutely data is retained for 70 days; a range shorter than two hours that starts before then is returned at hourly granularity instead, with the start of the range widened to the containing hour. Ranges that predate available data return an empty series list. If a flag has served many distinct variation values in the requested range, the least recently seen values may be aggregated into a single additional series labeled \"Other Variations\".","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/evaluations/{projectKey}/{environmentKey}/{featureFlagKey}","href":"/api/account-usage-beta/get-evaluations-usage","autogeneratedByOpenApi":true},{"title":"Get events usage","description":"Get time-series arrays of the number of times a flag is evaluated, broken down by the variation that resulted from that evaluation. The granularity of the data depends on the age of the data requested. If the requested range is within the past two hours, minutely data is returned. If it is within the last two days, hourly data is returned. Otherwise, daily data is returned.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/events/{type}","href":"/api/account-usage-beta/get-events-usage","autogeneratedByOpenApi":true},{"title":"Get experimentation events usage","description":"Get a time series array showing the number of experimentation events from your account. The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/experimentation-events","href":"/api/account-usage-beta/get-experimentation-events-usage","autogeneratedByOpenApi":true},{"title":"Get experimentation keys usage","description":"Get a time series array showing the number of experimentation keys from your account. The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/experimentation-keys","href":"/api/account-usage-beta/get-experimentation-keys-usage","autogeneratedByOpenApi":true},{"title":"Get MAU clientside usage","description":"Get a time series of the number of context key usages observed by LaunchDarkly in your account, for the primary context kind only. The counts reflect data reported from client-side SDKs.<br/><br/>For past months, the primary context kind is fixed and reflects the last known primary kind for that month. For the current month, it may vary as new primary context kinds are observed.<br/><br/>The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/clientside-mau","href":"/api/account-usage-beta/get-mau-clientside-usage","autogeneratedByOpenApi":true},{"title":"Get MAU SDKs by type","description":"Get a list of SDKs. These are all of the SDKs that have connected to LaunchDarkly by monthly active users (MAU) in the requested time period.<br/><br/>Endpoints for retrieving monthly active users (MAU) do not return information about active context instances. After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should not rely on this endpoint. To learn more, read [Account usage metrics](/home/account/metrics).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/mau/sdks","href":"/api/account-usage-beta/get-mau-sdks-by-type","autogeneratedByOpenApi":true},{"title":"Get MAU total usage","description":"Get a time series of the number of context key usages observed by LaunchDarkly in your account, for the primary context kind only.<br/><br/>For past months, this reflects the context kind that was most recently marked as primary for that month. For the current month, the context kind may vary as new primary kinds are observed.<br/><br/>The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/total-mau","href":"/api/account-usage-beta/get-mau-total-usage","autogeneratedByOpenApi":true},{"title":"Get MAU usage","description":"Get a time-series array of the number of monthly active users (MAU) seen by LaunchDarkly from your account. The granularity is always daily.<br/><br/>Endpoints for retrieving monthly active users (MAU) do not return information about active context instances. After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should not rely on this endpoint. To learn more, read [Account usage metrics](/home/account/metrics).","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/mau","href":"/api/account-usage-beta/get-mau-usage","autogeneratedByOpenApi":true},{"title":"Get MAU usage by category","description":"Get time-series arrays of the number of monthly active users (MAU) seen by LaunchDarkly from your account, broken down by the category of users. The category is either `browser`, `mobile`, or `backend`.<br/><br/>Endpoints for retrieving monthly active users (MAU) do not return information about active context instances. After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should not rely on this endpoint. To learn more, read [Account usage metrics](/home/account/metrics).","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/mau/bycategory","href":"/api/account-usage-beta/get-mau-usage-by-category","autogeneratedByOpenApi":true},{"title":"Get observability errors usage","description":"Get time-series arrays of the number of observability errors. Supports `daily` and `monthly` granularity.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/observability/errors","href":"/api/account-usage-beta/get-observability-errors-usage","autogeneratedByOpenApi":true},{"title":"Get observability logs usage","description":"Get time-series arrays of the number of observability logs. Supports `daily` and `monthly` granularity.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/observability/logs","href":"/api/account-usage-beta/get-observability-logs-usage","autogeneratedByOpenApi":true},{"title":"Get observability metrics usage","description":"Get time-series arrays of the number of observability metrics. Supports `hourly`, `daily`, and `monthly` granularity.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/observability/metrics","href":"/api/account-usage-beta/get-observability-metrics-usage","autogeneratedByOpenApi":true},{"title":"Get observability sessions usage","description":"Get time-series arrays of the number of observability sessions. Supports `daily` and `monthly` granularity.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/observability/sessions","href":"/api/account-usage-beta/get-observability-sessions-usage","autogeneratedByOpenApi":true},{"title":"Get observability traces usage","description":"Get time-series arrays of the number of observability traces. Supports `daily` and `monthly` granularity.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/observability/traces","href":"/api/account-usage-beta/get-observability-traces-usage","autogeneratedByOpenApi":true},{"title":"Get SDK versions usage details","description":"Get detailed SDK version usage data for your account, including version information, EOL status, and relay proxy metadata. Refreshed hourly, returns the max version for each SDK observed in the last 24 hours, including those without EOL metadata available.<br/><br/>This endpoint provides comprehensive information about SDK versions in use across your projects and environments.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/sdk-versions/details","href":"/api/account-usage-beta/get-sdk-versions-usage-details","autogeneratedByOpenApi":true},{"title":"Get service connections usage","description":"Get a time series array showing the number of service connection minutes from your account. The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/service-connections","href":"/api/account-usage-beta/get-service-connections-usage","autogeneratedByOpenApi":true},{"title":"Get stream usage","description":"Get a time-series array of the number of streaming connections to LaunchDarkly in each time period. The granularity of the data depends on the age of the data requested. If the requested range is within the past two hours, minutely data is returned. If it is within the last two days, hourly data is returned. Otherwise, daily data is returned.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/streams/{source}","href":"/api/account-usage-beta/get-stream-usage","autogeneratedByOpenApi":true},{"title":"Get stream usage by SDK version","description":"Get multiple series of the number of streaming connections to LaunchDarkly in each time period, separated by SDK type and version. Information about each series is in the metadata array. The granularity of the data depends on the age of the data requested. If the requested range is within the past 2 hours, minutely data is returned. If it is within the last two days, hourly data is returned. Otherwise, daily data is returned.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/streams/{source}/bysdkversion","href":"/api/account-usage-beta/get-stream-usage-by-sdk-version","autogeneratedByOpenApi":true},{"title":"Get stream usage SDK versions","description":"Get a list of SDK version objects, which contain an SDK name and version. These are all of the SDKs that have connected to LaunchDarkly from your account in the past 60 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/streams/{source}/sdkversions","href":"/api/account-usage-beta/get-stream-usage-sdk-versions","autogeneratedByOpenApi":true},{"title":"Get usage details for all SDK versions","description":"Get detailed SDK version usage data for all versions observed in the last 24 hours in your account. Unlike the `/details` endpoint which returns only the max version per SDK, this endpoint returns all SDK versions for the specified filters. This data is refreshed hourly.<br/><br/>All query parameters are optional, allowing you to filter results as broadly or narrowly as needed.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/sdk-versions/all","href":"/api/account-usage-beta/get-usage-details-for-all-sdk-versions","autogeneratedByOpenApi":true},{"title":"Get Vega AI usage","description":"Get time-series arrays of the number of Vega AI usage. Supports `daily` and `monthly` granularity.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/vega-ai","href":"/api/account-usage-beta/get-vega-ai-usage","autogeneratedByOpenApi":true},{"title":"Get warehouse Data Export usage","description":"Get a time series array showing the number of rows exported to your warehouse Data Export destinations. The supported granularity varies by aggregation type. The maximum time range is 365 days.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/usage/warehouse-export","href":"/api/account-usage-beta/get-warehouse-data-export-usage","autogeneratedByOpenApi":true}]},{"group":"Adaptive triggers","root":{"title":"Adaptive triggers","description":null,"href":"/api/adaptive-triggers"},"pages":[{"title":"List adaptive triggers","description":"List all adaptive triggers for a resource.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/adaptive-triggers","href":"/api/adaptive-triggers/list-adaptive-triggers","autogeneratedByOpenApi":true},{"title":"Create an adaptive trigger","description":"Create a new adaptive trigger for a resource.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/adaptive-triggers","href":"/api/adaptive-triggers/create-an-adaptive-trigger","autogeneratedByOpenApi":true},{"title":"Delete an adaptive trigger","description":"Delete a single adaptive trigger.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/environments/{environmentKey}/adaptive-triggers/{triggerID}","href":"/api/adaptive-triggers/delete-an-adaptive-trigger","autogeneratedByOpenApi":true},{"title":"Get an adaptive trigger","description":"Get a single adaptive trigger.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/adaptive-triggers/{triggerID}","href":"/api/adaptive-triggers/get-an-adaptive-trigger","autogeneratedByOpenApi":true},{"title":"Update an adaptive trigger","description":"Update a single adaptive trigger.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/environments/{environmentKey}/adaptive-triggers/{triggerID}","href":"/api/adaptive-triggers/update-an-adaptive-trigger","autogeneratedByOpenApi":true},{"title":"Enable an adaptive trigger","description":"Enable an adaptive trigger.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/adaptive-triggers/{triggerID}/enable","href":"/api/adaptive-triggers/enable-an-adaptive-trigger","autogeneratedByOpenApi":true},{"title":"Disable an adaptive trigger","description":"Disable an adaptive trigger.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/adaptive-triggers/{triggerID}/disable","href":"/api/adaptive-triggers/disable-an-adaptive-trigger","autogeneratedByOpenApi":true}]},{"group":"AgentControl","root":{"title":"AgentControl","description":null,"href":"/api/agentcontrol"},"pages":[{"title":"Add AI models to the restricted list","description":"Add AI models, by key, to the restricted list. Keys are included in the response from the [List AI model configs](/api/agentcontrol/list-ai-model-configs) endpoint.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/ai-configs/model-configs/restricted","href":"/api/agentcontrol/add-ai-models-to-the-restricted-list","autogeneratedByOpenApi":true},{"title":"Create a prompt snippet","description":"Create a new prompt snippet within the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/ai-configs/prompt-snippets","href":"/api/agentcontrol/create-a-prompt-snippet","autogeneratedByOpenApi":true},{"title":"Create agent optimization","description":"Create a new agent optimization within the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/agent-optimizations","href":"/api/agentcontrol/create-agent-optimization","autogeneratedByOpenApi":true},{"title":"Create agent optimization result","description":"Create a new result for an agent optimization run.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/results","href":"/api/agentcontrol/create-agent-optimization-result","autogeneratedByOpenApi":true},{"title":"Create AI Config variation","description":"Create a new variation for a given AI Config.\n\nThe <code>model</code> in the request body requires a <code>modelName</code> and <code>parameters</code>, for example:\n\n```\n  \"model\": {\n    \"modelName\": \"claude-3-opus-20240229\",\n    \"parameters\": {\n      \"max_tokens\": 1024\n    }\n  }\n```\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations","href":"/api/agentcontrol/create-ai-config-variation","autogeneratedByOpenApi":true},{"title":"Create an agent skill","description":"Create a new agent skill within the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/ai-configs/skills","href":"/api/agentcontrol/create-an-agent-skill","autogeneratedByOpenApi":true},{"title":"Create an AI model config","description":"Create an AI model config. You can use this in any variation for any config in your project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/ai-configs/model-configs","href":"/api/agentcontrol/create-an-ai-model-config","autogeneratedByOpenApi":true},{"title":"Create an AI tool","description":"Create an AI tool","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/ai-tools","href":"/api/agentcontrol/create-an-ai-tool","autogeneratedByOpenApi":true},{"title":"Create new agent graph","description":"Create a new agent graph within the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/agent-graphs","href":"/api/agentcontrol/create-new-agent-graph","autogeneratedByOpenApi":true},{"title":"Create new AI Config","description":"Create a new AI Config within the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/ai-configs","href":"/api/agentcontrol/create-new-ai-config","autogeneratedByOpenApi":true},{"title":"Delete a prompt snippet","description":"Delete an existing prompt snippet.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}","href":"/api/agentcontrol/delete-a-prompt-snippet","autogeneratedByOpenApi":true},{"title":"Delete agent graph","description":"Delete an existing agent graph and all of its edges.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/agent-graphs/{graphKey}","href":"/api/agentcontrol/delete-agent-graph","autogeneratedByOpenApi":true},{"title":"Delete AI Config","description":"Delete an existing AI Config.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/ai-configs/{configKey}","href":"/api/agentcontrol/delete-ai-config","autogeneratedByOpenApi":true},{"title":"Delete AI Config variation","description":"Delete a specific variation of an AI Config by config key and variation key.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations/{variationKey}","href":"/api/agentcontrol/delete-ai-config-variation","autogeneratedByOpenApi":true},{"title":"Delete AI tool","description":"Delete an existing AI tool.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/ai-tools/{toolKey}","href":"/api/agentcontrol/delete-ai-tool","autogeneratedByOpenApi":true},{"title":"Delete an agent optimization","description":"Delete an existing agent optimization.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}","href":"/api/agentcontrol/delete-an-agent-optimization","autogeneratedByOpenApi":true},{"title":"Delete an agent optimization run","description":"Delete all results for a specific run of an agent optimization. Returns a 404 if the optimization does not exist or if the run has no results. A run whose results have already been deleted is indistinguishable from a run that never existed, so repeating this request also returns a 404.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/runs/{runId}","href":"/api/agentcontrol/delete-an-agent-optimization-run","autogeneratedByOpenApi":true},{"title":"Delete an agent skill","description":"Delete an agent skill, including all of its versions.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/ai-configs/skills/{skillKey}","href":"/api/agentcontrol/delete-an-agent-skill","autogeneratedByOpenApi":true},{"title":"Delete an AI model config","description":"Delete an AI model config.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/ai-configs/model-configs/{modelConfigKey}","href":"/api/agentcontrol/delete-an-ai-model-config","autogeneratedByOpenApi":true},{"title":"Get a prompt snippet","description":"Retrieve a specific prompt snippet by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}","href":"/api/agentcontrol/get-a-prompt-snippet","autogeneratedByOpenApi":true},{"title":"Get agent graph","description":"Retrieve a specific agent graph by its key, including its edges.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-graphs/{graphKey}","href":"/api/agentcontrol/get-agent-graph","autogeneratedByOpenApi":true},{"title":"Get AI Config","description":"Retrieve a specific AI Config by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/{configKey}","href":"/api/agentcontrol/get-ai-config","autogeneratedByOpenApi":true},{"title":"Get AI Config metrics","description":"Retrieve usage metrics for an AI Config by config key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/{configKey}/metrics","href":"/api/agentcontrol/get-ai-config-metrics","autogeneratedByOpenApi":true},{"title":"Get AI Config metrics by variation","description":"Retrieve usage metrics for an AI Config by config key, with results split by variation.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/{configKey}/metrics-by-variation","href":"/api/agentcontrol/get-ai-config-metrics-by-variation","autogeneratedByOpenApi":true},{"title":"Get AI Config quick stats","description":"Retrieve aggregate quick stats for AI Configs in a project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/quick-stats","href":"/api/agentcontrol/get-ai-config-quick-stats","autogeneratedByOpenApi":true},{"title":"Get AI Config variation","description":"Get an AI Config variation by key. The response includes all variation versions for the given variation key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations/{variationKey}","href":"/api/agentcontrol/get-ai-config-variation","autogeneratedByOpenApi":true},{"title":"Get AI model config","description":"Get an AI model config by key. Specify a version to retrieve a historical custom model config version. Global model configs accept version 0 or 1 and return their current representation.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/model-configs/{modelConfigKey}","href":"/api/agentcontrol/get-ai-model-config","autogeneratedByOpenApi":true},{"title":"Get AI tool","description":"Retrieve a specific AI tool by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-tools/{toolKey}","href":"/api/agentcontrol/get-ai-tool","autogeneratedByOpenApi":true},{"title":"Get an agent optimization","description":"Retrieve a specific agent optimization by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}","href":"/api/agentcontrol/get-an-agent-optimization","autogeneratedByOpenApi":true},{"title":"Get an agent skill","description":"Retrieve a specific agent skill by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/skills/{skillKey}","href":"/api/agentcontrol/get-an-agent-skill","autogeneratedByOpenApi":true},{"title":"List agent graphs","description":"Get a list of all agent graphs in the given project. Returns metadata only, without edge data.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-graphs","href":"/api/agentcontrol/list-agent-graphs","autogeneratedByOpenApi":true},{"title":"List agent optimization results for a run","description":"Get all results for a specific run of an agent optimization, sorted by iteration descending.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/runs/{runId}/results","href":"/api/agentcontrol/list-agent-optimization-results-for-a-run","autogeneratedByOpenApi":true},{"title":"List latest agent optimization result per run","description":"Get the most recent result for each unique run of an agent optimization.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/results","href":"/api/agentcontrol/list-latest-agent-optimization-result-per-run","autogeneratedByOpenApi":true},{"title":"List agent optimizations","description":"Get a list of all agent optimizations in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-optimizations","href":"/api/agentcontrol/list-agent-optimizations","autogeneratedByOpenApi":true},{"title":"List agent skill references","description":"Get all config variations that currently reference this agent skill.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/skills/{skillKey}/references","href":"/api/agentcontrol/list-agent-skill-references","autogeneratedByOpenApi":true},{"title":"List agent skill versions","description":"Get all versions of an agent skill in the given project, ordered by version descending.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/skills/{skillKey}/versions","href":"/api/agentcontrol/list-agent-skill-versions","autogeneratedByOpenApi":true},{"title":"List agent skills","description":"Get a list of all agent skills in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/skills","href":"/api/agentcontrol/list-agent-skills","autogeneratedByOpenApi":true},{"title":"List AI Configs","description":"Get a list of all AI Configs in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs","href":"/api/agentcontrol/list-ai-configs","autogeneratedByOpenApi":true},{"title":"List AI model config versions","description":"Get a paginated list of all available versions of an AI model config, ordered from newest to oldest. Global model configs return their single current representation.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/model-configs/{modelConfigKey}/versions","href":"/api/agentcontrol/list-ai-model-config-versions","autogeneratedByOpenApi":true},{"title":"List AI model configs","description":"Get all AI model configs for a project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/model-configs","href":"/api/agentcontrol/list-ai-model-configs","autogeneratedByOpenApi":true},{"title":"List AI tool versions","description":"Get a list of all versions of an AI tool in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-tools/{toolKey}/versions","href":"/api/agentcontrol/list-ai-tool-versions","autogeneratedByOpenApi":true},{"title":"List AI tools","description":"Get a list of all AI tools in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-tools","href":"/api/agentcontrol/list-ai-tools","autogeneratedByOpenApi":true},{"title":"List all agent optimization results across versions","description":"Get all results across all versions of an agent optimization.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/all-results","href":"/api/agentcontrol/list-all-agent-optimization-results-across-versions","autogeneratedByOpenApi":true},{"title":"List prompt snippet references","description":"Get all config variations that currently reference this prompt snippet.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}/references","href":"/api/agentcontrol/list-prompt-snippet-references","autogeneratedByOpenApi":true},{"title":"List prompt snippet versions","description":"Get all versions of a prompt snippet in the given project, ordered by version descending.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}/versions","href":"/api/agentcontrol/list-prompt-snippet-versions","autogeneratedByOpenApi":true},{"title":"List prompt snippets","description":"Get a list of all prompt snippets in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/prompt-snippets","href":"/api/agentcontrol/list-prompt-snippets","autogeneratedByOpenApi":true},{"title":"Remove AI models from the restricted list","description":"Remove AI models, by key, from the restricted list.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/ai-configs/model-configs/restricted","href":"/api/agentcontrol/remove-ai-models-from-the-restricted-list","autogeneratedByOpenApi":true},{"title":"Show an AI Config's targeting","description":"Retrieves a specific AI Config's targeting by its key","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting","href":"/api/agentcontrol/show-an-ai-configs-targeting","autogeneratedByOpenApi":true},{"title":"Update a prompt snippet","description":"Update an existing prompt snippet. Creates a new version of the snippet.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}","href":"/api/agentcontrol/update-a-prompt-snippet","autogeneratedByOpenApi":true},{"title":"Update agent graph","description":"Edit an existing agent graph.\n\nThe request body must be a JSON object of the fields to update. The values you include replace the existing values for the fields.\n\nIf the update includes `rootConfigKey` or `edges`, both must be present and will be treated as full replacements.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/agent-graphs/{graphKey}","href":"/api/agentcontrol/update-agent-graph","autogeneratedByOpenApi":true},{"title":"Update AI Config","description":"Edit an existing AI Config.\n\nThe request body must be a JSON object of the fields to update. The values you include replace the existing values for the fields.\n\nHere's an example:\n  ```\n    {\n      \"description\": \"Example updated description\",\n      \"tags\": [\"new-tag\"]\n    }\n  ```\n","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/ai-configs/{configKey}","href":"/api/agentcontrol/update-ai-config","autogeneratedByOpenApi":true},{"title":"Update AI Config targeting","description":"$47","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting","href":"/api/agentcontrol/update-ai-config-targeting","autogeneratedByOpenApi":true},{"title":"Update AI Config variation","description":"Edit an existing variation of an AI Config. This creates a new version of the variation.\n\nThe request body must be a JSON object of the fields to update. The values you include replace the existing values for the fields.\n\nIf the variation is in use in a project environment where approval settings require review for this AI Config, this endpoint returns 403 and the change must be submitted through an approval request.\n\nHere's an example:\n```\n  {\n    \"messages\": [\n      {\n        \"role\": \"system\",\n        \"content\": \"The new message\"\n      }\n    ]\n  }\n```\n","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations/{variationKey}","href":"/api/agentcontrol/update-ai-config-variation","autogeneratedByOpenApi":true},{"title":"Update AI tool","description":"Edit an existing AI tool.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/ai-tools/{toolKey}","href":"/api/agentcontrol/update-ai-tool","autogeneratedByOpenApi":true},{"title":"Update an agent optimization","description":"Update an existing agent optimization. Creates a new version of the optimization.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}","href":"/api/agentcontrol/update-an-agent-optimization","autogeneratedByOpenApi":true},{"title":"Update an agent optimization result","description":"Update status, activity, and AI request metadata fields on an agent optimization result.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/results/{resultId}","href":"/api/agentcontrol/update-an-agent-optimization-result","autogeneratedByOpenApi":true},{"title":"Update an agent skill","description":"Update an existing agent skill. Creates a new version of the skill.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/ai-configs/skills/{skillKey}","href":"/api/agentcontrol/update-an-agent-skill","autogeneratedByOpenApi":true},{"title":"Update an AI model config","description":"Update an AI model config.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/ai-configs/model-configs/{modelConfigKey}","href":"/api/agentcontrol/update-an-ai-model-config","autogeneratedByOpenApi":true},{"title":"List agent optimization runs","description":"Get one run summary per distinct run_id across all versions of an agent optimization config, ordered by created_at DESC.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/runs","href":"/api/agentcontrol/list-agent-optimization-runs","autogeneratedByOpenApi":true},{"title":"List AI tool references","description":"Get all AgentControl config variations that currently reference this tool.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/ai-tools/{toolKey}/references","href":"/api/agentcontrol/list-ai-tool-references","autogeneratedByOpenApi":true}]},{"group":"Announcements","root":{"title":"Announcements","description":null,"href":"/api/announcements"},"pages":[{"title":"Create an announcement","description":"Create an announcement","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/announcements","href":"/api/announcements/create-an-announcement","autogeneratedByOpenApi":true},{"title":"Delete an announcement","description":"Delete an announcement","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/announcements/{announcementId}","href":"/api/announcements/delete-an-announcement","autogeneratedByOpenApi":true},{"title":"Get announcements","description":"Get announcements","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/announcements","href":"/api/announcements/get-announcements","autogeneratedByOpenApi":true},{"title":"Update an announcement","description":"Update an announcement","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/announcements/{announcementId}","href":"/api/announcements/update-an-announcement","autogeneratedByOpenApi":true}]},{"group":"Applications (beta)","root":{"title":"Applications (beta)","description":null,"href":"/api/applications"},"pages":[{"title":"Delete application","description":"Delete an application.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/applications/{applicationKey}","href":"/api/applications-beta/delete-application","autogeneratedByOpenApi":true},{"title":"Delete application version","description":"Delete an application version.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/applications/{applicationKey}/versions/{versionKey}","href":"/api/applications-beta/delete-application-version","autogeneratedByOpenApi":true},{"title":"Get application by key","description":"\nRetrieve an application by the application key.\n\n### Expanding the application response\n\nLaunchDarkly supports expanding the \"Get application\" response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `flags` includes details on the flags that have been evaluated by the application\n\nFor example, use `?expand=flags` to include the `flags` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/applications/{applicationKey}","href":"/api/applications-beta/get-application-by-key","autogeneratedByOpenApi":true},{"title":"Get application versions by application key","description":"Get a list of versions for a specific application in an account.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/applications/{applicationKey}/versions","href":"/api/applications-beta/get-application-versions-by-application-key","autogeneratedByOpenApi":true},{"title":"Get applications","description":"\nGet a list of applications.\n\n### Expanding the applications response\n\nLaunchDarkly supports expanding the \"Get applications\" response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `flags` includes details on the flags that have been evaluated by the application\n\nFor example, use `?expand=flags` to include the `flags` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/applications","href":"/api/applications-beta/get-applications","autogeneratedByOpenApi":true},{"title":"Update application","description":"Update an application. You can update the `description` and `kind` fields. Requires a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes to the application. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/applications/{applicationKey}","href":"/api/applications-beta/update-application","autogeneratedByOpenApi":true},{"title":"Update application version","description":"Update an application version. You can update the `supported` field. Requires a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes to the application version. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/applications/{applicationKey}/versions/{versionKey}","href":"/api/applications-beta/update-application-version","autogeneratedByOpenApi":true}]},{"group":"Approvals","root":{"title":"Approvals","description":null,"href":"/api/approvals"},"pages":[{"title":"Apply approval request","description":"Apply an approval request that has been approved. This endpoint works with any approval requests.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/approval-requests/{id}/apply","href":"/api/approvals/apply-approval-request","autogeneratedByOpenApi":true},{"title":"Apply approval request for a flag","description":"Apply an approval request that has been approved. This endpoint requires a feature flag key, and can only be used for applying approval requests on flags.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests/{id}/apply","href":"/api/approvals/apply-approval-request-for-a-flag","autogeneratedByOpenApi":true},{"title":"Create approval request","description":"Create an approval request.\n\nThis endpoint requires a list of `instructions`, in semantic patch format, that will be applied when the approval request is approved and applied.\n\n### Flags\n\nIf you are creating an approval request for a flag, you can use the following `instructions`:\n\n- `addVariation`\n- `removeVariation`\n- `updateVariation`\n- `updateDefaultVariation`\n\nFor details on using these instructions, read [Update feature flag](/api/feature-flags/update-feature-flag).\n\nTo create an approval for a flag specific to an environment, use [Create approval request for a flag](/api/approvals/create-approval-request-for-a-flag).\n\n### AgentControl\n\nIf you are creating an approval request for an AgentControl config, you can use the semantic patch instructions listed under [Update config targeting](/api/agentcontrol/update-ai-config-targeting).\n\n### Segments\n\nIf you are creating an approval request for a segment, you can use the semantic patch instructions listed under [Patch segment](/api/segments/patch-segment).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/approval-requests","href":"/api/approvals/create-approval-request","autogeneratedByOpenApi":true},{"title":"Create approval request for a flag","description":"Create an approval request for a feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests","href":"/api/approvals/create-approval-request-for-a-flag","autogeneratedByOpenApi":true},{"title":"Create approval request to copy flag configurations across environments","description":"Create an approval request to copy a feature flag's configuration across environments.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests-flag-copy","href":"/api/approvals/create-approval-request-to-copy-flag-configurations-across-environments","autogeneratedByOpenApi":true},{"title":"Delete approval request","description":"Delete an approval request.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/approval-requests/{id}","href":"/api/approvals/delete-approval-request","autogeneratedByOpenApi":true},{"title":"Delete approval request for a flag","description":"Delete an approval request for a feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests/{id}","href":"/api/approvals/delete-approval-request-for-a-flag","autogeneratedByOpenApi":true},{"title":"Get approval request","description":"Get an approval request by approval request ID.\n\n### Expanding approval response\n\nLaunchDarkly supports the `expand` query param to include additional fields in the response, with the following fields:\n\n- `environments` includes the environments the approval request relates to\n- `flag` includes the flag the approval request belongs to\n- `project` includes the project the approval request belongs to\n- `resource` includes details on the resource (flag or segment) the approval request relates to\n\nFor example, `expand=project,flag` includes the `project` and `flag` fields in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/approval-requests/{id}","href":"/api/approvals/get-approval-request","autogeneratedByOpenApi":true},{"title":"Get approval request for a flag","description":"Get a single approval request for a feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests/{id}","href":"/api/approvals/get-approval-request-for-a-flag","autogeneratedByOpenApi":true},{"title":"List approval requests","description":"$48","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/approval-requests","href":"/api/approvals/list-approval-requests","autogeneratedByOpenApi":true},{"title":"List approval requests for a flag","description":"Get all approval requests for a feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests","href":"/api/approvals/list-approval-requests-for-a-flag","autogeneratedByOpenApi":true},{"title":"Review approval request","description":"Review an approval request by approving or denying changes.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/approval-requests/{id}/reviews","href":"/api/approvals/review-approval-request","autogeneratedByOpenApi":true},{"title":"Review approval request for a flag","description":"Review an approval request by approving or denying changes.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests/{id}/reviews","href":"/api/approvals/review-approval-request-for-a-flag","autogeneratedByOpenApi":true}]},{"group":"Approvals (beta)","root":{"title":"Approvals (beta)","description":null,"href":"/api/beta"},"pages":[{"title":"Get approval request settings","description":"Get the approval request settings for the given project, optionally filtered by environment and resource kind.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/approval-requests/projects/{projectKey}/settings","href":"/api/approvals-beta/get-approval-request-settings","autogeneratedByOpenApi":true},{"title":"Update approval request","description":"$49","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/approval-requests/{id}","href":"/api/approvals-beta/update-approval-request","autogeneratedByOpenApi":true},{"title":"Update approval request settings","description":"Perform a partial update to approval request settings","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/approval-requests/projects/{projectKey}/settings","href":"/api/approvals-beta/update-approval-request-settings","autogeneratedByOpenApi":true},{"title":"Update flag approval request","description":"$4a","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/approval-requests/{id}","href":"/api/approvals-beta/update-flag-approval-request","autogeneratedByOpenApi":true}]},{"group":"Audit log","root":{"title":"Audit log","description":null,"href":"/api/audit-log"},"pages":[{"title":"Get audit log entry","description":"Fetch a detailed audit log entry representation. The detailed representation includes several fields that are not present in the summary representation, including:\n\n- `previousVersion`: a JSON representation of the previous version of the entity.\n- `currentVersion`: a JSON representation of the current version of the entity.\n- `delta`: the JSON patch body that was used in the request to update the entity. This is only included if the update was made through a [JSON patch](/api/overview#updates-using-json-patch). It is null when the update was made using [semantic patch](/api/overview#updates-using-semantic-patch). Because most [flag updates](/api/feature-flags/update-feature-flag) are made using semantic patch, this field is rarely returned.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/auditlog/{id}","href":"/api/audit-log/get-audit-log-entry","autogeneratedByOpenApi":true},{"title":"Get audit log entry counts","description":"Returns aggregate counts of audit log entries per time bucket. Used for dashboard overlays that show flag targeting changes.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/auditlog/counts","href":"/api/audit-log/get-audit-log-entry-counts","autogeneratedByOpenApi":true},{"title":"List audit log entries","description":"Get a list of all audit log entries. The query parameters let you restrict the results that return by date ranges, resource specifiers, or a full-text search query.\n\nLaunchDarkly uses a resource specifier syntax to name resources or collections of resources. To learn more, read [About the resource specifier syntax](/home/account/roles/role-resources#about-the-resource-specifier-syntax).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/auditlog","href":"/api/audit-log/list-audit-log-entries","autogeneratedByOpenApi":true},{"title":"Search audit log entries","description":"Search your audit log entries. The query parameters let you restrict the results that return by date ranges, or a full-text search query. The request body lets you restrict the results that return by resource specifiers.\n\nLaunchDarkly uses a resource specifier syntax to name resources or collections of resources. To learn more, read [About the resource specifier syntax](/home/account/roles/role-resources#about-the-resource-specifier-syntax).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/auditlog","href":"/api/audit-log/search-audit-log-entries","autogeneratedByOpenApi":true}]},{"group":"Code references","root":{"title":"Code references","description":null,"href":"/api/code-references"},"pages":[{"title":"Create extinction","description":"Create a new extinction.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/code-refs/repositories/{repo}/branches/{branch}/extinction-events","href":"/api/code-references/create-extinction","autogeneratedByOpenApi":true},{"title":"Create repository","description":"Create a repository with the specified name.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/code-refs/repositories","href":"/api/code-references/create-repository","autogeneratedByOpenApi":true},{"title":"Delete branches","description":"Asynchronously delete a number of branches.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/code-refs/repositories/{repo}/branch-delete-tasks","href":"/api/code-references/delete-branches","autogeneratedByOpenApi":true},{"title":"Delete repository","description":"Delete a repository with the specified name.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/code-refs/repositories/{repo}","href":"/api/code-references/delete-repository","autogeneratedByOpenApi":true},{"title":"Get branch","description":"Get a specific branch in a repository.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/code-refs/repositories/{repo}/branches/{branch}","href":"/api/code-references/get-branch","autogeneratedByOpenApi":true},{"title":"Get code references statistics for flags","description":"Get statistics about all the code references across repositories for all flags in your project that have code references in the default branch, for example, `main`. Optionally, you can include the `flagKey` query parameter to limit your request to statistics about code references for a single flag. This endpoint returns the number of references to your flag keys in your repositories, as well as a link to each repository.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/code-refs/statistics/{projectKey}","href":"/api/code-references/get-code-references-statistics-for-flags","autogeneratedByOpenApi":true},{"title":"Get links to code reference repositories for each project","description":"Get links for all projects that have code references.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/code-refs/statistics","href":"/api/code-references/get-links-to-code-reference-repositories-for-each-project","autogeneratedByOpenApi":true},{"title":"Get repository","description":"Get a single repository by name.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/code-refs/repositories/{repo}","href":"/api/code-references/get-repository","autogeneratedByOpenApi":true},{"title":"List branches","description":"Get a list of branches.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/code-refs/repositories/{repo}/branches","href":"/api/code-references/list-branches","autogeneratedByOpenApi":true},{"title":"List extinctions","description":"Get a list of all extinctions. LaunchDarkly creates an extinction event after you remove all code references to a flag. To learn more, read [About extinction events](/home/flags/code-references#about-extinction-events).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/code-refs/extinctions","href":"/api/code-references/list-extinctions","autogeneratedByOpenApi":true},{"title":"List repositories","description":"Get a list of connected repositories. Optionally, you can include branch metadata with the `withBranches` query parameter. Embed references for the default branch with `ReferencesForDefaultBranch`. You can also filter the list of code references by project key and flag key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/code-refs/repositories","href":"/api/code-references/list-repositories","autogeneratedByOpenApi":true},{"title":"Update repository","description":"Update a repository's settings. Updating repository settings uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/code-refs/repositories/{repo}","href":"/api/code-references/update-repository","autogeneratedByOpenApi":true},{"title":"Upsert branch","description":"Create a new branch if it doesn't exist, or update the branch if it already exists.","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/code-refs/repositories/{repo}/branches/{branch}","href":"/api/code-references/upsert-branch","autogeneratedByOpenApi":true}]},{"group":"Contexts","root":{"title":"Contexts","description":null,"href":"/api/contexts"},"pages":[{"title":"Create or update context kind","description":"Create or update a context kind by key. Only the included fields will be updated.","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/context-kinds/{key}","href":"/api/contexts/create-or-update-context-kind","autogeneratedByOpenApi":true},{"title":"Evaluate flags for context instance","description":"$4b","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/flags/evaluate","href":"/api/contexts/evaluate-flags-for-context-instance","autogeneratedByOpenApi":true},{"title":"Get context attribute names","description":"Get context attribute names.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/context-attributes","href":"/api/contexts/get-context-attribute-names","autogeneratedByOpenApi":true},{"title":"Get context attribute values","description":"Get context attribute values.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/context-attributes/{attributeName}","href":"/api/contexts/get-context-attribute-values","autogeneratedByOpenApi":true},{"title":"Get context kinds","description":"Get all context kinds for a given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/context-kinds","href":"/api/contexts/get-context-kinds","autogeneratedByOpenApi":true},{"title":"Get contexts","description":"Get contexts based on kind and key. Returns one item for each application from which LaunchDarkly has received the context, with the `applicationId` field populated.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/contexts/{kind}/{key}","href":"/api/contexts/get-contexts","autogeneratedByOpenApi":true},{"title":"Search for contexts","description":"\nSearch for contexts.\n\nYou can use either the query parameters or the request body parameters. If both are provided, there is an error.\n\nResults are sorted by context kind and key. Each context appears once, with its most recently reported attributes. Results include contexts that LaunchDarkly has received within the last 30 days.\n\nTo learn more about the filter syntax, read [Filtering contexts](/api/contexts#filtering-contexts). To learn more about contexts, read [Contexts and context kinds](/home/flags/contexts#contexts-and-context-kinds).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/contexts/search","href":"/api/contexts/search-for-contexts","autogeneratedByOpenApi":true}]},{"group":"Context settings","root":{"title":"Context settings","description":null,"href":"/api/contexts-settings"},"pages":[{"title":"Update flag settings for context","description":"\nEnable or disable a feature flag for a context based on its context kind and key.\n\nIn the request body, the `setting` should be the variation value to set for the context. It must match the flag's variation type. For example, for a boolean flag you can use `\"setting\": true` or `\"setting\": false` in the request body. For a string flag, you can use `\"setting\": \"existing_variation_value_to_use\"`.\n\nOmitting the `setting` attribute from the request body, or including a `setting` of `null`, erases the current setting for a context.\n\nIf you previously patched the flag, and the patch included the context's data, LaunchDarkly continues to use that data. If LaunchDarkly has never encountered the combination of the context's key and kind before, it calculates the flag values based on the context kind and key.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/environments/{environmentKey}/contexts/{contextKind}/{contextKey}/flags/{featureFlagKey}","href":"/api/context-settings/update-flag-settings-for-context","autogeneratedByOpenApi":true}]},{"group":"Custom roles","root":{"title":"Custom roles","description":null,"href":"/api/custom-roles"},"pages":[{"title":"Create custom role","description":"Create a new custom role","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/roles","href":"/api/custom-roles/create-custom-role","autogeneratedByOpenApi":true},{"title":"Delete custom role","description":"Delete a custom role by key","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/roles/{customRoleKey}","href":"/api/custom-roles/delete-custom-role","autogeneratedByOpenApi":true},{"title":"Get custom role","description":"Get a single custom role by key or ID","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/roles/{customRoleKey}","href":"/api/custom-roles/get-custom-role","autogeneratedByOpenApi":true},{"title":"List custom roles","description":"Get a complete list of custom roles. This includes project and organization roles that you create, or that are provided as presets by LaunchDarkly. It does not include base roles.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/roles","href":"/api/custom-roles/list-custom-roles","autogeneratedByOpenApi":true},{"title":"Update custom role","description":"Update a single custom role. Updating a custom role uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).<br/><br/>To add an element to the `policy` array, set the `path` to `/policy` and then append `/<array index>`. Use `/0` to add to the beginning of the array. Use `/-` to add to the end of the array.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/roles/{customRoleKey}","href":"/api/custom-roles/update-custom-role","autogeneratedByOpenApi":true}]},{"group":"Data Export destinations","root":{"title":"Data Export destinations","description":null,"href":"/api/data-export-destinations"},"pages":[{"title":"Complete warehouse destination setup","description":"Complete the setup of a warehouse destination by providing the Snowflake host address and the public keys from the /setup response. The custom names are read from the stored configuration.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/complete-setup","href":"/api/data-export-destinations/complete-warehouse-destination-setup","autogeneratedByOpenApi":true},{"title":"Create Data Export destination","description":"$4c","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/destinations/{projectKey}/{environmentKey}","href":"/api/data-export-destinations/create-data-export-destination","autogeneratedByOpenApi":true},{"title":"Delete Data Export destination","description":"Delete a Data Export destination by ID. The destination must belong to the environment in the URL. Otherwise, the response is 404.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/destinations/{projectKey}/{environmentKey}/{id}","href":"/api/data-export-destinations/delete-data-export-destination","autogeneratedByOpenApi":true},{"title":"Generate Snowflake destination key pair","description":"Generate key pair to allow Data Export to authenticate into a Snowflake warehouse destination","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/destinations/projects/{projKey}/environments/{envKey}/generate-warehouse-destination-key-pair","href":"/api/data-export-destinations/generate-snowflake-destination-key-pair","autogeneratedByOpenApi":true},{"title":"Generate Snowflake destination key pair","description":"Generate key pair to allow Data Export to authenticate into a Snowflake warehouse destination","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/destinations/projects/{projKey}/environments/{envKey}/generate-warehouse-destination-key-pair","href":"/api/data-export-destinations/generate-snowflake-destination-key-pair","autogeneratedByOpenApi":true},{"title":"Generate trust policy","description":"Trust policy to allow Data Export to assume the role and perform operations on AWS resources","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/destinations/projects/{projKey}/environments/{envKey}/generate-trust-policy","href":"/api/data-export-destinations/generate-trust-policy","autogeneratedByOpenApi":true},{"title":"Generate warehouse destination setup script","description":"Generate the SQL setup script required to prepare a warehouse for LaunchDarkly Data Export. For Snowflake, this also generates a key pair. Custom Snowflake object names may be provided. If omitted, defaults are used.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup","href":"/api/data-export-destinations/generate-warehouse-destination-setup-script","autogeneratedByOpenApi":true},{"title":"Get destination","description":"Get a single Data Export destination by ID. The destination must belong to the environment in the URL. Otherwise, the response is 404.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/destinations/{projectKey}/{environmentKey}/{id}","href":"/api/data-export-destinations/get-destination","autogeneratedByOpenApi":true},{"title":"List destinations","description":"Get a list of Data Export destinations configured across all projects and environments.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/destinations","href":"/api/data-export-destinations/list-destinations","autogeneratedByOpenApi":true},{"title":"Update Data Export destination","description":"Update a Data Export destination. The destination must belong to the environment in the URL. Otherwise, the response is 404. Updating a destination uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/destinations/{projectKey}/{environmentKey}/{id}","href":"/api/data-export-destinations/update-data-export-destination","autogeneratedByOpenApi":true}]},{"group":"Environments","root":{"title":"Environments","description":null,"href":"/api/environments"},"pages":[{"title":"Create environment","description":"> ### Approval settings\n>\n> You cannot configure approval settings when you create a new environment. Use [Update environment](/api/environments/update-environment) to update approval settings.\n>\n> The `approvalSettings` and `resourceApprovalSettings` keys are only returned when the [approvals](/home/releases/approvals) feature is enabled.\n\nCreate a new environment in a specified project with a given name, key, swatch color, and default TTL.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments","href":"/api/environments/create-environment","autogeneratedByOpenApi":true},{"title":"Delete environment","description":"Delete a environment by key.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/environments/{environmentKey}","href":"/api/environments/delete-environment","autogeneratedByOpenApi":true},{"title":"Get environment","description":"> ### Approval settings\n>\n> The `approvalSettings` and `resourceApprovalSettings` keys are only returned when the [approvals](/home/releases/approvals) feature is enabled.\n\nGet an environment given a project and key.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}","href":"/api/environments/get-environment","autogeneratedByOpenApi":true},{"title":"List environments","description":"$4d","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments","href":"/api/environments/list-environments","autogeneratedByOpenApi":true},{"title":"Reset environment mobile SDK key","description":"Reset an environment's mobile key. The optional expiry for the old key is deprecated for this endpoint, so the old key will always expire immediately.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/mobileKey","href":"/api/environments/reset-environment-mobile-sdk-key","autogeneratedByOpenApi":true},{"title":"Reset environment SDK key","description":"Reset an environment's SDK key with an optional expiry time for the old key.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/apiKey","href":"/api/environments/reset-environment-sdk-key","autogeneratedByOpenApi":true},{"title":"Update environment","description":"\nUpdate an environment. Updating an environment uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).\n\nTo update fields in the environment object that are arrays, set the `path` to the name of the field and then append `/<array index>`. Using `/0` appends to the beginning of the array.\n\n### Approval settings\n\nThis request only returns the `approvalSettings` and `resourceApprovalSettings` if the [approvals](/home/releases/approvals) feature is enabled.\n\nOnly the `canReviewOwnRequest`, `canApplyDeclinedChanges`, `minNumApprovals`, `required` and `requiredApprovalTagsfields` are editable.\n\nIf you try to patch the environment by setting both `required` and `requiredApprovalTags`, the request fails and an error appears. You can specify either required approvals for all flags in an environment or those with specific tags, but not both.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/environments/{environmentKey}","href":"/api/environments/update-environment","autogeneratedByOpenApi":true}]},{"group":"Experiments","root":{"title":"Experiments","description":null,"href":"/api/experiments"},"pages":[{"title":"Create experiment","description":"Create an experiment.\n\nTo run this experiment, you'll need to [create an iteration](/api/experiments/create-iteration) and then [update the experiment](/api/experiments/patch-experiment) with the `startIteration` instruction.\n\n### Experiment types\n\nUse the `type` field to specify the experiment type: `experiment` (default), `mab` (multi-armed bandit), or `holdout`.\n\nFor multi-armed bandit experiments, set `reallocationFrequencyMillis` on the iteration to control how often traffic is reallocated across variations.\n\n### Results analysis\n\nUse the `methodology` field to specify the results analysis approach: `bayesian` (default) or `frequentist`.\n\nUse the `dataSource` field to specify the source of metric data: `launchdarkly` (default), `snowflake`, or `databricks`.\n\nUse the `analysisConfig` field to customize analysis settings such as the Bayesian threshold, significance threshold, or multiple comparison correction method.\n\nTo learn more, read [Creating experiments](/home/experimentation/create).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments","href":"/api/experiments/create-experiment","autogeneratedByOpenApi":true},{"title":"Create iteration","description":"> **Deprecated**: This endpoint will be removed in a future version. Use the `updateExperimentFields` and `saveAndStartNewIteration` instructions on [Update experiment](/api/experiments/patch-experiment) instead.\n\nCreate an experiment iteration.\n\nExperiment iterations let you record experiments in individual blocks of time. Initially, iterations are created with a status of `not_started` and appear in the `draftIteration` field of an experiment. To start or stop an iteration, [update the experiment](/api/experiments/patch-experiment) with the `startIteration` or `stopIteration` instruction.\n\nTo learn more, read [Start experiment iterations](/home/experimentation/create#start-an-experiment-iteration).\n","deprecated":true,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}/iterations","href":"/api/experiments/create-iteration","autogeneratedByOpenApi":true},{"title":"Get experiment","description":"$4e","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}","href":"/api/experiments/get-experiment","autogeneratedByOpenApi":true},{"title":"Get experimentation settings","description":"Get current experimentation settings for the given project","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/experimentation-settings","href":"/api/experiments/get-experimentation-settings","autogeneratedByOpenApi":true},{"title":"Get experiments","description":"$4f","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments","href":"/api/experiments/get-experiments","autogeneratedByOpenApi":true},{"title":"Get experiments any environment","description":"Get a list of experiments from across all environments in the project","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/experiments","href":"/api/experiments/get-experiments-any-environment","autogeneratedByOpenApi":true},{"title":"Patch experiment","description":"$50","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}","href":"/api/experiments/patch-experiment","autogeneratedByOpenApi":true},{"title":"Update experimentation settings","description":"Update experimentation settings for the given project","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/experimentation-settings","href":"/api/experiments/update-experimentation-settings","autogeneratedByOpenApi":true}]},{"group":"Feature flags","root":{"title":"Feature flags","description":null,"href":"/api/feature-flags"},"pages":[{"title":"Copy feature flag","description":"\n> ### Copying flag settings is an Enterprise feature\n>\n> Copying flag settings is available to customers on an Enterprise plan. To learn more, [read about our pricing](https://launchdarkly.com/pricing/). To upgrade your plan, [contact Sales](https://launchdarkly.com/contact-sales/).\n\nCopy flag settings from a source environment to a target environment.\n\nBy default, this operation copies the entire flag configuration. You can use the `includedActions` or `excludedActions` to specify that only part of the flag configuration is copied.\n\nIf you provide the optional `currentVersion` of a flag, this operation tests to ensure that the current flag version in the environment matches the version you've specified. The operation rejects attempts to copy flag settings if the environment's current version  of the flag does not match the version you've specified. You can use this to enforce optimistic locking on copy attempts.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/flags/{projectKey}/{featureFlagKey}/copy","href":"/api/feature-flags/copy-feature-flag","autogeneratedByOpenApi":true},{"title":"Create a feature flag","description":"Create a feature flag with the given name, key, and variations.\n\n<details>\n<summary>Click to expand instructions for <strong>creating a migration flag</strong></summary>\n\n### Creating a migration flag\n\nWhen you create a migration flag, the variations are pre-determined based on the number of stages in the migration.\n\nTo create a migration flag, omit the `variations` and `defaults` information. Instead, provide a `purpose` of `migration`, and `migrationSettings`. If you create a migration flag with six stages, `contextKind` is required. Otherwise, it should be omitted.\n\nHere's an example:\n\n```json\n{\n  \"key\": \"flag-key-123\",\n  \"purpose\": \"migration\",\n  \"migrationSettings\": {\n    \"stageCount\": 6,\n    \"contextKind\": \"account\"\n  }\n}\n```\n\nTo learn more, read [Migration Flags](/home/flags/migration).\n\n</details>\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/flags/{projectKey}","href":"/api/feature-flags/create-a-feature-flag","autogeneratedByOpenApi":true},{"title":"Delete feature flag","description":"Delete a feature flag in all environments. Use with caution: only delete feature flags your application no longer uses.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/flags/{projectKey}/{featureFlagKey}","href":"/api/feature-flags/delete-feature-flag","autogeneratedByOpenApi":true},{"title":"Get expiring context targets for feature flag","description":"Get a list of context targets on a feature flag that are scheduled for removal.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{featureFlagKey}/expiring-targets/{environmentKey}","href":"/api/feature-flags/get-expiring-context-targets-for-feature-flag","autogeneratedByOpenApi":true},{"title":"Get expiring user targets for feature flag","description":"\n> ### Contexts are now available\n>\n> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Get expiring context targets for feature flag](/api/feature-flags/get-expiring-context-targets-for-feature-flag) instead of this endpoint. To learn more, read [Contexts](/home/flags/contexts).\n\nGet a list of user targets on a feature flag that are scheduled for removal.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{featureFlagKey}/expiring-user-targets/{environmentKey}","href":"/api/feature-flags/get-expiring-user-targets-for-feature-flag","autogeneratedByOpenApi":true},{"title":"Get feature flag","description":"$51","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{featureFlagKey}","href":"/api/feature-flags/get-feature-flag","autogeneratedByOpenApi":true},{"title":"Get feature flag status","description":"Get the status for a particular feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flag-statuses/{projectKey}/{environmentKey}/{featureFlagKey}","href":"/api/feature-flags/get-feature-flag-status","autogeneratedByOpenApi":true},{"title":"Get flag status across environments","description":"Get the status for a particular feature flag across environments.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flag-status/{projectKey}/{featureFlagKey}","href":"/api/feature-flags/get-flag-status-across-environments","autogeneratedByOpenApi":true},{"title":"Get migration safety issues","description":"Returns the migration safety issues that are associated with the POSTed flag patch. The patch must use the semantic patch format for updating feature flags.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/flags/{flagKey}/environments/{environmentKey}/migration-safety-issues","href":"/api/feature-flags/get-migration-safety-issues","autogeneratedByOpenApi":true},{"title":"List feature flag statuses","description":"Get a list of statuses for all feature flags. The status includes the last time the feature flag was requested, as well as a state, which is one of the following:\n\n- `new`: You created the flag fewer than seven days ago and it has never been requested.\n- `active`: LaunchDarkly is receiving requests for this flag, but there are either multiple variations configured, or it is toggled off, or there have been changes to configuration in the past seven days.\n- `inactive`: You created the feature flag more than seven days ago, and hasn't been requested within the past seven days.\n- `launched`: LaunchDarkly is receiving requests for this flag, it is toggled on, there is only one variation configured, and there have been no changes to configuration in the past seven days.\n\nTo learn more, read [Flag statuses](/home/flags/flag-status).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flag-statuses/{projectKey}/{environmentKey}","href":"/api/feature-flags/list-feature-flag-statuses","autogeneratedByOpenApi":true},{"title":"List feature flags","description":"$52","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}","href":"/api/feature-flags/list-feature-flags","autogeneratedByOpenApi":true},{"title":"Update expiring context targets on feature flag","description":"$53","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/flags/{projectKey}/{featureFlagKey}/expiring-targets/{environmentKey}","href":"/api/feature-flags/update-expiring-context-targets-on-feature-flag","autogeneratedByOpenApi":true},{"title":"Update expiring user targets on feature flag","description":"$54","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/flags/{projectKey}/{featureFlagKey}/expiring-user-targets/{environmentKey}","href":"/api/feature-flags/update-expiring-user-targets-on-feature-flag","autogeneratedByOpenApi":true},{"title":"Update feature flag","description":"$55","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/flags/{projectKey}/{featureFlagKey}","href":"/api/feature-flags/update-feature-flag","autogeneratedByOpenApi":true}]},{"group":"Feature flags (beta)","root":{"title":"Approvals (beta)","description":null,"href":"/api/beta"},"pages":[{"title":"List dependent feature flags","description":"> ### Flag prerequisites is an Enterprise feature\n>\n> Flag prerequisites is available to customers on an Enterprise plan. To learn more, [read about our pricing](https://launchdarkly.com/pricing/). To upgrade your plan, [contact Sales](https://launchdarkly.com/contact-sales/).\n\nList dependent flags across all environments for the flag specified in the path parameters. A dependent flag is a flag that uses another flag as a prerequisite. To learn more, read [Flag prerequisites](/home/flags/prereqs).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{featureFlagKey}/dependent-flags","href":"/api/feature-flags-beta/list-dependent-feature-flags","autogeneratedByOpenApi":true},{"title":"List dependent feature flags by environment","description":"> ### Flag prerequisites is an Enterprise feature\n>\n> Flag prerequisites is available to customers on an Enterprise plan. To learn more, [read about our pricing](https://launchdarkly.com/pricing/). To upgrade your plan, [contact Sales](https://launchdarkly.com/contact-sales/).\n\nList dependent flags across all environments for the flag specified in the path parameters. A dependent flag is a flag that uses another flag as a prerequisite. To learn more, read [Flag prerequisites](/home/flags/prereqs).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{environmentKey}/{featureFlagKey}/dependent-flags","href":"/api/feature-flags-beta/list-dependent-feature-flags-by-environment","autogeneratedByOpenApi":true}]},{"group":"Flag import configurations (beta)","root":{"title":"Flag import configurations (beta)","description":null,"href":"/api/flag-import-config"},"pages":[{"title":"Create a flag import configuration","description":"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 <code>formVariables</code> in the <code>manifest.json</code> for this integration. It varies slightly based on the `integrationKey`.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey}","href":"/api/flag-import-configurations-beta/create-a-flag-import-configuration","autogeneratedByOpenApi":true},{"title":"Delete a flag import configuration","description":"Delete a flag import configuration by ID. The `integrationKey` path parameter identifies the feature management system from which the import occurs, for example, `split`.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey}/{integrationId}","href":"/api/flag-import-configurations-beta/delete-a-flag-import-configuration","autogeneratedByOpenApi":true},{"title":"Get a single flag import configuration","description":"Get a single flag import configuration by ID. The `integrationKey` path parameter identifies the feature management system from which the import occurs, for example, `split`.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey}/{integrationId}","href":"/api/flag-import-configurations-beta/get-a-single-flag-import-configuration","autogeneratedByOpenApi":true},{"title":"List all flag import configurations","description":"List all flag import configurations.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-capabilities/flag-import","href":"/api/flag-import-configurations-beta/list-all-flag-import-configurations","autogeneratedByOpenApi":true},{"title":"Trigger a single flag import run","description":"Trigger a single flag import run for an existing flag import configuration. The `integrationKey` path parameter identifies the feature management system from which the import occurs, for example, `split`.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey}/{integrationId}/trigger","href":"/api/flag-import-configurations-beta/trigger-a-single-flag-import-run","autogeneratedByOpenApi":true},{"title":"Update a flag import configuration","description":"Updating a flag import configuration uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).<br/><br/>To add an element to the import configuration fields that are arrays, set the `path` to the name of the field and then append `/<array index>`. Use `/0` to add to the beginning of the array. Use `/-` to add to the end of the array.<br/><br/>You can update the `config`, `tags`, and `name` of the flag import configuration.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey}/{integrationId}","href":"/api/flag-import-configurations-beta/update-a-flag-import-configuration","autogeneratedByOpenApi":true}]},{"group":"Flag links (beta)","root":{"title":"Flag links (beta)","description":null,"href":"/api/flag-links"},"pages":[{"title":"Create flag link","description":"Create a new flag link. Flag links let you reference external resources and associate them with your flags.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/flag-links/projects/{projectKey}/flags/{featureFlagKey}","href":"/api/flag-links-beta/create-flag-link","autogeneratedByOpenApi":true},{"title":"Delete flag link","description":"Delete a flag link by ID or key.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/flag-links/projects/{projectKey}/flags/{featureFlagKey}/{id}","href":"/api/flag-links-beta/delete-flag-link","autogeneratedByOpenApi":true},{"title":"List flag links","description":"Get a list of all flag links.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flag-links/projects/{projectKey}/flags/{featureFlagKey}","href":"/api/flag-links-beta/list-flag-links","autogeneratedByOpenApi":true},{"title":"Update flag link","description":"Update a flag link. Updating a flag link uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/flag-links/projects/{projectKey}/flags/{featureFlagKey}/{id}","href":"/api/flag-links-beta/update-flag-link","autogeneratedByOpenApi":true}]},{"group":"Flag triggers","root":{"title":"Flag triggers","description":null,"href":"/api/flag-triggers"},"pages":[{"title":"Create flag trigger","description":"Create a new flag trigger.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/flags/{projectKey}/{featureFlagKey}/triggers/{environmentKey}","href":"/api/flag-triggers/create-flag-trigger","autogeneratedByOpenApi":true},{"title":"Delete flag trigger","description":"Delete a flag trigger by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/flags/{projectKey}/{featureFlagKey}/triggers/{environmentKey}/{id}","href":"/api/flag-triggers/delete-flag-trigger","autogeneratedByOpenApi":true},{"title":"Get flag trigger by ID","description":"Get a flag trigger by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{featureFlagKey}/triggers/{environmentKey}/{id}","href":"/api/flag-triggers/get-flag-trigger-by-id","autogeneratedByOpenApi":true},{"title":"List flag triggers","description":"Get a list of all flag triggers.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{featureFlagKey}/triggers/{environmentKey}","href":"/api/flag-triggers/list-flag-triggers","autogeneratedByOpenApi":true},{"title":"Update flag trigger","description":"$56","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/flags/{projectKey}/{featureFlagKey}/triggers/{environmentKey}/{id}","href":"/api/flag-triggers/update-flag-trigger","autogeneratedByOpenApi":true}]},{"group":"Follow flags","root":{"title":"Follow flags","description":null,"href":"/api/follow-flags"},"pages":[{"title":"Add a member as a follower of a flag in a project and environment","description":"Add a member as a follower to a flag in a project and environment","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/followers/{memberId}","href":"/api/follow-flags/add-a-member-as-a-follower-of-a-flag-in-a-project-and-environment","autogeneratedByOpenApi":true},{"title":"Get followers of a flag in a project and environment","description":"Get a list of members following a flag in a project and environment","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/followers","href":"/api/follow-flags/get-followers-of-a-flag-in-a-project-and-environment","autogeneratedByOpenApi":true},{"title":"Get followers of all flags in a given project and environment","description":"Get followers of all flags in a given environment and project","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/followers","href":"/api/follow-flags/get-followers-of-all-flags-in-a-given-project-and-environment","autogeneratedByOpenApi":true},{"title":"Remove a member as a follower of a flag in a project and environment","description":"Remove a member as a follower to a flag in a project and environment","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/followers/{memberId}","href":"/api/follow-flags/remove-a-member-as-a-follower-of-a-flag-in-a-project-and-environment","autogeneratedByOpenApi":true}]},{"group":"Holdouts","root":{"title":"Holdouts","description":null,"href":"/api/holdouts"},"pages":[{"title":"Create holdout","description":"Create a new holdout in the specified project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts","href":"/api/holdouts/create-holdout","autogeneratedByOpenApi":true},{"title":"Get all holdouts","description":null,"deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts","href":"/api/holdouts/get-all-holdouts","autogeneratedByOpenApi":true},{"title":"Get holdout","description":"$57","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey}","href":"/api/holdouts/get-holdout","autogeneratedByOpenApi":true},{"title":"Get Holdout by Id","description":null,"deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/id/{holdoutId}","href":"/api/holdouts/get-holdout-by-id","autogeneratedByOpenApi":true},{"title":"Patch holdout","description":"$58","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey}","href":"/api/holdouts/patch-holdout","autogeneratedByOpenApi":true}]},{"group":"Insights charts (beta)","root":{"title":"Insights charts (beta)","description":null,"href":"/api/insights-charts"},"pages":[{"title":"Get deployment frequency chart data","description":"Get deployment frequency chart data. Engineering insights displays deployment frequency data in the [deployment frequency metric view](/home/releases/deployments).\n\n### Expanding the chart response\n\nLaunchDarkly supports expanding the chart response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `metrics` includes details on the metrics related to deployment frequency\n\nFor example, use `?expand=metrics` to include the `metrics` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/charts/deployments/frequency","href":"/api/insights-charts-beta/get-deployment-frequency-chart-data","autogeneratedByOpenApi":true},{"title":"Get flag status chart data","description":"Get flag status chart data. To learn more, read [Flag statuses](/home/releases/flag-health#flag-statuses).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/charts/flags/status","href":"/api/insights-charts-beta/get-flag-status-chart-data","autogeneratedByOpenApi":true},{"title":"Get lead time chart data","description":"Get lead time chart data. The engineering insights UI displays lead time data in the [lead time metric view](/home/releases/lead-time).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/charts/lead-time","href":"/api/insights-charts-beta/get-lead-time-chart-data","autogeneratedByOpenApi":true},{"title":"Get release frequency chart data","description":"Get release frequency chart data. Engineering insights displays release frequency data in the [release frequency metric view](/home/releases/releases).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/charts/releases/frequency","href":"/api/insights-charts-beta/get-release-frequency-chart-data","autogeneratedByOpenApi":true},{"title":"Get stale flags chart data","description":"Get stale flags chart data. Engineering insights displays stale flags data in the [flag health metric view](/home/releases/flag-health).\n\n### Expanding the chart response\n\nLaunchDarkly supports expanding the chart response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `metrics` includes details on the metrics related to stale flags\n\nFor example, use `?expand=metrics` to include the `metrics` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/charts/flags/stale","href":"/api/insights-charts-beta/get-stale-flags-chart-data","autogeneratedByOpenApi":true}]},{"group":"Insights deployments (beta)","root":{"title":"Insights deployments (beta)","description":null,"href":"/api/insights-deployments"},"pages":[{"title":"Create deployment event","description":"Create deployment event","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/engineering-insights/deployment-events","href":"/api/insights-deployments-beta/create-deployment-event","autogeneratedByOpenApi":true},{"title":"Get deployment","description":"Get a deployment by ID.\n\nThe deployment ID is returned as part of the [List deployments](/api/insights-deployments-beta/list-deployments) response. It is the `id` field of each element in the `items` array.\n\n### Expanding the deployment response\n\nLaunchDarkly supports expanding the deployment response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `pullRequests` includes details on all of the pull requests associated with each deployment\n* `flagReferences` includes details on all of the references to flags in each deployment\n\nFor example, use `?expand=pullRequests` to include the `pullRequests` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/deployments/{deploymentID}","href":"/api/insights-deployments-beta/get-deployment","autogeneratedByOpenApi":true},{"title":"List deployments","description":"Get a list of deployments\n\n### Expanding the deployment collection response\n\nLaunchDarkly supports expanding the deployment collection response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `pullRequests` includes details on all of the pull requests associated with each deployment\n* `flagReferences` includes details on all of the references to flags in each deployment\n\nFor example, use `?expand=pullRequests` to include the `pullRequests` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/deployments","href":"/api/insights-deployments-beta/list-deployments","autogeneratedByOpenApi":true},{"title":"Update deployment","description":"Update a deployment by ID. Updating a deployment uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).<br/><br/>The deployment ID is returned as part of the [List deployments](/api/insights-deployments-beta/list-deployments) response. It is the `id` field of each element in the `items` array.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/engineering-insights/deployments/{deploymentID}","href":"/api/insights-deployments-beta/update-deployment","autogeneratedByOpenApi":true}]},{"group":"Insights flag events (beta)","root":{"title":"Insights flag events (beta)","description":null,"href":"/api/insights-flag-events"},"pages":[{"title":"List flag events","description":"Get a list of flag events\n\n### Expanding the flag event collection response\n\nLaunchDarkly supports expanding the flag event collection response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `experiments` includes details on all of the experiments run on each flag\n\nFor example, use `?expand=experiments` to include the `experiments` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/flag-events","href":"/api/insights-flag-events-beta/list-flag-events","autogeneratedByOpenApi":true}]},{"group":"Insights pull requests (beta)","root":{"title":"Insights pull requests (beta)","description":null,"href":"/api/insights-pull-requests"},"pages":[{"title":"List pull requests","description":"Get a list of pull requests\n\n### Expanding the pull request collection response\n\nLaunchDarkly supports expanding the pull request collection response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `deployments` includes details on all of the deployments associated with each pull request\n* `flagReferences` includes details on all of the references to flags in each pull request\n* `leadTime` includes details about the lead time of the pull request for each stage\n\nFor example, use `?expand=deployments` to include the `deployments` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/pull-requests","href":"/api/insights-pull-requests-beta/list-pull-requests","autogeneratedByOpenApi":true}]},{"group":"Insights repositories (beta)","root":{"title":"Insights repositories (beta)","description":null,"href":"/api/insights-repositories"},"pages":[{"title":"Associate repositories with projects","description":"Associate repositories with projects","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/engineering-insights/repositories/projects","href":"/api/insights-repositories-beta/associate-repositories-with-projects","autogeneratedByOpenApi":true},{"title":"List repositories","description":"Get a list of repositories\n\n### Expanding the repository collection response\n\nLaunchDarkly supports expanding the repository collection response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `projects` includes details on all of the LaunchDarkly projects associated with each repository\n\nFor example, use `?expand=projects` to include the `projects` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/repositories","href":"/api/insights-repositories-beta/list-repositories","autogeneratedByOpenApi":true},{"title":"Remove repository project association","description":"Remove repository project association","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/engineering-insights/repositories/{repositoryKey}/projects/{projectKey}","href":"/api/insights-repositories-beta/remove-repository-project-association","autogeneratedByOpenApi":true}]},{"group":"Insights scores (beta)","root":{"title":"Insights scores (beta)","description":null,"href":"/api/insights-scores"},"pages":[{"title":"Create insight group","description":"Create insight group","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/engineering-insights/insights/group","href":"/api/insights-scores-beta/create-insight-group","autogeneratedByOpenApi":true},{"title":"Delete insight group","description":"Delete insight group","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/engineering-insights/insights/groups/{insightGroupKey}","href":"/api/insights-scores-beta/delete-insight-group","autogeneratedByOpenApi":true},{"title":"Get insight group","description":"Get insight group\n\n### Expanding the insight group response\n\nLaunchDarkly supports expanding the insight group response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `scores` includes details on all of the scores used in the engineering insights metrics views for this group\n* `environment` includes details on each environment associated with this group\n\nFor example, use `?expand=scores` to include the `scores` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/insights/groups/{insightGroupKey}","href":"/api/insights-scores-beta/get-insight-group","autogeneratedByOpenApi":true},{"title":"Get insight scores","description":"Return insights scores, based on the given parameters. This data is also used in engineering insights metrics views.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/insights/scores","href":"/api/insights-scores-beta/get-insight-scores","autogeneratedByOpenApi":true},{"title":"List insight groups","description":"List groups for which you are collecting insights\n\n### Expanding the insight groups collection response\n\nLaunchDarkly supports expanding the insight groups collection response to include additional fields.\n\nTo expand the response, append the `expand` query parameter and include the following:\n\n* `scores` includes details on all of the scores used in the engineering insights metrics views for each group\n* `environment` includes details on each environment associated with each group\n* `metadata` includes counts of the number of insight groups with particular indicators, such as \"excellent,\" \"good,\" \"fair,\" and so on.\n\nFor example, use `?expand=scores` to include the `scores` field in the response. By default, this field is **not** included in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/engineering-insights/insights/groups","href":"/api/insights-scores-beta/list-insight-groups","autogeneratedByOpenApi":true},{"title":"Patch insight group","description":"Update an insight group. Updating an insight group uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/engineering-insights/insights/groups/{insightGroupKey}","href":"/api/insights-scores-beta/patch-insight-group","autogeneratedByOpenApi":true}]},{"group":"Integration audit log subscriptions","root":{"title":"Integration audit log subscriptions","description":null,"href":"/api/integration-audit-log-subscriptions"},"pages":[{"title":"Create audit log subscription","description":"Create an audit log subscription.<br /><br />For each subscription, you must specify the set of resources you wish to subscribe to audit log notifications for. You can describe these resources using a custom role policy. To learn more, read [Custom role concepts](/home/account/roles/role-concepts).","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/integrations/{integrationKey}","href":"/api/integration-audit-log-subscriptions/create-audit-log-subscription","autogeneratedByOpenApi":true},{"title":"Delete audit log subscription","description":"Delete an audit log subscription.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/integrations/{integrationKey}/{id}","href":"/api/integration-audit-log-subscriptions/delete-audit-log-subscription","autogeneratedByOpenApi":true},{"title":"Get audit log subscription by ID","description":"Get an audit log subscription by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integrations/{integrationKey}/{id}","href":"/api/integration-audit-log-subscriptions/get-audit-log-subscription-by-id","autogeneratedByOpenApi":true},{"title":"Get audit log subscriptions by integration","description":"Get all audit log subscriptions associated with a given integration.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integrations/{integrationKey}","href":"/api/integration-audit-log-subscriptions/get-audit-log-subscriptions-by-integration","autogeneratedByOpenApi":true},{"title":"Update audit log subscription","description":"Update an audit log subscription configuration. Updating an audit log subscription uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/integrations/{integrationKey}/{id}","href":"/api/integration-audit-log-subscriptions/update-audit-log-subscription","autogeneratedByOpenApi":true}]},{"group":"Integration delivery configurations (beta)","root":{"title":"Integration delivery configurations (beta)","description":null,"href":"/api/integration-delivery-configuration"},"pages":[{"title":"Create delivery configuration","description":"Create a delivery configuration.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/integration-capabilities/featureStore/{projectKey}/{environmentKey}/{integrationKey}","href":"/api/integration-delivery-configurations-beta/create-delivery-configuration","autogeneratedByOpenApi":true},{"title":"Delete delivery configuration","description":"Delete a delivery configuration.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/integration-capabilities/featureStore/{projectKey}/{environmentKey}/{integrationKey}/{id}","href":"/api/integration-delivery-configurations-beta/delete-delivery-configuration","autogeneratedByOpenApi":true},{"title":"Get delivery configuration by ID","description":"Get delivery configuration by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-capabilities/featureStore/{projectKey}/{environmentKey}/{integrationKey}/{id}","href":"/api/integration-delivery-configurations-beta/get-delivery-configuration-by-id","autogeneratedByOpenApi":true},{"title":"Get delivery configurations by environment","description":"Get delivery configurations by environment.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-capabilities/featureStore/{projectKey}/{environmentKey}","href":"/api/integration-delivery-configurations-beta/get-delivery-configurations-by-environment","autogeneratedByOpenApi":true},{"title":"List all delivery configurations","description":"List all delivery configurations.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-capabilities/featureStore","href":"/api/integration-delivery-configurations-beta/list-all-delivery-configurations","autogeneratedByOpenApi":true},{"title":"Update delivery configuration","description":"Update an integration delivery configuration. Updating an integration delivery configuration uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/integration-capabilities/featureStore/{projectKey}/{environmentKey}/{integrationKey}/{id}","href":"/api/integration-delivery-configurations-beta/update-delivery-configuration","autogeneratedByOpenApi":true},{"title":"Validate delivery configuration","description":"Validate the saved delivery configuration, using the `validationRequest` in the integration's `manifest.json` file.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/integration-capabilities/featureStore/{projectKey}/{environmentKey}/{integrationKey}/{id}/validate","href":"/api/integration-delivery-configurations-beta/validate-delivery-configuration","autogeneratedByOpenApi":true}]},{"group":"Integrations (beta)","root":{"title":"Integrations (beta)","description":null,"href":"/api/integrations"},"pages":[{"title":"Create integration configuration","description":"Create a new integration configuration. (Excludes [persistent store](/api/persistent-store-config) and [flag import configurations](/api/flag-import-config).)","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/integration-configurations/keys/{integrationKey}","href":"/api/integrations-beta/create-integration-configuration","autogeneratedByOpenApi":true},{"title":"Delete integration configuration","description":"Delete an integration configuration by ID. (Excludes [persistent store](/api/persistent-store-config) and [flag import configurations](/api/flag-import-config).)","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/integration-configurations/{integrationConfigurationId}","href":"/api/integrations-beta/delete-integration-configuration","autogeneratedByOpenApi":true},{"title":"Get all configurations for the integration","description":"Get all integration configurations with the specified integration key. (Excludes [persistent store](/api/persistent-store-config) and [flag import configurations](/api/flag-import-config).).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-configurations/keys/{integrationKey}","href":"/api/integrations-beta/get-all-configurations-for-the-integration","autogeneratedByOpenApi":true},{"title":"Get an integration configuration","description":"Get integration configuration with the specified ID. (Excludes [persistent store](/api/persistent-store-config) and [flag import configurations](/api/flag-import-config).)","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-configurations/{integrationConfigurationId}","href":"/api/integrations-beta/get-an-integration-configuration","autogeneratedByOpenApi":true},{"title":"Update integration configuration","description":"Update an integration configuration. Updating an integration configuration uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/integration-configurations/{integrationConfigurationId}","href":"/api/integrations-beta/update-integration-configuration","autogeneratedByOpenApi":true}]},{"group":"IP Allowlist (beta)","root":{"title":"IP Allowlist (beta)","description":null,"href":"/api/ipallowlist"},"pages":[{"title":"Create IP Allowlist Entry","description":"Create a new IP allowlist entry.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/account/ip-allowlist","href":"/api/ip-allowlist-beta/create-ip-allowlist-entry","autogeneratedByOpenApi":true},{"title":"Delete IP Allowlist Entry","description":"Delete an IP allowlist entry by id.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/account/ip-allowlist/{id}","href":"/api/ip-allowlist-beta/delete-ip-allowlist-entry","autogeneratedByOpenApi":true},{"title":"Get IP Allowlist","description":"Get the current IP allowlist configuration and entries.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/account/ip-allowlist","href":"/api/ip-allowlist-beta/get-ip-allowlist","autogeneratedByOpenApi":true},{"title":"Update IP Allowlist Configuration","description":"Update sessionAllowlistEnabled and apiTokenAllowlistEnabled settings.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/account/ip-allowlist","href":"/api/ip-allowlist-beta/update-ip-allowlist-configuration","autogeneratedByOpenApi":true},{"title":"Update IP Allowlist Entry Description","description":"Update the description of an IP allowlist entry.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/account/ip-allowlist/{id}","href":"/api/ip-allowlist-beta/update-ip-allowlist-entry-description","autogeneratedByOpenApi":true}]},{"group":"Layers","root":{"title":"Layers","description":null,"href":"/api/layers"},"pages":[{"title":"Create layer","description":"Create a layer. Experiments running in the same layer are granted mutually-exclusive traffic.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/layers","href":"/api/layers/create-layer","autogeneratedByOpenApi":true},{"title":"Get layers","description":"Get a collection of all layers for a project","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/layers","href":"/api/layers/get-layers","autogeneratedByOpenApi":true},{"title":"Update layer","description":"$59","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/layers/{layerKey}","href":"/api/layers/update-layer","autogeneratedByOpenApi":true}]},{"group":"Metrics","root":{"title":"Metrics","description":null,"href":"/api/metrics"},"pages":[{"title":"Create metric","description":"Create a new metric in the specified project. The expected `POST` body differs depending on the specified `kind` property.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/metrics/{projectKey}","href":"/api/metrics/create-metric","autogeneratedByOpenApi":true},{"title":"Delete metric","description":"Delete a metric by key.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/metrics/{projectKey}/{metricKey}","href":"/api/metrics/delete-metric","autogeneratedByOpenApi":true},{"title":"Get metric","description":"Get information for a single metric from the specific project.\n\n### Expanding the metric response\nLaunchDarkly supports four fields for expanding the \"Get metric\" response. By default, these fields are **not** included in the response.\n\nTo expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:\n\n- `experiments` includes all experiments from the specific project that use the metric\n- `experimentCount` includes the number of experiments from the specific project that use the metric\n- `metricGroups` includes all metric groups from the specific project that use the metric\n- `metricGroupCount` includes the number of metric groups from the specific project that use the metric\n\nFor example, `expand=experiments` includes the `experiments` field in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/metrics/{projectKey}/{metricKey}","href":"/api/metrics/get-metric","autogeneratedByOpenApi":true},{"title":"List metrics","description":"$5a","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/metrics/{projectKey}","href":"/api/metrics/list-metrics","autogeneratedByOpenApi":true},{"title":"Update metric","description":"Patch a metric by key. Updating a metric uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/metrics/{projectKey}/{metricKey}","href":"/api/metrics/update-metric","autogeneratedByOpenApi":true}]},{"group":"Metrics (beta)","root":{"title":"Metrics (beta)","description":null,"href":"/api/metrics-beta"},"pages":[{"title":"Create metric group","description":"Create a new metric group in the specified project","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/metric-groups","href":"/api/metrics-beta/create-metric-group","autogeneratedByOpenApi":true},{"title":"Delete metric group","description":"Delete a metric group by key.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/metric-groups/{metricGroupKey}","href":"/api/metrics-beta/delete-metric-group","autogeneratedByOpenApi":true},{"title":"Get metric group","description":"Get information for a single metric group from the specific project.\n\n### Expanding the metric group response\nLaunchDarkly supports two fields for expanding the \"Get metric group\" response. By default, these fields are **not** included in the response.\n\nTo expand the response, append the `expand` query parameter and add a comma-separated list with either or both of the following fields:\n\n- `experiments` includes all experiments from the specific project that use the metric group\n- `experimentCount` includes the number of experiments from the specific project that use the metric group\n\nFor example, `expand=experiments` includes the `experiments` field in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/metric-groups/{metricGroupKey}","href":"/api/metrics-beta/get-metric-group","autogeneratedByOpenApi":true},{"title":"List metric groups","description":"$5b","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/metric-groups","href":"/api/metrics-beta/list-metric-groups","autogeneratedByOpenApi":true},{"title":"Patch metric group","description":"Patch a metric group by key. Updating a metric group uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/metric-groups/{metricGroupKey}","href":"/api/metrics-beta/patch-metric-group","autogeneratedByOpenApi":true}]},{"group":"OAuth2 Clients","root":{"title":"OAuth2 Clients","description":null,"href":"/api/oauth2-client"},"pages":[{"title":"Create a LaunchDarkly OAuth 2.0 client","description":"Create (register) a LaunchDarkly OAuth2 client. OAuth2 clients allow you to build custom integrations using LaunchDarkly as your identity provider.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/oauth/clients","href":"/api/oauth2-clients/create-a-launchdarkly-oauth-20-client","autogeneratedByOpenApi":true},{"title":"Delete OAuth 2.0 client","description":"Delete an existing OAuth 2.0 client by unique client ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/oauth/clients/{clientId}","href":"/api/oauth2-clients/delete-oauth-20-client","autogeneratedByOpenApi":true},{"title":"Get client by ID","description":"Get a registered OAuth 2.0 client by unique client ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/oauth/clients/{clientId}","href":"/api/oauth2-clients/get-client-by-id","autogeneratedByOpenApi":true},{"title":"Get clients","description":"Get all OAuth 2.0 clients registered by your account.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/oauth/clients","href":"/api/oauth2-clients/get-clients","autogeneratedByOpenApi":true},{"title":"Patch client by ID","description":"Patch an existing OAuth 2.0 client by client ID. Updating an OAuth2 client uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates). Only `name`, `description`, and `redirectUri` may be patched.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/oauth/clients/{clientId}","href":"/api/oauth2-clients/patch-client-by-id","autogeneratedByOpenApi":true}]},{"group":"Persistent store integrations (beta)","root":{"title":"Persistent store integrations (beta)","description":null,"href":"/api/persistent-store-config"},"pages":[{"title":"Create big segment store integration","description":"$5c","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}","href":"/api/persistent-store-integrations-beta/create-big-segment-store-integration","autogeneratedByOpenApi":true},{"title":"Delete big segment store integration","description":"Delete a persistent store integration. Each integration uses either Redis or DynamoDB.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}/{integrationId}","href":"/api/persistent-store-integrations-beta/delete-big-segment-store-integration","autogeneratedByOpenApi":true},{"title":"Get big segment store integration by ID","description":"Get a big segment store integration by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}/{integrationId}","href":"/api/persistent-store-integrations-beta/get-big-segment-store-integration-by-id","autogeneratedByOpenApi":true},{"title":"List all big segment store integrations","description":"List all big segment store integrations.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/integration-capabilities/big-segment-store","href":"/api/persistent-store-integrations-beta/list-all-big-segment-store-integrations","autogeneratedByOpenApi":true},{"title":"Update big segment store integration","description":"Update a big segment store integration. Updating a big segment store requires a [JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}/{integrationId}","href":"/api/persistent-store-integrations-beta/update-big-segment-store-integration","autogeneratedByOpenApi":true}]},{"group":"Projects","root":{"title":"Projects","description":null,"href":"/api/projects"},"pages":[{"title":"Create or update flag defaults for project","description":"Create or update flag defaults for a project.","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/flag-defaults","href":"/api/projects/create-or-update-flag-defaults-for-project","autogeneratedByOpenApi":true},{"title":"Create project","description":"Create a new project with the given key and name. Project keys must be unique within an account.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects","href":"/api/projects/create-project","autogeneratedByOpenApi":true},{"title":"Delete project","description":"Delete a project by key. Use this endpoint with caution. Deleting a project will delete all associated environments and feature flags. You cannot delete the last project in an account.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}","href":"/api/projects/delete-project","autogeneratedByOpenApi":true},{"title":"Get flag defaults for project","description":"Get the flag defaults for a specific project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flag-defaults","href":"/api/projects/get-flag-defaults-for-project","autogeneratedByOpenApi":true},{"title":"Get project","description":"Get a single project by key.\n\n### Expanding the project response\n\nLaunchDarkly supports one field for expanding the \"Get project\" response. By default, these fields are **not** included in the response.\n\nTo expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:\n* `environments` includes a paginated list of the project environments.\n\nFor example, `expand=environments` includes the `environments` field for the project in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}","href":"/api/projects/get-project","autogeneratedByOpenApi":true},{"title":"List projects","description":"$5d","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects","href":"/api/projects/list-projects","autogeneratedByOpenApi":true},{"title":"Update flag default for project","description":"Update a flag default. Updating a flag default uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/flag-defaults","href":"/api/projects/update-flag-default-for-project","autogeneratedByOpenApi":true},{"title":"Update project","description":"Update a project. Updating a project uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).<br/><br/>To add an element to the project fields that are arrays, set the `path` to the name of the field and then append `/<array index>`. Use `/0` to add to the beginning of the array. Use `/-` to add to the end of the array. For example, `\"path\": \"/tags/0\"` adds a tag.<br/><br/>Note that `tags` are always deduplicated and returned in alphabetical order, regardless of the array index used in the patch path.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}","href":"/api/projects/update-project","autogeneratedByOpenApi":true}]},{"group":"Relay Proxy configurations","root":{"title":"Relay Proxy configurations","description":null,"href":"/api/relay-proxy-configuration"},"pages":[{"title":"Create a new Relay Proxy config","description":"Create a Relay Proxy config.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/account/relay-auto-configs","href":"/api/relay-proxy-configurations/create-a-new-relay-proxy-config","autogeneratedByOpenApi":true},{"title":"Delete Relay Proxy config by ID","description":"Delete a Relay Proxy config.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/account/relay-auto-configs/{id}","href":"/api/relay-proxy-configurations/delete-relay-proxy-config-by-id","autogeneratedByOpenApi":true},{"title":"Get Relay Proxy config","description":"Get a single Relay Proxy auto config by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/account/relay-auto-configs/{id}","href":"/api/relay-proxy-configurations/get-relay-proxy-config","autogeneratedByOpenApi":true},{"title":"List Relay Proxy configs","description":"Get a list of Relay Proxy configurations in the account.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/account/relay-auto-configs","href":"/api/relay-proxy-configurations/list-relay-proxy-configs","autogeneratedByOpenApi":true},{"title":"Reset Relay Proxy configuration key","description":"Reset a Relay Proxy configuration's secret key with an optional expiry time for the old key.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/account/relay-auto-configs/{id}/reset","href":"/api/relay-proxy-configurations/reset-relay-proxy-configuration-key","autogeneratedByOpenApi":true},{"title":"Update a Relay Proxy config","description":"Update a Relay Proxy configuration. Updating a configuration uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/account/relay-auto-configs/{id}","href":"/api/relay-proxy-configurations/update-a-relay-proxy-config","autogeneratedByOpenApi":true}]},{"group":"Release pipelines (beta)","root":{"title":"Release pipelines (beta)","description":null,"href":"/api/release-pipelines"},"pages":[{"title":"Create a release pipeline","description":"Creates a new release pipeline.\n\nThe first release pipeline you create is automatically set as the default release pipeline for your project. To change the default release pipeline, use the [Update project](/api/projects/update-project) API to set the `defaultReleasePipelineKey`.\n\nYou can create up to 20 release pipelines per project.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/release-pipelines","href":"/api/release-pipelines-beta/create-a-release-pipeline","autogeneratedByOpenApi":true},{"title":"Delete release pipeline","description":"Deletes a release pipeline.\n\nYou cannot delete the default release pipeline.\n\nIf you want to delete a release pipeline that is currently the default, create a second release pipeline and set it as the default. Then delete the first release pipeline. To change the default release pipeline, use the [Update project](/api/projects/update-project) API to set the `defaultReleasePipelineKey`.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/release-pipelines/{pipelineKey}","href":"/api/release-pipelines-beta/delete-release-pipeline","autogeneratedByOpenApi":true},{"title":"Get all release pipelines","description":"Get all release pipelines for a project.\n\n### Filtering release pipelines\n\nLaunchDarkly supports the following fields for filters:\n\n- `query` is a string that matches against the release pipeline `key`, `name`, and `description`. It is not case sensitive. For example: `?filter=query:examplePipeline`.\n\n- `env` is a string that matches an environment key. For example: `?filter=env:production`.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/release-pipelines","href":"/api/release-pipelines-beta/get-all-release-pipelines","autogeneratedByOpenApi":true},{"title":"Get release pipeline by key","description":"Get a release pipeline by key","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/release-pipelines/{pipelineKey}","href":"/api/release-pipelines-beta/get-release-pipeline-by-key","autogeneratedByOpenApi":true},{"title":"Get release progressions for release pipeline","description":"Get details on the progression of all releases, across all flags, for a release pipeline","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/release-pipelines/{pipelineKey}/releases","href":"/api/release-pipelines-beta/get-release-progressions-for-release-pipeline","autogeneratedByOpenApi":true},{"title":"Update a release pipeline","description":"Updates a release pipeline.","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/release-pipelines/{pipelineKey}","href":"/api/release-pipelines-beta/update-a-release-pipeline","autogeneratedByOpenApi":true}]},{"group":"Release policies (beta)","root":{"title":"Release policies (beta)","description":null,"href":"/api/release-policies"},"pages":[{"title":"Create a release policy","description":"Create a new release policy for the specified project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/release-policies","href":"/api/release-policies-beta/create-a-release-policy","autogeneratedByOpenApi":true},{"title":"Delete a release policy","description":"Delete an existing release policy for the specified project.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/release-policies/{policyKey}","href":"/api/release-policies-beta/delete-a-release-policy","autogeneratedByOpenApi":true},{"title":"Get a release policy by key","description":"Retrieve a single release policy by its key for the specified project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/release-policies/{policyKey}","href":"/api/release-policies-beta/get-a-release-policy-by-key","autogeneratedByOpenApi":true},{"title":"List release policies","description":"Get a list of release policies for the specified project with optional filtering.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/release-policies","href":"/api/release-policies-beta/list-release-policies","autogeneratedByOpenApi":true},{"title":"Update a release policy","description":"Update an existing release policy for the specified project.","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/release-policies/{policyKey}","href":"/api/release-policies-beta/update-a-release-policy","autogeneratedByOpenApi":true},{"title":"Update the order of existing release policies","description":"Update the order of existing release policies for the specified project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/release-policies/order","href":"/api/release-policies-beta/update-the-order-of-existing-release-policies","autogeneratedByOpenApi":true}]},{"group":"Releases (beta)","root":{"title":"Releases (beta)","description":null,"href":"/api/releases"},"pages":[{"title":"Create a new release for flag","description":"Creates a release by adding a flag to a release pipeline","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/flags/{flagKey}/release","href":"/api/releases-beta/create-a-new-release-for-flag","autogeneratedByOpenApi":true},{"title":"Delete a release for flag","description":"Deletes a release from a flag","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/flags/{projectKey}/{flagKey}/release","href":"/api/releases-beta/delete-a-release-for-flag","autogeneratedByOpenApi":true},{"title":"Get release for flag","description":"Get currently active release for a flag","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/flags/{projectKey}/{flagKey}/release","href":"/api/releases-beta/get-release-for-flag","autogeneratedByOpenApi":true},{"title":"Patch release for flag","description":"This endpoint is only available for releases that are part of a legacy release pipeline. Releases for new release pipelines should use the [Update phase status for release](/api/releases-beta/update-phase-status-for-release) endpoint.\n\nUpdate currently active release for a flag. Updating releases requires the [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) format. To learn more, read [Updates](/api/overview#updates).\n\nYou can only use this endpoint to mark a release phase complete or incomplete. To indicate which phase to update, use the array index in the `path`. For example, to mark the first phase of a release as complete, use the following request body:\n\n```\n  [\n    {\n      \"op\": \"replace\",\n      \"path\": \"/phase/0/complete\",\n      \"value\": true\n    }\n  ]\n```\n","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/flags/{projectKey}/{flagKey}/release","href":"/api/releases-beta/patch-release-for-flag","autogeneratedByOpenApi":true},{"title":"Update phase status for release","description":"Updates the execution status of a phase of a release","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/flags/{flagKey}/release/phases/{phaseId}","href":"/api/releases-beta/update-phase-status-for-release","autogeneratedByOpenApi":true}]},{"group":"Scheduled changes","root":{"title":"Scheduled changes","description":null,"href":"/api/scheduled-changes"},"pages":[{"title":"Create scheduled changes workflow","description":"Create scheduled changes for a feature flag. The changes you schedule may include any semantic patch instructions available when [updating a feature flag](/api/feature-flags/update-feature-flag#using-semantic-patches-on-a-feature-flag). If the `ignoreConflicts` query parameter is false and there are conflicts between these instructions and existing scheduled changes, the request will fail. If the parameter is true and there are conflicts, the request will succeed.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes","href":"/api/scheduled-changes/create-scheduled-changes-workflow","autogeneratedByOpenApi":true},{"title":"Delete scheduled changes workflow","description":"Delete a scheduled changes workflow.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes/{id}","href":"/api/scheduled-changes/delete-scheduled-changes-workflow","autogeneratedByOpenApi":true},{"title":"Get a scheduled change","description":"Get a scheduled change that will be applied to the feature flag by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes/{id}","href":"/api/scheduled-changes/get-a-scheduled-change","autogeneratedByOpenApi":true},{"title":"List scheduled changes","description":"Get a list of scheduled changes that will be applied to the feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes","href":"/api/scheduled-changes/list-scheduled-changes","autogeneratedByOpenApi":true},{"title":"Update scheduled changes workflow","description":"$5e","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes/{id}","href":"/api/scheduled-changes/update-scheduled-changes-workflow","autogeneratedByOpenApi":true}]},{"group":"SDK Keys (beta)","root":{"title":"SDK Keys (beta)","description":null,"href":"/api/sdk-keys"},"pages":[{"title":"Create SDK key","description":"Create a new server-side or mobile SDK key.\n\nDeleted SDK keys are retained for 180 days. During that period you cannot reuse the `key` of a deleted SDK key, even though the deleted key no longer appears in the list of SDK keys for the environment.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys","href":"/api/sdk-keys-beta/create-sdk-key","autogeneratedByOpenApi":true},{"title":"Delete SDK key","description":"Delete a specific SDK key by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys/{sdkKeyKey}","href":"/api/sdk-keys-beta/delete-sdk-key","autogeneratedByOpenApi":true},{"title":"Get all environment SDK keys","description":"Get all SDK keys for a given project and environment. Can filter by kind.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys","href":"/api/sdk-keys-beta/get-all-environment-sdk-keys","autogeneratedByOpenApi":true},{"title":"Get SDK key","description":"Get a specific SDK key by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys/{sdkKeyKey}","href":"/api/sdk-keys-beta/get-sdk-key","autogeneratedByOpenApi":true},{"title":"Update SDK key","description":"Update a an existing SDK key by its identifying key.","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys/{sdkKeyKey}","href":"/api/sdk-keys-beta/update-sdk-key","autogeneratedByOpenApi":true},{"title":"Get all project SDK keys","description":"Get all SDK keys for a given project across environments.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/sdk-keys","href":"/api/sdk-keys-beta/get-all-project-sdk-keys","autogeneratedByOpenApi":true},{"title":"Replace SDK key views","description":"Replace the set of views associated with an SDK key. The `viewKeys` field is required. To remove all views from the SDK key, pass an empty `viewKeys` array.","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys/{sdkKeyKey}/views","href":"/api/sdk-keys-beta/replace-sdk-key-views","autogeneratedByOpenApi":true}]},{"group":"Segments","root":{"title":"Segments","description":null,"href":"/api/segments"},"pages":[{"title":"Create big segment export","description":"Starts a new export process for a big segment. This is an export for a synced segment or a list-based segment that can include more than 15,000 entries.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/exports","href":"/api/segments/create-big-segment-export","autogeneratedByOpenApi":true},{"title":"Create big segment import","description":"Start a new import process for a big segment. This is an import for a list-based segment that can include more than 15,000 entries.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/imports","href":"/api/segments/create-big-segment-import","autogeneratedByOpenApi":true},{"title":"Create segment","description":"Create a new segment.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/segments/{projectKey}/{environmentKey}","href":"/api/segments/create-segment","autogeneratedByOpenApi":true},{"title":"Delete segment","description":"Delete a segment.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}","href":"/api/segments/delete-segment","autogeneratedByOpenApi":true},{"title":"Get big segment export","description":"Returns information about a big segment export process. This is an export for a synced segment or a list-based segment that can include more than 15,000 entries.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/exports/{exportID}","href":"/api/segments/get-big-segment-export","autogeneratedByOpenApi":true},{"title":"Get big segment import","description":"Returns information about a big segment import process. This is the import of a list-based segment that can include more than 15,000 entries.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/imports/{importID}","href":"/api/segments/get-big-segment-import","autogeneratedByOpenApi":true},{"title":"Get big segment membership for context","description":"Get the membership status (included/excluded) for a given context in this big segment. Big segments include larger list-based segments and synced segments. This operation does not support standard segments.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/contexts/{contextKey}","href":"/api/segments/get-big-segment-membership-for-context","autogeneratedByOpenApi":true},{"title":"Get big segment membership for user","description":"> ### Contexts are now available\n>\n> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Get expiring targets for segment](/api/segments/get-expiring-targets-for-segment) instead of this endpoint. To learn more, read [Contexts](/home/flags/contexts).\n\nGet the membership status (included/excluded) for a given user in this big segment. This operation does not support standard segments.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/users/{userKey}","href":"/api/segments/get-big-segment-membership-for-user","autogeneratedByOpenApi":true},{"title":"Get expiring targets for segment","description":"Get a list of a segment's context targets that are scheduled for removal.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{segmentKey}/expiring-targets/{environmentKey}","href":"/api/segments/get-expiring-targets-for-segment","autogeneratedByOpenApi":true},{"title":"Get expiring user targets for segment","description":"> ### Contexts are now available\n>\n> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Get expiring targets for segment](/api/segments/get-expiring-targets-for-segment) instead of this endpoint. To learn more, read [Contexts](/home/flags/contexts).\n\nGet a list of a segment's user targets that are scheduled for removal.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{segmentKey}/expiring-user-targets/{environmentKey}","href":"/api/segments/get-expiring-user-targets-for-segment","autogeneratedByOpenApi":true},{"title":"Get segment","description":"Get a single segment by key.<br/><br/>Segments can be rule-based, list-based, or synced. Big segments include larger list-based segments and synced segments. Some fields in the response only apply to big segments.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}","href":"/api/segments/get-segment","autogeneratedByOpenApi":true},{"title":"List segment memberships for context instance","description":"For a given context instance with attributes, get membership details for all segments. In the request body, pass in the context instance.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/environments/{environmentKey}/segments/evaluate","href":"/api/segments/list-segment-memberships-for-context-instance","autogeneratedByOpenApi":true},{"title":"List segments","description":"$5f","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/segments/{projectKey}/{environmentKey}","href":"/api/segments/list-segments","autogeneratedByOpenApi":true},{"title":"Patch segment","description":"$60","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}","href":"/api/segments/patch-segment","autogeneratedByOpenApi":true},{"title":"Update context targets on a big segment","description":"Update context targets included or excluded in a big segment. Big segments include larger list-based segments and synced segments. This operation does not support standard segments.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/contexts","href":"/api/segments/update-context-targets-on-a-big-segment","autogeneratedByOpenApi":true},{"title":"Update expiring targets for segment","description":"$61","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/segments/{projectKey}/{segmentKey}/expiring-targets/{environmentKey}","href":"/api/segments/update-expiring-targets-for-segment","autogeneratedByOpenApi":true},{"title":"Update expiring user targets for segment","description":"$62","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/segments/{projectKey}/{segmentKey}/expiring-user-targets/{environmentKey}","href":"/api/segments/update-expiring-user-targets-for-segment","autogeneratedByOpenApi":true},{"title":"Update user context targets on a big segment","description":"Update user context targets included or excluded in a big segment. Big segments include larger list-based segments and synced segments. This operation does not support standard segments.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/segments/{projectKey}/{environmentKey}/{segmentKey}/users","href":"/api/segments/update-user-context-targets-on-a-big-segment","autogeneratedByOpenApi":true}]},{"group":"Tags","root":{"title":"Tags","description":null,"href":"/api/tags"},"pages":[{"title":"List tags","description":"Get a list of tags.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/tags","href":"/api/tags/list-tags","autogeneratedByOpenApi":true}]},{"group":"Teams","root":{"title":"Teams","description":null,"href":"/api/teams"},"pages":[{"title":"Add multiple members to team","description":"$63","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/teams/{teamKey}/members","href":"/api/teams/add-multiple-members-to-team","autogeneratedByOpenApi":true},{"title":"Create team","description":"Create a team. To learn more, read [Creating a team](/home/account/create-teams).\n\n### Expanding the teams response\nLaunchDarkly supports four fields for expanding the \"Create team\" response. By default, these fields are **not** included in the response.\n\nTo expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:\n\n* `members` includes the total count of members that belong to the team.\n* `roles` includes a paginated list of the custom roles that you have assigned to the team.\n* `projects` includes a paginated list of the projects that the team has any write access to.\n* `maintainers` includes a paginated list of the maintainers that you have assigned to the team.\n\nFor example, `expand=members,roles` includes the `members` and `roles` fields in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/teams","href":"/api/teams/create-team","autogeneratedByOpenApi":true},{"title":"Delete team","description":"Delete a team by key. To learn more, read [Deleting teams](/home/account/delete-teams).","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/teams/{teamKey}","href":"/api/teams/delete-team","autogeneratedByOpenApi":true},{"title":"Get team","description":"Fetch a team by key.\n\n### Expanding the teams response\nLaunchDarkly supports several fields for expanding the \"Get team\" response. By default, these fields are **not** included in the response.\n\nTo expand the response, append the `expand` query parameter and add a comma-separated list with any of the following fields:\n\n* `members` includes the total count of members that belong to the team.\n* `roles` includes a paginated list of the custom roles that you have assigned to the team.\n* `roleAttributes` includes a list of the role attributes that you have assigned to the team.\n* `projects` includes a paginated list of the projects that the team has any write access to.\n* `maintainers` includes a paginated list of the maintainers that you have assigned to the team.\n\nFor example, `expand=members,roles` includes the `members` and `roles` fields in the response.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/teams/{teamKey}","href":"/api/teams/get-team","autogeneratedByOpenApi":true},{"title":"Get team custom roles","description":"Fetch the custom roles that have been assigned to the team. To learn more, read [Managing team permissions](/home/account/roles/manage-role-team).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/teams/{teamKey}/roles","href":"/api/teams/get-team-custom-roles","autogeneratedByOpenApi":true},{"title":"Get team maintainers","description":"Fetch the maintainers that have been assigned to the team. To learn more, read [Managing team maintainers](/home/account/team-maintainers).","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/teams/{teamKey}/maintainers","href":"/api/teams/get-team-maintainers","autogeneratedByOpenApi":true},{"title":"List teams","description":"$64","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/teams","href":"/api/teams/list-teams","autogeneratedByOpenApi":true},{"title":"Update team","description":"$65","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/teams/{teamKey}","href":"/api/teams/update-team","autogeneratedByOpenApi":true}]},{"group":"Teams (beta)","root":{"title":"Teams (beta)","description":null,"href":"/api/teams-beta"},"pages":[{"title":"Update teams","description":"$66","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/teams","href":"/api/teams-beta/update-teams","autogeneratedByOpenApi":true}]},{"group":"Users","root":{"title":"Users","description":null,"href":"/api/users"},"pages":[{"title":"Find users","description":"> ### Use contexts instead\n>\n> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Search for contexts](/api/contexts/search-for-contexts) instead of this endpoint.\n\nSearch users in LaunchDarkly based on their last active date, a user attribute filter set, or a search query.\n\nAn example user attribute filter set is `filter=firstName:Anna,activeTrial:false`. This matches users that have the user attribute `firstName` set to `Anna`, that also have the attribute `activeTrial` set to `false`.\n\nTo paginate through results, follow the `next` link in the `_links` object. To learn more, read [Representations](/api/overview#representations).\n","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/user-search/{projectKey}/{environmentKey}","href":"/api/users/find-users","autogeneratedByOpenApi":true},{"title":"Get user","description":"> ### Use contexts instead\n>\n> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Get contexts](/api/contexts/get-contexts) instead of this endpoint.\n\nGet a user by key. The `user` object contains all attributes sent in `variation` calls for that key.\n","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/users/{projectKey}/{environmentKey}/{userKey}","href":"/api/users/get-user","autogeneratedByOpenApi":true},{"title":"List users","description":"> ### Use contexts instead\n>\n> After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should use [Search for contexts](/api/contexts/search-for-contexts) instead of this endpoint.\n\nList all users in the environment. Includes the total count of users. This is useful for exporting all users in the system for further analysis.\n\nEach page displays users up to a set `limit`. The default is 20. To page through, follow the `next` link in the `_links` object. To learn more, read [Representations](/api/overview#representations).\n","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/users/{projectKey}/{environmentKey}","href":"/api/users/list-users","autogeneratedByOpenApi":true}]},{"group":"User settings","root":{"title":"User settings","description":null,"href":"/api/user-settings"},"pages":[{"title":"Get expiring dates on flags for user","description":"Get a list of flags for which the given user is scheduled for removal.","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/users/{projectKey}/{userKey}/expiring-user-targets/{environmentKey}","href":"/api/user-settings/get-expiring-dates-on-flags-for-user","autogeneratedByOpenApi":true},{"title":"Get flag setting for user","description":"Get a single flag setting for a user by flag key. <br /><br />The `_value` is the flag variation that the user receives. The `setting` indicates whether you've explicitly targeted a user to receive a particular variation. For example, if you have turned off a feature flag for a user, this setting will be `false`. The example response indicates that the user `Abbie_Braun` has the `sort.order` flag enabled.","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/users/{projectKey}/{environmentKey}/{userKey}/flags/{featureFlagKey}","href":"/api/user-settings/get-flag-setting-for-user","autogeneratedByOpenApi":true},{"title":"List flag settings for user","description":"Get the current flag settings for a given user. <br /><br />The `_value` is the flag variation that the user receives. The `setting` indicates whether you've explicitly targeted a user to receive a particular variation. For example, if you have turned off a feature flag for a user, this setting will be `false`. The example response indicates that the user `Abbie_Braun` has the `sort.order` flag enabled and the `alternate.page` flag disabled, and that the user has not been explicitly targeted to receive a particular variation.","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/v2/users/{projectKey}/{environmentKey}/{userKey}/flags","href":"/api/user-settings/list-flag-settings-for-user","autogeneratedByOpenApi":true},{"title":"Update expiring user target for flags","description":"$67","deprecated":true,"version":null,"openapi":"/api/openapi.json patch /api/v2/users/{projectKey}/{userKey}/expiring-user-targets/{environmentKey}","href":"/api/user-settings/update-expiring-user-target-for-flags","autogeneratedByOpenApi":true},{"title":"Update flag settings for user","description":"Enable or disable a feature flag for a user based on their key.\n\nOmitting the `setting` attribute from the request body, or including a `setting` of `null`, erases the current setting for a user.\n\nIf you previously patched the flag, and the patch included the user's data, LaunchDarkly continues to use that data. If LaunchDarkly has never encountered the user's key before, it calculates the flag values based on the user key alone.\n","deprecated":true,"version":null,"openapi":"/api/openapi.json put /api/v2/users/{projectKey}/{environmentKey}/{userKey}/flags/{featureFlagKey}","href":"/api/user-settings/update-flag-settings-for-user","autogeneratedByOpenApi":true}]},{"group":"Views (beta)","root":{"title":"Views (beta)","description":null,"href":"/api/views"},"pages":[{"title":"Create view","description":"Create a new view in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/views","href":"/api/views-beta/create-view","autogeneratedByOpenApi":true},{"title":"Delete view","description":"Delete a specific view by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/views/{viewKey}","href":"/api/views-beta/delete-view","autogeneratedByOpenApi":true},{"title":"Get linked resources","description":"Get a list of all linked resources for a given view.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/views/{viewKey}/linked/{resourceType}","href":"/api/views-beta/get-linked-resources","autogeneratedByOpenApi":true},{"title":"Get linked views for a given resource","description":"Get a list of all linked views for a resource. Flags and AI configs are identified by key. Segments are identified by segment ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/view-associations/{resourceType}/{resourceKey}","href":"/api/views-beta/get-linked-views-for-a-given-resource","autogeneratedByOpenApi":true},{"title":"Get view","description":"Retrieve a specific view by its key.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/views/{viewKey}","href":"/api/views-beta/get-view","autogeneratedByOpenApi":true},{"title":"Link resource","description":"Link one or multiple resources to a view by keys, filters, or both:\n- Link flags using flag keys or filters (maintainerId, maintainerTeamKey, tags, state, query)\n- Link segments using segment IDs or filters (tags, query, unbounded)\n- Link AI configs using config keys\n\nWhen both keys and filters are provided, resources matching either condition are linked (union).\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/views/{viewKey}/link/{resourceType}","href":"/api/views-beta/link-resource","autogeneratedByOpenApi":true},{"title":"List views","description":"Get a list of all views in the given project.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/views","href":"/api/views-beta/list-views","autogeneratedByOpenApi":true},{"title":"Unlink resource","description":"Unlink one or multiple resources from a view:\n- Unlink flags using flag keys\n- Unlink segments using segment IDs\n- Unlink AI configs using config keys\n","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/views/{viewKey}/link/{resourceType}","href":"/api/views-beta/unlink-resource","autogeneratedByOpenApi":true},{"title":"Update view","description":"Edit an existing view.\n\nThe request body must be a JSON object of the fields to update. The values you include replace the existing values for the fields.\n\nHere's an example:\n  ```\n    {\n      \"description\": \"Example updated description\",\n      \"tags\": [\"new-tag\"]\n    }\n  ```\n","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/projects/{projectKey}/views/{viewKey}","href":"/api/views-beta/update-view","autogeneratedByOpenApi":true}]},{"group":"Webhooks","root":{"title":"Webhooks","description":null,"href":"/api/webhooks"},"pages":[{"title":"Creates a webhook","description":"Create a new webhook.","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/webhooks","href":"/api/webhooks/creates-a-webhook","autogeneratedByOpenApi":true},{"title":"Delete webhook","description":"Delete a webhook by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/webhooks/{id}","href":"/api/webhooks/delete-webhook","autogeneratedByOpenApi":true},{"title":"Get webhook","description":"Get a single webhook by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/webhooks/{id}","href":"/api/webhooks/get-webhook","autogeneratedByOpenApi":true},{"title":"List webhooks","description":"Fetch a list of all webhooks.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/webhooks","href":"/api/webhooks/list-webhooks","autogeneratedByOpenApi":true},{"title":"Update webhook","description":"Update a webhook's settings. Updating webhook settings uses a [JSON patch](https://datatracker.ietf.org/doc/html/rfc6902) representation of the desired changes. To learn more, read [Updates](/api/overview#updates).","deprecated":null,"version":null,"openapi":"/api/openapi.json patch /api/v2/webhooks/{id}","href":"/api/webhooks/update-webhook","autogeneratedByOpenApi":true}]},{"group":"Workflows","root":{"title":"Workflows","description":null,"href":"/api/workflows"},"pages":[{"title":"Create workflow","description":"$68","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows","href":"/api/workflows/create-workflow","autogeneratedByOpenApi":true},{"title":"Delete workflow","description":"Delete a workflow from a feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows/{workflowId}","href":"/api/workflows/delete-workflow","autogeneratedByOpenApi":true},{"title":"Get custom workflow","description":"Get a specific workflow by ID.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows/{workflowId}","href":"/api/workflows/get-custom-workflow","autogeneratedByOpenApi":true},{"title":"Get workflows","description":"Display workflows associated with a feature flag.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows","href":"/api/workflows/get-workflows","autogeneratedByOpenApi":true}]},{"group":"Workflow templates","root":{"title":"Workflow templates","description":null,"href":"/api/workflow-templates"},"pages":[{"title":"Create workflow template","description":"> ### Workflows are in maintenance mode\n>\n> The workflows feature is in maintenance mode, and is planned for future deprecation at a date not yet specified. We will work with existing customers using workflows to migrate to a replacement solution when deprecation occurs.\n\nCreate a template for a feature flag workflow.\n","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/v2/templates","href":"/api/workflow-templates/create-workflow-template","autogeneratedByOpenApi":true},{"title":"Delete workflow template","description":"Delete a workflow template","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/v2/templates/{templateKey}","href":"/api/workflow-templates/delete-workflow-template","autogeneratedByOpenApi":true},{"title":"Get workflow templates","description":"Get workflow templates belonging to an account, or can optionally return templates_endpoints.workflowTemplateSummariesListingOutputRep when summary query param is true","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/templates","href":"/api/workflow-templates/get-workflow-templates","autogeneratedByOpenApi":true}]},{"group":"Other","root":{"title":"Other","description":null,"href":"/api/other"},"pages":[{"title":"Get version information","description":"Get the latest API version, the list of valid API versions in ascending order, and the version being used for this request. These are all in the external, date-based format.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/versions","href":"/api/other/get-version-information","autogeneratedByOpenApi":true},{"title":"Gets the OpenAPI spec in json","description":"Get the latest version of the OpenAPI specification for LaunchDarkly's API in JSON format. In the sandbox, click 'Play' and enter any string in the 'Authorization' field to test this endpoint.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/openapi.json","href":"/api/other/gets-the-openapi-spec-in-json","autogeneratedByOpenApi":true},{"title":"Gets the public IP list","description":"Get a list of IP ranges the LaunchDarkly service uses. You can use this list to allow LaunchDarkly through your firewall. We post upcoming changes to this list in advance on our [status page](https://status.launchdarkly.com/). <br /><br />In the sandbox, click 'Play' and enter any string in the 'Authorization' field to test this endpoint.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/public-ip-list","href":"/api/other/gets-the-public-ip-list","autogeneratedByOpenApi":true},{"title":"Identify the caller","description":"Get basic information about the identity used (session cookie, API token, SDK keys, etc.) to call the API","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2/caller-identity","href":"/api/other/identify-the-caller","autogeneratedByOpenApi":true},{"title":"Root resource","description":"Get all of the resource categories the API supports. In the sandbox, click 'Play' and enter any string in the 'Authorization' field to test this endpoint.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/v2","href":"/api/other/root-resource","autogeneratedByOpenApi":true}]}]}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/tutorials"}]},{"tab":"Flagship blog","pages":[{"title":"Flagship blog","href":"/blog"}]}]},"maps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"children":"$L69"}]
6a:I[28330,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"SkipToContent"]
6b:I[382229,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"AssistantLayoutScript"]
6c:I[87732,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"AssistantLayoutWrapper"]
6d:I[118717,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6cb3e8b7f002b825.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"NotFoundHydrator"]
6e:I[763509,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ThemeLayout"]
6f:I[91557,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"ApiReferenceProvider"]
70:I[114793,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"PageProvider"]
40:["$","$L6a",null,{}]
41:["$","$L6b",null,{"hasChatPermissions":true}]
42:["$","$L6c",null,{"children":[["$","$Lf",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L11",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","$L6d",null,{"source":"multitenant"}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],"$undefined"]}]
69:["$","$L6e",null,{"theme":"aspen","pageMetadata":{"title":"REST API overview","description":null,"href":"/api/overview"},"children":["$","$L6f",null,{"value":{"apiReferenceData":{},"graphqlReferenceData":"$undefined"},"children":["$","$L70",null,{"value":{"pageMetadata":"$69:props:pageMetadata","lastModified":"2026-10-05T22:49:00.878Z","gitLastModified":"$undefined","originalFileLocation":"api/overview.mdx","description":null,"mdxExtracts":{"tableOfContents":[{"title":"Authentication","slug":"authentication","depth":2,"children":[{"title":"Keep your access tokens and SDK keys private","slug":"keep-your-access-tokens-and-sdk-keys-private","depth":4,"children":[]},{"title":"Authentication using request header","slug":"authentication-using-request-header","depth":3,"children":[]},{"title":"Authentication using session cookie","slug":"authentication-using-session-cookie","depth":3,"children":[]},{"title":"Modifying the Origin header causes an error","slug":"modifying-the-origin-header-causes-an-error","depth":3,"children":[]}]},{"title":"Representations","slug":"representations","depth":2,"children":[{"title":"Summary and detailed representations","slug":"summary-and-detailed-representations","depth":3,"children":[]},{"title":"Expanding responses","slug":"expanding-responses","depth":3,"children":[]},{"title":"Links and addressability","slug":"links-and-addressability","depth":3,"children":[]}]},{"title":"Updates","slug":"updates","depth":2,"children":[{"title":"Updates using JSON patch","slug":"updates-using-json-patch","depth":3,"children":[]},{"title":"Updates using JSON merge patch","slug":"updates-using-json-merge-patch","depth":3,"children":[]},{"title":"Updates using semantic patch","slug":"updates-using-semantic-patch","depth":3,"children":[]},{"title":"Updates with comments","slug":"updates-with-comments","depth":3,"children":[]}]},{"title":"Errors","slug":"errors","depth":2,"children":[{"title":"HTTP status error response codes","slug":"http-status-error-response-codes","depth":3,"children":[]}]},{"title":"CORS","slug":"cors","depth":2,"children":[]},{"title":"Rate limiting","slug":"rate-limiting","depth":2,"children":[{"title":"Rate limiting and SDKs","slug":"rate-limiting-and-sdks","depth":3,"children":[]},{"title":"Global rate limits","slug":"global-rate-limits","depth":3,"children":[]},{"title":"Route-level rate limits","slug":"route-level-rate-limits","depth":3,"children":[]},{"title":"Access token rate limits","slug":"access-token-rate-limits","depth":3,"children":[]},{"title":"IP-based rate limiting","slug":"ip-based-rate-limiting","depth":3,"children":[]}]},{"title":"OpenAPI (Swagger) and client libraries","slug":"openapi-swagger-and-client-libraries","depth":2,"children":[]},{"title":"Method overriding","slug":"method-overriding","depth":2,"children":[]},{"title":"Beta resources","slug":"beta-resources","depth":2,"children":[{"title":"This feature is in beta","slug":"this-feature-is-in-beta","depth":3,"children":[]},{"title":"Using beta resources","slug":"using-beta-resources","depth":3,"children":[]}]},{"title":"Federal and EU environments","slug":"federal-and-eu-environments","depth":2,"children":[{"title":"Federal environments","slug":"federal-environments","depth":3,"children":[]},{"title":"EU environments","slug":"eu-environments","depth":3,"children":[]}]},{"title":"Versioning","slug":"versioning","depth":2,"children":[{"title":"Setting the API version per request","slug":"setting-the-api-version-per-request","depth":3,"children":[]},{"title":"Setting the API version per access token","slug":"setting-the-api-version-per-access-token","depth":3,"children":[]},{"title":"Best practice: Set the header for every client or integration","slug":"best-practice-set-the-header-for-every-client-or-integration","depth":3,"children":[]},{"title":"API version changelog","slug":"api-version-changelog","depth":3,"children":[]}]}],"multiViewItems":[{"title":"Developer","content":"","id":"developer","active":true},{"title":"Federal docs","content":"","id":"federal-docs","active":false},{"title":"EU docs","content":"","id":"eu-docs","active":false}],"codeExamples":{}},"pageType":"$undefined","panelMdxSource":"$undefined","panelMdxSourceWithNoJs":"$undefined","contextualStarterQuestions":[{"_id":"6ac429cadf796feb97911b36","deploymentId":"6a21d43f4a432b475a5f38ac","questionText":"How do I get an access token?","status":"active","generatedBy":"contextual","path":"api/overview","createdAt":"2026-10-05T22:50:50.918Z","updatedAt":"2026-10-05T22:50:50.918Z","__v":0},{"_id":"6ac429cadf796feb97911b35","deploymentId":"6a21d43f4a432b475a5f38ac","questionText":"What tokens work with REST API?","status":"active","generatedBy":"contextual","path":"api/overview","createdAt":"2026-10-05T22:50:50.918Z","updatedAt":"2026-10-05T22:50:50.918Z","__v":0},{"_id":"6ac429cadf796feb97911b34","deploymentId":"6a21d43f4a432b475a5f38ac","questionText":"How do I authenticate API calls?","status":"active","generatedBy":"contextual","path":"api/overview","createdAt":"2026-10-05T22:50:50.918Z","updatedAt":"2026-10-05T22:50:50.918Z","__v":0}],"relatedPages":"$undefined","relatedPagesConfig":"$undefined","narration":"$undefined"},"children":"$L71"}]}]}]
72:I[91557,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"OpenApiProvider"]
73:I[525343,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"TabSyncContextProvider"]
75:I[228341,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"PageModeUpdater"]
76:I[575126,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"Background"]
74:T673,{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://launchdarkly.com/#organization","name":"LaunchDarkly","url":"https://launchdarkly.com","logo":{"@type":"ImageObject","url":"https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/logo/logo-light.svg?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=f4dbea60f22010ab8a14e328c1759864"}},{"@type":"WebSite","@id":"https://launchdarkly.com/docs#website","name":"LaunchDarkly","url":"https://launchdarkly.com/docs","publisher":{"@id":"https://launchdarkly.com/#organization"}},{"@type":"WebPage","@id":"https://launchdarkly.com/docs/api/overview#webpage","url":"https://launchdarkly.com/docs/api/overview","name":"REST API overview","dateModified":"2026-10-05T22:49:00.878Z","isPartOf":{"@id":"https://launchdarkly.com/docs#website"},"breadcrumb":{"@id":"https://launchdarkly.com/docs/api/overview#breadcrumb"}},{"@type":"BreadcrumbList","@id":"https://launchdarkly.com/docs/api/overview#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"LaunchDarkly","item":"https://launchdarkly.com/docs"},{"@type":"ListItem","position":2,"name":"REST API overview","item":"https://launchdarkly.com/docs/api/overview"}]},{"@type":["Article","TechArticle"],"@id":"https://launchdarkly.com/docs/api/overview#article","headline":"REST API overview","name":"REST API overview","url":"https://launchdarkly.com/docs/api/overview","mainEntityOfPage":{"@id":"https://launchdarkly.com/docs/api/overview#webpage"},"dateModified":"2026-10-05T22:49:00.878Z","publisher":{"@id":"https://launchdarkly.com/#organization"},"isPartOf":{"@id":"https://launchdarkly.com/docs#website"}}]}77:T1a77,@import url("https://fonts.googleapis.com/css2?family=Sora:wght@400&display=swap");

h1 {
  font-family: Sora, sans-serif !important;
}

.authorWrapper {
  display: flex;
  align-items: center;
  /* HACK HACK HACK */
  margin-bottom: -3em;
  margin-top: -1em;
}

.authorName {
  font-size: 18px;
  font-family: Audimat;
  margin-left: 5px;
}

.authorAvatar {
  height: 2em;
  width: 2em;
  border-radius: 50%;
}

.publishedDate {
  font-size: 1rem;
  font-weight: 600;
  margin: 0;
}

h4 {
  line-height: 1.5rem;
}

td,
th {
  vertical-align: top;
}

/* Tables must fit the available width instead of scrolling horizontally */
table {
  /* theme sets display:block; overflow:auto on .prose table, which makes it a scroll container */
  display: table !important;
  overflow: visible !important;
  table-layout: fixed !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
}

td,
th {
  min-width: 0;
  overflow-wrap: break-word;
}

td code,
th code {
  word-break: normal !important;
  overflow-wrap: normal !important;
  white-space: nowrap !important;
  hyphens: none !important;
}

#footer:before {
  content: "© 2025 Catamorphic Co.";
  color: #737373;
  background: transparent;
  display: inline-block;
  width: 100%;
  text-align: start;
  margin-bottom: 17px;
  font-size: 13px;
}

/* Inner page helpers */
.number-monospace {
  width: 24px;
  display: inline-block;
}
.text-indent {
  padding-left: 28px;
}

.homepage_img_card img {
  max-width: 200px;
}

.add-resource-section .card img {
  max-width: 100px;
  margin: 20px auto 0;
}

.mdx-content .link:not(.homepage_links a):not(.download_btn),
.mdx-content .link:not(.homepage_links a):not(.download_btn) strong,
.dark .mdx-content .link:not(.homepage_links a):not(.download_btn) code {
  color: rgb(var(--primary));
}

.dark .mdx-content .link:not(.homepage_links a):not(.download_btn),
.dark .mdx-content .link:not(.homepage_links a):not(.download_btn) strong,
.dark .mdx-content .link:not(.homepage_links a):not(.download_btn) code {
  color: rgb(var(--primary-light));
}

.dark .homepage_links a {
  border-bottom-color: #000;
}

.homepage_cards div.size-6 {
  width: 30px;
  height: 30px;
  border-radius: 6px;
  justify-content: center;
  align-items: center;
  display: flex;
}

.homepage_cards div.size-6 svg {
  width: 18px;
  height: 18px;
}

.homepage_cards .card1 div.size-6 {
  background-color: #cffc55;
}

.homepage_cards .card2 div.size-6 {
  background-color: #c084fc;
}

.homepage_cards .card3 div.size-6 {
  background-color: #38bdf8;
}

.sdk_grid .card > div {
  padding: 10px 24px;
}

.sdk_grid img,
.sdk_grid div.size-6 {
  width: 36px !important;
  height: 36px !important;
  object-fit: contain;
}

.blog_cards .card > div.flex {
  align-items: start;
}

.view_callout span {
  font-size: 14px;
}

/* Homepage hero headline. Mintlify sizes every page title with the same utilities
   (text-2xl sm:text-3xl), which reads as a section heading rather than a hero.
   52px/1.1 matches .docs-home .heading-container h1 on the Fern homepage. Scoped
   through #body-content.homepage-bg, the class Home.jsx adds, so only the homepage
   title grows; the ID+class+ID specificity is what beats the Tailwind utilities. */
#body-content.homepage-bg #page-title {
  font-size: 36px;
  line-height: 1.1;
}

@media (min-width: 640px) {
  #body-content.homepage-bg #page-title {
    font-size: 52px;
  }
}

#body-content.homepage-bg {
  position: relative;
}

#body-content.homepage-bg::before {
  content: "";
  position: absolute;
  top: 0;
  right: -300px;
  width: 480px;
  height: 480px;
  background-color: #cffc55;
  /* Inlined rather than url("/images/homepage/lightning-bolt.svg"): Mintlify does not
     prefix CSS url()s with the site's base path, so a root path 404s under /docs
     (launchdarkly.com/docs, launchdarkly.mintlify.site/docs). Source:
     images/homepage/lightning-bolt.svg. A mask only reads alpha, so fill is irrelevant. */
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 560.317 560.316'%3E%3Cpath d='M207.523,560.316c0,0,194.42-421.925,194.444-421.986l10.79-23.997c-41.824,12.02-135.271,34.902-135.57,35.833 C286.96,122.816,329.017,0,330.829,0c-39.976,0-79.952,0-119.927,0l-12.167,57.938l-51.176,209.995l135.191-36.806 L207.523,560.316z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 560.317 560.316'%3E%3Cpath d='M207.523,560.316c0,0,194.42-421.925,194.444-421.986l10.79-23.997c-41.824,12.02-135.271,34.902-135.57,35.833 C286.96,122.816,329.017,0,330.829,0c-39.976,0-79.952,0-119.927,0l-12.167,57.938l-51.176,209.995l135.191-36.806 L207.523,560.316z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: top right;
  mask-position: top right;
  -webkit-mask-size: contain;
  mask-size: contain;
  pointer-events: none;
  z-index: -1;
}

.dark #body-content.homepage-bg::before {
  background-color: rgb(207 252 85 / 25%);
}

@media (max-width: 1840px) {
  #body-content.homepage-bg::before {
    right: -200px;
  }
}

@media (max-width: 1590px) {
  #body-content.homepage-bg::before {
    right: -100px;
  }
}

@media (max-width: 1280px) {
  #body-content.homepage-bg::before {
    width: 380px;
    height: 380px;
  }
}

@media (max-width: 1024px) {
  #body-content.homepage-bg::before {
    right: -80px;
    top: 110px;
  }
}

@media (max-width: 768px) {
  #body-content.homepage-bg::before {
    right: -20px;
    width: 260px;
    height: 260px;
  }
}

@media (max-width: 480px) {
  #body-content.homepage-bg::before {
    right: 0;
    width: 200px;
    height: 200px;
  }
}

/* Remove the radial primary-color glow the Aspen "grid" background decoration paints behind the top of the page */
#background-color ~ span[style*="radial-gradient"] {
  background: none !important;
}

/* Navbar "Try it free" CTA: Mintlify labels it with Tailwind's text-white and
   paints the pill with bg-primary-dark, so the label sits white-on-light-green
   (#90C610) at roughly 2:1 contrast and reads differently from "Sign in" beside
   it. Deliberately NOT scoped to .dark: the markup carries no dark: variant, so
   the label is white in light mode too and the same fix applies to both.
   Targets the element rather than .text-white because the chevron's utility is
   text-white/90, a different class token. */
#topbar-cta-button span,
#topbar-cta-button svg {
  color: #000;
}

/* Tightens gaps in the middle of a list when using <FlagGate> or <View> */
.mdx-content ul:has(+ ul),
.mdx-content ul:has(+ .multi-view-item > ul:first-child) {
  margin-bottom: 8px;
}

.mdx-content ul + ul,
.mdx-content ul + .multi-view-item:has(> ul:first-child) {
  margin-top: 8px;
}
71:["$","$L72",null,{"pageMetadata":"$69:props:pageMetadata","mdxExtracts":"$69:props:children:props:children:props:value:mdxExtracts","openApiReferenceData":"$undefined","children":["$","$L73",null,{"children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$74"}}],[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"document.documentElement.setAttribute('data-page-mode', \"none\");"}}],["$","$L75",null,{"pageMetadata":"$69:props:pageMetadata"}]],["$","$L76",null,{"pageMetadata":"$69:props:pageMetadata"}],[["$","style","0",{"data-custom-css-index":0,"data-custom-css-path":"css/styles.css","dangerouslySetInnerHTML":{"__html":"$77"}}]],"$L78","$L79"]}]}]
7a:I[36098,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"CustomJsFiles"]
7d:I[530359,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"MDXContentController"]
7e:I[448287,["/docs/_next/static/chunks/607c8643ad3fc16c.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1e7a188add93a653.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/343f3c7f568a2e5d.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c50d793b8f34b10b.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/ccee8d9b3189ccd9.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4b5ce3dde97749ea.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3b847e5370bd724e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/4fa3ca58dfaaeff8.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8d0901e40ed4b058.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/468295ca52ed5c09.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/3f8f2653ff1ad14e.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/da953b59c0c41f06.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/f0ef0acaeece4a23.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/7538d80a516400fa.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/8a19ec8c194a3b47.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/589b24301b3a37b4.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/d2fedac44d815262.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c3a3ab2374198660.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/de5d31edef447a03.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/6fb38247c19b3981.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/169b60fad1d35826.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/9db9880c49eded60.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/41c8239ff6030cd1.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e452a5c043e34035.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/fde44643dbef1bcd.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/c58283ba69dd38df.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/e5dcdb55f621f74a.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg","/docs/_next/static/chunks/1a0bf1d33a977db0.js?dpl=dpl_85FPJr2ULknBawpaqu4avf4kcNyg"],"default"]
7b:Td19f,!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LDClient={})}(this,function(e){"use strict";function t(e){function t(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.message=e,this.code=t}return t.prototype=new Error,t.prototype.name=e,t.prototype.constructor=t,t}const n=t("LaunchDarklyUnexpectedResponseError"),r=t("LaunchDarklyInvalidEnvironmentIdError"),o=t("LaunchDarklyInvalidUserError"),i=t("LaunchDarklyInvalidEventKeyError"),a=t("LaunchDarklyInvalidArgumentError"),s=t("LaunchDarklyFlagFetchError");for(var c={LDUnexpectedResponseError:n,LDInvalidEnvironmentIdError:r,LDInvalidUserError:o,LDInvalidEventKeyError:i,LDInvalidArgumentError:a,LDInvalidDataError:t("LaunchDarklyInvalidDataError"),LDFlagFetchError:s,LDTimeoutError:t("LaunchDarklyTimeoutError"),isHttpErrorRecoverable:function(e){return!(e>=400&&e<500)||(400===e||408===e||429===e)}},u=function(e){var t=h(e),n=t[0],r=t[1];return 3*(n+r)/4-r},l=function(e){var t,n,r=h(e),o=r[0],i=r[1],a=new v(function(e,t,n){return 3*(t+n)/4-n}(0,o,i)),s=0,c=i>0?o-4:o;for(n=0;n<c;n+=4)t=g[e.charCodeAt(n)]<<18|g[e.charCodeAt(n+1)]<<12|g[e.charCodeAt(n+2)]<<6|g[e.charCodeAt(n+3)],a[s++]=t>>16&255,a[s++]=t>>8&255,a[s++]=255&t;2===i&&(t=g[e.charCodeAt(n)]<<2|g[e.charCodeAt(n+1)]>>4,a[s++]=255&t);1===i&&(t=g[e.charCodeAt(n)]<<10|g[e.charCodeAt(n+1)]<<4|g[e.charCodeAt(n+2)]>>2,a[s++]=t>>8&255,a[s++]=255&t);return a},d=function(e){for(var t,n=e.length,r=n%3,o=[],i=16383,a=0,s=n-r;a<s;a+=i)o.push(w(e,a,a+i>s?s:a+i));1===r?(t=e[n-1],o.push(f[t>>2]+f[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(f[t>>10]+f[t>>4&63]+f[t<<2&63]+"="));return o.join("")},f=[],g=[],v="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",m=0;m<64;++m)f[m]=p[m],g[p.charCodeAt(m)]=m;function h(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function y(e){return f[e>>18&63]+f[e>>12&63]+f[e>>6&63]+f[63&e]}function w(e,t,n){for(var r,o=[],i=t;i<n;i+=3)r=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(255&e[i+2]),o.push(y(r));return o.join("")}g["-".charCodeAt(0)]=62,g["_".charCodeAt(0)]=63;var k={byteLength:u,toByteArray:l,fromByteArray:d},b=Array.isArray,E=Object.keys,D=Object.prototype.hasOwnProperty,x=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){var r,o,i,a=b(t),s=b(n);if(a&&s){if((o=t.length)!=n.length)return!1;for(r=o;0!==r--;)if(!e(t[r],n[r]))return!1;return!0}if(a!=s)return!1;var c=t instanceof Date,u=n instanceof Date;if(c!=u)return!1;if(c&&u)return t.getTime()==n.getTime();var l=t instanceof RegExp,d=n instanceof RegExp;if(l!=d)return!1;if(l&&d)return t.toString()==n.toString();var f=E(t);if((o=f.length)!==E(n).length)return!1;for(r=o;0!==r--;)if(!D.call(n,f[r]))return!1;for(r=o;0!==r--;)if(!e(t[i=f[r]],n[i]))return!1;return!0}return t!=t&&n!=n};const O=["key","ip","country","email","firstName","lastName","avatar","name"];function P(e){const t=unescape(encodeURIComponent(e));return k.fromByteArray(function(e){const t=[];for(let n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t}(t))}function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var S={appendUrlPath:function(e,t){return(e.endsWith("/")?e.substring(0,e.length-1):e)+(t.startsWith("/")?"":"/")+t},base64URLEncode:function(e){return P(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")},btoa:P,clone:function(e){return JSON.parse(JSON.stringify(e))},deepEquals:function(e,t){return x(e,t)},extend:function(...e){return e.reduce((e,t)=>({...e,...t}),{})},getLDUserAgentString:function(e){const t=e.version||"?";return e.userAgent+"/"+t},objectHasOwnProperty:C,onNextTick:function(e){setTimeout(e,0)},sanitizeContext:function(e){if(!e)return e;let t;return null!==e.kind&&void 0!==e.kind||O.forEach(n=>{const r=e[n];void 0!==r&&"string"!=typeof r&&(t=t||{...e},t[n]=String(r))}),t||e},transformValuesToVersionedValues:function(e){const t={};for(const n in e)C(e,n)&&(t[n]={value:e[n],version:0});return t},transformVersionedValuesToValues:function(e){const t={};for(const n in e)C(e,n)&&(t[n]=e[n].value);return t},wrapPromiseCallback:function(e,t){const n=e.then(e=>(t&&setTimeout(()=>{t(null,e)},0),e),e=>{if(!t)return Promise.reject(e);setTimeout(()=>{t(e,null)},0)});return t?void 0:n},once:function(e){let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}}};const I={start:0,end:3},T={start:4,end:5},F={start:6,end:7},L={start:8,end:8},j={start:9,end:9},U={start:10,end:15};function R(e,t){let n="";for(let r=t.start;r<=t.end;r+=1)n+=e[r].toString(16).padStart(2,"0");return n}function A(e){return e[L.start]=191&e[L.start]|128,e[F.start]=15&e[F.start]|64,`${R(e,I)}-${R(e,T)}-${R(e,F)}-${R(e,L)}${R(e,j)}-${R(e,U)}`}function N(){const e=function(){if("undefined"!=typeof crypto&&crypto.getRandomValues){const e=new Uint8Array(16);return crypto.getRandomValues(e),[...e.values()]}const e=[];for(let t=0;t<16;t+=1)e.push(Math.floor(256*Math.random()));return e}();return A(e)}var $={randomUuidV4:function(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():N()},fallbackUuidV4:N,formatDataAsUuidV4:A};const V=["debug","info","warn","error","none"];var H={commonBasicLogger:function(e,t){if(e&&e.destination&&"function"!=typeof e.destination)throw new Error("destination for basicLogger was set to a non-function");function n(e){return function(t){console&&console[e]&&console[e].call(console,t)}}const r=e&&e.destination?[e.destination,e.destination,e.destination,e.destination]:[n("log"),n("info"),n("warn"),n("error")],o=!(!e||!e.destination),i=e&&void 0!==e.prefix&&null!==e.prefix?e.prefix:"[LaunchDarkly] ";let a=1;if(e&&e.level)for(let t=0;t<V.length;t++)V[t]===e.level&&(a=t);function s(e,n,a){if(a.length<1)return;let s;const c=o?n+": "+i:i;if(1!==a.length&&t){const e=[...a];e[0]=c+e[0],s=t(...e)}else s=c+a[0];try{r[e](s)}catch(e){console&&console.log&&console.log("[LaunchDarkly] Configured logger's "+n+" method threw an exception: "+e)}}const c={};for(let e=0;e<V.length;e++){const t=V[e];if("none"!==t)if(e<a)c[t]=()=>{};else{const n=e;c[t]=function(){s(n,t,arguments)}}}return c},validateLogger:function(e){V.forEach(t=>{if("none"!==t&&(!e[t]||"function"!=typeof e[t]))throw new Error("Provided logger instance must support logger."+t+"(...) method")})}};function M(e){return e&&e.message?e.message:"string"==typeof e||e instanceof String?e:JSON.stringify(e)}const q=" Please see https://docs.launchdarkly.com/sdk/client-side/javascript#initialize-the-client for instructions on SDK initialization.";var z={bootstrapInvalid:function(){return"LaunchDarkly bootstrap data is not available because the back end could not read the flags."},bootstrapOldFormat:function(){return"LaunchDarkly client was initialized with bootstrap data that did not include flag metadata. Events may not be sent correctly."+q},clientInitialized:function(){return"LaunchDarkly client initialized"},clientNotReady:function(){return"LaunchDarkly client is not ready"},debugEnqueueingEvent:function(e){return'enqueueing "'+e+'" event'},debugPostingDiagnosticEvent:function(e){return"sending diagnostic event ("+e.kind+")"},debugPostingEvents:function(e){return"sending "+e+" events"},debugStreamDelete:function(e){return'received streaming deletion for flag "'+e+'"'},debugStreamDeleteIgnored:function(e){return'received streaming deletion for flag "'+e+'" but ignored due to version check'},debugStreamPatch:function(e){return'received streaming update for flag "'+e+'"'},debugStreamPatchIgnored:function(e){return'received streaming update for flag "'+e+'" but ignored due to version check'},debugStreamPing:function(){return"received ping message from stream"},debugPolling:function(e){return"polling for feature flags at "+e},debugStreamPut:function(){return"received streaming update for all flags"},deprecated:function(e,t){return t?'"'+e+'" is deprecated, please use "'+t+'"':'"'+e+'" is deprecated'},environmentNotFound:function(){return"Environment not found. Double check that you specified a valid environment/client-side ID."+q},environmentNotSpecified:function(){return"No environment/client-side ID was specified."+q},errorFetchingFlags:function(e){return"Error fetching flag settings: "+M(e)},eventCapacityExceeded:function(){return"Exceeded event queue capacity. Increase capacity to avoid dropping events."},eventWithoutContext:function(){return"Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/sdk/features/identify#javascript"},httpErrorMessage:function(e,t,n){return"Received error "+e+(401===e?" (invalid SDK key)":"")+" for "+t+" - "+(c.isHttpErrorRecoverable(e)?n:"giving up permanently")},httpUnavailable:function(){return"Cannot make HTTP requests in this environment."+q},identifyDisabled:function(){return"identify() has no effect here; it must be called on the main client instance"},inspectorMethodError:(e,t)=>`an inspector: "${t}" of type: "${e}" generated an exception`,invalidContentType:function(e){return'Expected application/json content type but got "'+e+'"'},invalidData:function(){return"Invalid data received from LaunchDarkly; connection may have been interrupted"},invalidInspector:(e,t)=>`an inspector: "${t}" of an invalid type (${e}) was configured`,invalidKey:function(){return"Event key must be a string"},invalidMetricValue:e=>`The track function was called with a non-numeric "metricValue" (${e}), only numeric metric values are supported.`,invalidContext:function(){return"Invalid context specified."+q},invalidTagValue:e=>`Config option "${e}" must only contain letters, numbers, ., _ or -.`,localStorageUnavailable:function(e){return"local storage is unavailable: "+M(e)},networkError:e=>"network error"+(e?" ("+e+")":""),optionBelowMinimum:(e,t,n)=>'Config option "'+e+'" was set to '+t+", changing to minimum value of "+n,streamClosing:function(){return"Closing stream connection"},streamConnecting:function(e){return"Opening stream connection to "+e},streamError:function(e,t){return"Error on stream connection: "+M(e)+", will continue retrying after "+t+" milliseconds."},tagValueTooLong:e=>`Value of "${e}" was longer than 64 characters and was discarded.`,unknownCustomEventKey:function(e){return'Custom event "'+e+'" does not exist'},unknownOption:e=>'Ignoring unknown config option "'+e+'"',contextNotSpecified:function(){return"No context specified."+q},unrecoverableStreamError:e=>`Error on stream connection ${M(e)}, giving up permanently`,wrongOptionType:(e,t,n)=>'Config option "'+e+'" should be of type '+t+", got "+n+", using default value",wrongOptionTypeBoolean:(e,t)=>'Config option "'+e+'" should be a boolean, got '+t+", converting to boolean"};const{validateLogger:K}=H,J={baseUrl:{default:"https://app.launchdarkly.com"},streamUrl:{default:"https://clientstream.launchdarkly.com"},eventsUrl:{default:"https://events.launchdarkly.com"},sendEvents:{default:!0},streaming:{type:"boolean"},sendLDHeaders:{default:!0},requestHeaderTransform:{type:"function"},sendEventsOnlyForVariation:{default:!1},useReport:{default:!1},evaluationReasons:{default:!1},eventCapacity:{default:100,minimum:1},flushInterval:{default:2e3,minimum:2e3},samplingInterval:{default:0,minimum:0},streamReconnectDelay:{default:1e3,minimum:0},allAttributesPrivate:{default:!1},privateAttributes:{default:[]},bootstrap:{type:"string|object"},diagnosticRecordingInterval:{default:9e5,minimum:2e3},diagnosticOptOut:{default:!1},wrapperName:{type:"string"},wrapperVersion:{type:"string"},stateProvider:{type:"object"},application:{validator:function(e,t,n){const r={};t.id&&(r.id=W(`${e}.id`,t.id,n));t.version&&(r.version=W(`${e}.version`,t.version,n));return r}},inspectors:{default:[]},hooks:{default:[]},plugins:{default:[]}},_=/^(\w|\.|-)+$/;function B(e){return e&&e.replace(/\/+$/,"")}function W(e,t,n){if("string"==typeof t&&t.match(_)){if(!(t.length>64))return t;n.warn(z.tagValueTooLong(e))}else n.warn(z.invalidTagValue(e))}var G={baseOptionDefs:J,validate:function(e,t,n,r){const o=S.extend({logger:{default:r}},J,n),i={};function a(e){S.onNextTick(()=>{t&&t.maybeReportError(new c.LDInvalidArgumentError(e))})}let s=S.extend({},e||{});return function(e){const t=e;Object.keys(i).forEach(e=>{if(void 0!==t[e]){const n=i[e];r&&r.warn(z.deprecated(e,n)),n&&(void 0===t[n]&&(t[n]=t[e]),delete t[e])}})}(s),s=function(e){const t=S.extend({},e);return Object.keys(o).forEach(e=>{void 0!==t[e]&&null!==t[e]||(t[e]=o[e]&&o[e].default)}),t}(s),s=function(e){const t=S.extend({},e),n=e=>{if(null===e)return"any";if(void 0===e)return;if(Array.isArray(e))return"array";const t=typeof e;return"boolean"===t||"string"===t||"number"===t||"function"===t?t:"object"};return Object.keys(e).forEach(i=>{const s=e[i];if(null!=s){const c=o[i];if(void 0===c)a(z.unknownOption(i));else{const o=c.type||n(c.default),u=c.validator;if(u){const n=u(i,e[i],r);void 0!==n?t[i]=n:delete t[i]}else if("any"!==o){const e=o.split("|"),r=n(s);e.indexOf(r)<0?"boolean"===o?(t[i]=!!s,a(z.wrongOptionTypeBoolean(i,r))):(a(z.wrongOptionType(i,o,r)),t[i]=c.default):"number"===r&&void 0!==c.minimum&&s<c.minimum&&(a(z.optionBelowMinimum(i,s,c.minimum)),t[i]=c.minimum)}}}}),t.baseUrl=B(t.baseUrl),t.streamUrl=B(t.streamUrl),t.eventsUrl=B(t.eventsUrl),t}(s),K(s.logger),s},getTags:function(e){const t={};return e&&(e.application&&void 0!==e.application.id&&null!==e.application.id&&(t["application-id"]=[e.application.id]),e.application&&void 0!==e.application.version&&null!==e.application.id&&(t["application-version"]=[e.application.version])),t}};const{getLDUserAgentString:X}=S;var Q={getLDHeaders:function(e,t){if(t&&!t.sendLDHeaders)return{};const n={};n[e.userAgentHeaderName||"User-Agent"]=X(e),t&&t.wrapperName&&(n["X-LaunchDarkly-Wrapper"]=t.wrapperVersion?t.wrapperName+"/"+t.wrapperVersion:t.wrapperName);const r=G.getTags(t),o=Object.keys(r);return o.length&&(n["x-launchdarkly-tags"]=o.sort().map(e=>Array.isArray(r[e])?r[e].sort().map(t=>`${e}/${t}`):[`${e}/${r[e]}`]).reduce((e,t)=>e.concat(t),[]).join(" ")),n},transformHeaders:function(e,t){return t&&t.requestHeaderTransform?t.requestHeaderTransform({...e}):e}};const{randomUuidV4:Y}=$,{getLDHeaders:Z,transformHeaders:ee}=Q;var te=function(e,t,n){const r=S.extend({"Content-Type":"application/json"},Z(e,n)),o={};return o.sendEvents=(t,o,i)=>{if(!e.httpRequest)return Promise.resolve();const a=JSON.stringify(t),s=i?null:Y();return function t(u){const l=i?r:S.extend({},r,{"X-LaunchDarkly-Event-Schema":"4","X-LaunchDarkly-Payload-ID":s});return e.httpRequest("POST",o,ee(l,n),a).promise.then(e=>{if(e)return e.status>=400&&c.isHttpErrorRecoverable(e.status)&&u?t(!1):function(e){const t={status:e.status},n=e.header("date");if(n){const e=Date.parse(n);e&&(t.serverTime=e)}return t}(e)}).catch(()=>u?t(!1):Promise.reject())}(!0).catch(()=>{})},o};var ne=function e(t,n=[]){if(null===t||"object"!=typeof t)return JSON.stringify(t);if(n.includes(t))throw new Error("Cycle detected");if(Array.isArray(t)){return`[${t.map(r=>e(r,[...n,t])).map(e=>void 0===e?"null":e).join(",")}]`}return`{${Object.keys(t).sort().map(r=>{const o=e(t[r],[...n,t]);if(void 0!==o)return`${JSON.stringify(r)}:${o}`}).filter(e=>void 0!==e).join(",")}}`};const{commonBasicLogger:re}=H;function oe(e){return"string"==typeof e&&"kind"!==e&&e.match(/^(\w|\.|-)+$/)}function ie(e){return e.includes("%")||e.includes(":")?e.replace(/%/g,"%25").replace(/:/g,"%3A"):e}var ae={checkContext:function(e,t){if(e){if(t&&(void 0===e.kind||null===e.kind))return void 0!==e.key&&null!==e.key;const n=e.key,r=void 0===e.kind?"user":e.kind,o=oe(r),i="multi"===r||null!=n&&""!==n;if("multi"===r){const t=Object.keys(e).filter(e=>"kind"!==e);return i&&t.every(e=>oe(e))&&t.every(t=>{const n=e[t].key;return null!=n&&""!==n})}return i&&o}return!1},getContextKeys:function(e,t=re()){if(!e)return;const n={},{kind:r,key:o}=e;switch(r){case void 0:n.user=`${o}`;break;case"multi":Object.entries(e).filter(([e])=>"kind"!==e).forEach(([e,t])=>{t&&t.key&&(n[e]=t.key)});break;case null:t.warn(`null is not a valid context kind: ${e}`);break;case"":t.warn(`'' is not a valid context kind: ${e}`);break;default:n[r]=`${o}`}return n},getContextKinds:function(e){return e?null===e.kind||void 0===e.kind?["user"]:"multi"!==e.kind?[e.kind]:Object.keys(e).filter(e=>"kind"!==e):[]},getCanonicalKey:function(e){if(e){if((void 0===e.kind||null===e.kind||"user"===e.kind)&&e.key)return e.key;if("multi"!==e.kind&&e.key)return`${e.kind}:${ie(e.key)}`;if("multi"===e.kind)return Object.keys(e).sort().filter(e=>"kind"!==e).map(t=>`${t}:${ie(e[t].key)}`).join(":")}}};const{getContextKinds:se}=ae;var ce=function(){const e={};let t=0,n=0,r={},o={};return e.summarizeEvent=e=>{if("feature"===e.kind){const i=e.key+":"+(null!==e.variation&&void 0!==e.variation?e.variation:"")+":"+(null!==e.version&&void 0!==e.version?e.version:""),a=r[i];let s=o[e.key];s||(s=new Set,o[e.key]=s),function(e){return e.context?se(e.context):e.contextKeys?Object.keys(e.contextKeys):[]}(e).forEach(e=>s.add(e)),a?a.count=a.count+1:r[i]={count:1,key:e.key,version:e.version,variation:e.variation,value:e.value,default:e.default},(0===t||e.creationDate<t)&&(t=e.creationDate),e.creationDate>n&&(n=e.creationDate)}},e.getSummary=()=>{const e={};let i=!0;for(const t of Object.values(r)){let n=e[t.key];n||(n={default:t.default,counters:[],contextKinds:[...o[t.key]]},e[t.key]=n);const r={value:t.value,count:t.count};void 0!==t.variation&&null!==t.variation&&(r.variation=t.variation),void 0!==t.version&&null!==t.version?r.version=t.version:r.unknown=!0,n.counters.push(r),i=!1}return i?null:{startDate:t,endDate:n,features:e,kind:"summary"}},e.clearSummary=()=>{t=0,n=0,r={},o={}},e};var ue=function(e){let t={},n={};return{summarizeEvent:function(e){if("feature"===e.kind){const r=ne(e.context);if(!r)return;let o=t[r];o||(t[r]=ce(),o=t[r],n[r]=e.context),o.summarizeEvent(e)}},getSummaries:function(){const r=t,o=n;return t={},n={},Object.entries(r).map(([t,n])=>{const r=n.getSummary();return r.context=e.filter(o[t]),r})}}};function le(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function de(e){return(e.startsWith("/")?e.substring(1):e).split("/").map(e=>e.indexOf("~")>=0?e.replace(/~1/g,"/").replace(/~0/g,"~"):e)}function fe(e){return!e.startsWith("/")}function ge(e,t){const n=fe(e),r=fe(t);if(n&&r)return e===t;if(n){const n=de(t);return 1===n.length&&e===n[0]}if(r){const n=de(e);return 1===n.length&&t===n[0]}return e===t}function ve(e){return`/${le(e)}`}var pe={cloneExcluding:function(e,t){const n=[],r={},o=[];for(n.push(...Object.keys(e).map(t=>({key:t,ptr:ve(t),source:e,parent:r,visited:[e]})));n.length;){const e=n.pop();if(t.some(t=>ge(t,e.ptr)))o.push(e.ptr);else{const t=e.source[e.key];if(null===t)e.parent[e.key]=t;else if(Array.isArray(t))e.parent[e.key]=[...t];else if("object"==typeof t){if(e.visited.includes(t))continue;e.parent[e.key]={},n.push(...Object.keys(t).map(n=>{return{key:n,ptr:(r=e.ptr,o=le(n),`${r}/${o}`),source:t,parent:e.parent[e.key],visited:[...e.visited,t]};var r,o}))}else e.parent[e.key]=t}}return{cloned:r,excluded:o.sort()}},compare:ge,literalToReference:ve};var me=function(e){const t={},n=e.allAttributesPrivate,r=e.privateAttributes||[],o=["key","kind","_meta","anonymous"],i=["name","ip","firstName","lastName","email","avatar","country"],a=(e,t)=>{if("object"!=typeof e||null===e||Array.isArray(e))return;const{cloned:i,excluded:a}=pe.cloneExcluding(e,((e,t)=>(n||t&&e.anonymous?Object.keys(e).map(e=>e.startsWith("/")?pe.literalToReference(e):e):[...r,...e._meta&&e._meta.privateAttributes||[]]).filter(e=>!o.some(t=>pe.compare(e,t))))(e,t));return i.key=String(i.key),a.length&&(i._meta||(i._meta={}),i._meta.redactedAttributes=a),i._meta&&(delete i._meta.privateAttributes,0===Object.keys(i._meta).length&&delete i._meta),void 0!==i.anonymous&&(i.anonymous=!!i.anonymous),i};return t.filter=(e,t=!1)=>void 0===e.kind||null===e.kind?a((e=>{const t={...e.custom||{},kind:"user",key:e.key};void 0!==e.anonymous&&(t.anonymous=!!e.anonymous);for(const n of i)delete t[n],void 0!==e[n]&&null!==e[n]&&(t[n]=String(e[n]));return void 0!==e.privateAttributeNames&&null!==e.privateAttributeNames&&(t._meta=t._meta||{},t._meta.privateAttributes=e.privateAttributeNames.map(e=>e.startsWith("/")?pe.literalToReference(e):e)),t})(e),t):"multi"===e.kind?((e,t)=>{const n={kind:e.kind},r=Object.keys(e);for(const o of r)if("kind"!==o){const r=a(e[o],t);r&&(n[o]=r)}return n})(e,t):a(e,t),t};const{getContextKeys:he}=ae;var ye=function(e,t,n,r=null,o=null,i=null){const a={},s=i||te(e,n,t),u=S.appendUrlPath(t.eventsUrl,"/events/bulk/"+n),l=me(t),d=ue(l),f=t.samplingInterval,g=t.eventCapacity,v=t.flushInterval,p=t.logger;let m,h=[],y=0,w=!1,k=!1;function b(){return 0===f||0===Math.floor(Math.random()*f)}function E(e){const t=S.extend({},e);return"identify"===e.kind||"feature"===e.kind||"custom"===e.kind?t.context=l.filter(e.context):(t.contextKeys=he(e.context,p),delete t.context),"feature"===e.kind&&(delete t.trackEvents,delete t.debugEventsUntilDate),t}function D(e){h.length<g?(h.push(e),k=!1):(k||(k=!0,p.warn(z.eventCapacityExceeded())),r&&r.incrementDroppedEvents())}return a.enqueue=function(e){if(w)return;let t=!1,n=!1;var r;if(d.summarizeEvent(e),"feature"===e.kind?b()&&(t=!!e.trackEvents,n=!!(r=e).debugEventsUntilDate&&r.debugEventsUntilDate>y&&r.debugEventsUntilDate>(new Date).getTime()):t=b(),t&&D(E(e)),n){const t=S.extend({},e,{kind:"debug"});t.context=l.filter(t.context),delete t.trackEvents,delete t.debugEventsUntilDate,D(t)}},a.flush=async function(){if(w)return Promise.resolve();const e=h;return d.getSummaries().forEach(t=>{Object.keys(t.features).length&&e.push(t)}),r&&r.setEventsInLastBatch(e.length),0===e.length?Promise.resolve():(h=[],p.debug(z.debugPostingEvents(e.length)),s.sendEvents(e,u).then(e=>{e&&(e.serverTime&&(y=e.serverTime),c.isHttpErrorRecoverable(e.status)||(w=!0),e.status>=400&&S.onNextTick(()=>{o.maybeReportError(new c.LDUnexpectedResponseError(z.httpErrorMessage(e.status,"event posting","some events were dropped")))}))}))},a.start=function(){const e=()=>{a.flush(),m=setTimeout(e,v)};m=setTimeout(e,v)},a.stop=function(){clearTimeout(m)},a};var we=function(e){const t={},n={};return t.on=function(e,t,r){n[e]=n[e]||[],n[e]=n[e].concat({handler:t,context:r})},t.off=function(e,t,r){if(n[e])for(let o=0;o<n[e].length;o++)n[e][o].handler===t&&n[e][o].context===r&&(n[e]=n[e].slice(0,o).concat(n[e].slice(o+1)))},t.emit=function(e){if(!n[e])return;const t=n[e].slice(0);for(let e=0;e<t.length;e++)t[e].handler.apply(t[e].context,Array.prototype.slice.call(arguments,1))},t.getEvents=function(){return Object.keys(n)},t.getEventListenerCount=function(e){return n[e]?n[e].length:0},t.maybeReportError=function(t){t&&(n["error"]?this.emit("error",t):(e||console).error(t.message))},t};const ke="ready",be="initialized",Ee="failed";var De=function(e){let t=!1,n=!1,r=null,o=null;const i=new Promise(t=>{const n=()=>{e.off(ke,n),t()};e.on(ke,n)}).catch(()=>{});return{getInitializationPromise:()=>o||(t?Promise.resolve():n?Promise.reject(r):(o=new Promise((t,n)=>{const r=()=>{e.off(be,r),t()},o=t=>{e.off(Ee,o),n(t)};e.on(be,r),e.on(Ee,o)}),o)),getReadyPromise:()=>i,signalSuccess:()=>{t||n||(t=!0,e.emit(be),e.emit(ke))},signalFailure:o=>{t||n||(n=!0,r=o,e.emit(Ee,o),e.emit(ke)),e.maybeReportError(o)}}};var xe=function(e,t,n,r){const o={};function i(){let e="";const o=r.getContext();if(o){e=n()||S.btoa(JSON.stringify(o))}return"ld:"+t+":"+e}return o.loadFlags=()=>e.get(i()).then(e=>{if(null==e)return null;try{let t=JSON.parse(e);if(t){const e=t.$schema;void 0===e||e<1?t=S.transformValuesToVersionedValues(t):delete t.$schema}return t}catch(e){return o.clearFlags().then(()=>null)}}),o.saveFlags=t=>{const n=S.extend({},t,{$schema:1});return e.set(i(),JSON.stringify(n))},o.clearFlags=()=>e.clear(i()),o};var Oe=function(e,t){const n={};let r=!1;const o=e=>{r||(r=!0,t.warn(z.localStorageUnavailable(e)))};return n.isEnabled=()=>!!e,n.get=t=>new Promise(n=>{e?e.get(t).then(n).catch(e=>{o(e),n(void 0)}):n(void 0)}),n.set=(t,n)=>new Promise(r=>{e?e.set(t,n).then(()=>r(!0)).catch(e=>{o(e),r(!1)}):r(!1)}),n.clear=t=>new Promise(n=>{e?e.clear(t).then(()=>n(!0)).catch(e=>{o(e),n(!1)}):n(!1)}),n};const{appendUrlPath:Pe,base64URLEncode:Ce,objectHasOwnProperty:Se}=S,{getLDHeaders:Ie,transformHeaders:Te}=Q,{isHttpErrorRecoverable:Fe}=c;var Le=function(e,t,n,r){const o=t.streamUrl,i=t.logger,a={},s=Pe(o,"/eval/"+n),c=t.useReport,u=t.evaluationReasons,l=t.streamReconnectDelay,d=Ie(e,t);let f,g=!1,v=null,p=null,m=null,h=null,y=null,w=0;function k(){const e=(t=function(){const e=l*Math.pow(2,w);return e>3e4?3e4:e}(),t-Math.trunc(.5*Math.random()*t));var t;return w+=1,e}function b(e){if(e.status&&"number"==typeof e.status&&!Fe(e.status))return x(),i.error(z.unrecoverableStreamError(e)),void(p&&(clearTimeout(p),p=null));const t=k();g||(i.warn(z.streamError(e,t)),g=!0),O(!1),x(),E(t)}function E(e){p||(e?p=setTimeout(D,e):D())}function D(){let r;p=null;let a="";const l={headers:d,readTimeoutMillis:3e5};if(e.eventSourceFactory){null!=h&&(a="h="+h),c?e.eventSourceAllowsReport?(r=s,l.method="REPORT",l.headers["Content-Type"]="application/json",l.body=JSON.stringify(m)):(r=Pe(o,"/ping/"+n),a=""):r=s+"/"+Ce(JSON.stringify(m)),l.headers=Te(l.headers,t),u&&(a=a+(a?"&":"")+"withReasons=true"),r=r+(a?"?":"")+a,x(),i.info(z.streamConnecting(r)),f=(new Date).getTime(),v=e.eventSourceFactory(r,l);for(const e in y)Se(y,e)&&v.addEventListener(e,y[e]);v.onerror=b,v.onopen=()=>{w=0}}}function x(){v&&(i.info(z.streamClosing()),v.close(),v=null)}function O(e){f&&r&&r.recordStreamInit(f,!e,(new Date).getTime()-f),f=null}return a.connect=function(e,t,n){m=e,h=t,y={};for(const e in n||{})y[e]=function(t){g=!1,O(!0),n[e]&&n[e](t)};E()},a.disconnect=function(){clearTimeout(p),p=null,x()},a.isConnected=function(){return!!(v&&e.eventSourceIsActive&&e.eventSourceIsActive(v))},a};var je=function(e){let t,n,r,o;const i={addPromise:(i,a)=>{t=i,n&&n(),n=a,i.then(n=>{t===i&&(r(n),e&&e())},n=>{t===i&&(o(n),e&&e())})}};return i.resultPromise=new Promise((e,t)=>{r=e,o=t}),i};const{transformHeaders:Ue,getLDHeaders:Re}=Q,Ae="application/json";var Ne=function(e,t,n){const r=t.baseUrl,o=t.useReport,i=t.evaluationReasons,a=t.logger,s={},u={};function l(n,r){if(!e.httpRequest)return new Promise((e,t)=>{t(new c.LDFlagFetchError(z.httpUnavailable()))});const o=r?"REPORT":"GET",i=Re(e,t);r&&(i["Content-Type"]=Ae);let a=u[n];a||(a=je(()=>{delete u[n]}),u[n]=a);const s=e.httpRequest(o,n,Ue(i,t),r),l=s.promise.then(e=>{if(200===e.status){if(e.header("content-type")&&e.header("content-type").substring(0,16)===Ae)return JSON.parse(e.body);{const t=z.invalidContentType(e.header("content-type")||"");return Promise.reject(new c.LDFlagFetchError(t))}}return Promise.reject(function(e){return 404===e.status?new c.LDInvalidEnvironmentIdError(z.environmentNotFound()):new c.LDFlagFetchError(z.errorFetchingFlags(e.statusText||String(e.status)))}(e))},e=>Promise.reject(new c.LDFlagFetchError(z.networkError(e))));return a.addPromise(l,()=>{s.cancel&&s.cancel()}),a.resultPromise}return s.fetchJSON=function(e){return l(S.appendUrlPath(r,e),null)},s.fetchFlagSettings=function(e,t){let s,c,u,d="";return o?(c=[r,"/sdk/evalx/",n,"/context"].join(""),u=JSON.stringify(e)):(s=S.base64URLEncode(JSON.stringify(e)),c=[r,"/sdk/evalx/",n,"/contexts/",s].join("")),t&&(d="h="+t),i&&(d=d+(d?"&":"")+"withReasons=true"),c=c+(d?"?":"")+d,a.debug(z.debugPolling(c)),l(c,u)},s};var $e=function(e,t){const n={};let r;return n.setContext=function(e){r=S.sanitizeContext(e),r&&t&&t(S.clone(r))},n.getContext=function(){return r?S.clone(r):null},e&&n.setContext(e),n};const{randomUuidV4:Ve}=$,{getContextKinds:He}=ae;var Me=function(e){function t(e){return null==e||"user"===e?"ld:$anonUserId":`ld:$contextKey:${e}`}function n(n,r){return null!==r.key&&void 0!==r.key?(r.key=r.key.toString(),Promise.resolve(r)):r.anonymous?function(n){return e.get(t(n))}(n).then(o=>{if(o)return r.key=o,r;{const o=Ve();return r.key=o,function(n,r){return e.set(t(r),n)}(o,n).then(()=>r)}}):Promise.reject(new c.LDInvalidUserError(z.invalidContext()))}this.processContext=e=>{if(!e)return Promise.reject(new c.LDInvalidUserError(z.contextNotSpecified()));const t=S.clone(e);if("multi"===e.kind){const e=He(t);return Promise.all(e.map(e=>n(e,t[e]))).then(()=>t)}return n(e.kind,t)}};const{randomUuidV4:qe}=$,{baseOptionDefs:ze}=G,{appendUrlPath:Ke}=S;var Je={DiagnosticId:function(e){const t={diagnosticId:qe()};return e&&(t.sdkKeySuffix=e.length>6?e.substring(e.length-6):e),t},DiagnosticsAccumulator:function(e){let t,n,r,o;function i(e){t=e,n=0,r=0,o=[]}return i(e),{getProps:()=>({dataSinceDate:t,droppedEvents:n,eventsInLastBatch:r,streamInits:o}),setProps:e=>{t=e.dataSinceDate,n=e.droppedEvents||0,r=e.eventsInLastBatch||0,o=e.streamInits||[]},incrementDroppedEvents:()=>{n++},setEventsInLastBatch:e=>{r=e},recordStreamInit:(e,t,n)=>{const r={timestamp:e,failed:t,durationMillis:n};o.push(r)},reset:i}},DiagnosticsManager:function(e,t,n,r,o,i,a){const s=!!e.diagnosticUseCombinedEvent,c="ld:"+o+":$diagnostics",u=Ke(i.eventsUrl,"/events/diagnostic/"+o),l=i.diagnosticRecordingInterval,d=n;let f,g,v=!!i.streaming;const p={};function m(){return{sdk:w(),configuration:k(),platform:e.diagnosticPlatformData}}function h(e){i.logger&&i.logger.debug(z.debugPostingDiagnosticEvent(e)),r.sendEvents(e,u,!0).then(()=>{}).catch(()=>{})}function y(){h(function(){const e=(new Date).getTime();let t={kind:s?"diagnostic-combined":"diagnostic",id:a,creationDate:e,...d.getProps()};return s&&(t={...t,...m()}),d.reset(e),t}()),g=setTimeout(y,l),f=(new Date).getTime(),s&&function(){if(t.isEnabled()){const e={...d.getProps()};t.set(c,JSON.stringify(e))}}()}function w(){const t={...e.diagnosticSdkData};return i.wrapperName&&(t.wrapperName=i.wrapperName),i.wrapperVersion&&(t.wrapperVersion=i.wrapperVersion),t}function k(){return{customBaseURI:i.baseUrl!==ze.baseUrl.default,customStreamURI:i.streamUrl!==ze.streamUrl.default,customEventsURI:i.eventsUrl!==ze.eventsUrl.default,eventsCapacity:i.eventCapacity,eventsFlushIntervalMillis:i.flushInterval,reconnectTimeMillis:i.streamReconnectDelay,streamingDisabled:!v,allAttributesPrivate:!!i.allAttributesPrivate,diagnosticRecordingIntervalMillis:i.diagnosticRecordingInterval,usingSecureMode:!!i.hash,bootstrapMode:!!i.bootstrap,fetchGoalsDisabled:!i.fetchGoals,sendEventsOnlyForVariation:!!i.sendEventsOnlyForVariation}}return p.start=()=>{s?function(e){if(!t.isEnabled())return e(!1);t.get(c).then(t=>{if(t)try{const e=JSON.parse(t);d.setProps(e),f=e.dataSinceDate}catch(e){}e(!0)}).catch(()=>{e(!1)})}(e=>{if(e){const e=(f||0)+l,t=(new Date).getTime();t>=e?y():g=setTimeout(y,e-t)}else 0===Math.floor(4*Math.random())?y():g=setTimeout(y,l)}):(h({kind:"diagnostic-init",id:a,creationDate:d.getProps().dataSinceDate,...m()}),g=setTimeout(y,l))},p.stop=()=>{g&&clearTimeout(g)},p.setStreaming=e=>{v=e},p}};var _e=function(e,t){let n=!1;const r={type:e.type,name:e.name,synchronous:e.synchronous,method:(...o)=>{try{e.method(...o)}catch{n||(n=!0,t.warn(z.inspectorMethodError(r.type,r.name)))}}};return r};const{onNextTick:Be}=S,We={flagUsed:"flag-used",flagDetailsChanged:"flag-details-changed",flagDetailChanged:"flag-detail-changed",clientIdentityChanged:"client-identity-changed"};Object.freeze(We);var Ge={InspectorTypes:We,InspectorManager:function(e,t){const n={},r={[We.flagUsed]:[],[We.flagDetailsChanged]:[],[We.flagDetailChanged]:[],[We.clientIdentityChanged]:[]},o={[We.flagUsed]:[],[We.flagDetailsChanged]:[],[We.flagDetailChanged]:[],[We.clientIdentityChanged]:[]},i=e&&e.map(e=>_e(e,t));return i&&i.forEach(e=>{Object.prototype.hasOwnProperty.call(r,e.type)&&!e.synchronous?r[e.type].push(e):Object.prototype.hasOwnProperty.call(o,e.type)&&e.synchronous?o[e.type].push(e):t.warn(z.invalidInspector(e.type,e.name))}),n.hasListeners=e=>r[e]&&r[e].length||o[e]&&o[e].length,n.onFlagUsed=(e,t,n)=>{const i=We.flagUsed;o[i].length&&o[i].forEach(r=>r.method(e,t,n)),r[i].length&&Be(()=>{r[i].forEach(r=>r.method(e,t,n))})},n.onFlags=e=>{const t=We.flagDetailsChanged;o[t].length&&o[t].forEach(t=>t.method(e)),r[t].length&&Be(()=>{r[t].forEach(t=>t.method(e))})},n.onFlagChanged=(e,t)=>{const n=We.flagDetailChanged;o[n].length&&o[n].forEach(n=>n.method(e,t)),r[n].length&&Be(()=>{r[n].forEach(n=>n.method(e,t))})},n.onIdentityChanged=e=>{const t=We.clientIdentityChanged;o[t].length&&o[t].forEach(t=>t.method(e)),r[t].length&&Be(()=>{r[t].forEach(t=>t.method(e))})},n}};const{LDTimeoutError:Xe}=c;var Qe=function(e,t){return new Promise((n,r)=>{setTimeout(()=>{r(new Xe(`${t} timed out after ${e} seconds.`))},1e3*e)})};const Ye="unknown hook";function Ze(e,t,n,r,o){try{return r()}catch(r){return e?.error(`An error was encountered in "${t}" of the "${n}" hook: ${r}`),o}}function et(e,t){try{return t.getMetadata().name||Ye}catch{return e.error("Exception thrown getting metadata for hook. Unable to get hook name."),Ye}}var tt=function(e,t){const n=t?[...t]:[];return{withEvaluation:function(t,r,o,i){if(0===n.length)return i();const a=[...n],s={flagKey:t,context:r,defaultValue:o},c=function(e,t,n){return t.map(t=>Ze(e,"beforeEvaluation",et(e,t),()=>t?.beforeEvaluation?.(n,{})??{},{}))}(e,a,s),u=i();return function(e,t,n,r,o){for(let i=t.length-1;i>=0;i-=1){const a=t[i],s=r[i];Ze(e,"afterEvaluation",et(e,a),()=>a?.afterEvaluation?.(n,s,o)??{},{})}}(e,a,s,c,u),u},identify:function(t,r){const o=[...n],i={context:t,timeout:r},a=function(e,t,n){return t.map(t=>Ze(e,"beforeIdentify",et(e,t),()=>t?.beforeIdentify?.(n,{})??{},{}))}(e,o,i);return t=>{!function(e,t,n,r,o){for(let i=t.length-1;i>=0;i-=1){const a=t[i],s=r[i];Ze(e,"afterIdentify",et(e,a),()=>a?.afterIdentify?.(n,s,o)??{},{})}}(e,o,i,a,t)}},addHook:function(e){n.push(e)},afterTrack:function(t){if(0===n.length)return;const r=[...n];!function(e,t,n){for(let r=t.length-1;r>=0;r-=1){const o=t[r];Ze(e,"afterTrack",et(e,o),()=>o?.afterTrack?.(n),void 0)}}(e,r,t)}}};var nt=function(){let e,t={};function n(n){return e&&S.objectHasOwnProperty(e,n)&&e[n]?e[n]:t&&S.objectHasOwnProperty(t,n)&&t[n]&&!t[n].deleted?t[n]:null}return{clearAllOverrides:function(){if(!e)return{};const t={...e};return e=void 0,t},get:n,getFlagOverrides:function(){return e||{}},getFlags:function(){return t},getFlagsWithOverrides:function(){const r={};for(const e in t){const t=n(e);t&&(r[e]=t)}if(e)for(const t in e){const e=n(t);e&&(r[t]=e)}return r},removeOverride:function(t){e&&e[t]&&(delete e[t],0===Object.keys(e).length&&(e=void 0))},setFlags:function(e){t={...e}},setOverride:function(t,n){e||(e={}),e[t]={value:n}}}};const rt="unknown plugin";function ot(e,t){try{return t.getMetadata().name||rt}catch(t){return e.error("Exception thrown getting metadata for plugin. Unable to get plugin name."),rt}}var it={getPluginHooks:function(e,t,n){const r=[];return n.forEach(n=>{try{const o=n.getHooks?.(t);void 0===o?e.error(`Plugin ${ot(e,n)} returned undefined from getHooks.`):o&&o.length>0&&r.push(...o)}catch(t){e.error(`Exception thrown getting hooks for plugin ${ot(e,n)}. Unable to get hooks.`)}}),r},registerPlugins:function(e,t,n,r){r.forEach(r=>{try{r.register(n,t)}catch(t){e.error(`Exception thrown registering plugin ${ot(e,r)}.`)}})},registerPluginsForDebugOverride:function(e,t,n){n.forEach(n=>{try{n.registerDebug?.(t)}catch(t){e.error(`Exception thrown registering debug override with plugin ${ot(e,n)}.`)}})},createPluginEnvironment:function(e,t,n){const r={};e.userAgent&&(r.name=e.userAgent),e.version&&(r.version=e.version),n.wrapperName&&(r.wrapperName=n.wrapperName),n.wrapperVersion&&(r.wrapperVersion=n.wrapperVersion);const o={};n.application&&(n.application.name&&(o.name=n.application.name),n.application.version&&(o.version=n.application.version));const i={sdk:r,clientSideId:t};return Object.keys(o).length>0&&(i.application=o),i}};const{commonBasicLogger:at}=H,{checkContext:st,getContextKeys:ct}=ae,{InspectorTypes:ut,InspectorManager:lt}=Ge,{getPluginHooks:dt,registerPlugins:ft,registerPluginsForDebugOverride:gt,createPluginEnvironment:vt}=it,pt="change",mt="internal-change";var ht={initialize:function(e,t,n,r,o){const i=function(){if(n&&n.logger)return n.logger;return o&&o.logger&&o.logger.default||at("warn")}(),a=we(i),s=De(a),u=G.validate(n,a,o,i),l=lt(u.inspectors,i),d=u.sendEvents;let f=e,g=u.hash;const v=[...u.plugins],p=vt(r,e,u),m=dt(i,p,v),h=tt(i,[...u.hooks,...m]),y=Oe(r.localStorage,i),w=te(r,f,u),k=u.sendEvents&&!u.diagnosticOptOut,b=k?Je.DiagnosticId(f):null,E=k?Je.DiagnosticsAccumulator((new Date).getTime()):null,D=k?Je.DiagnosticsManager(r,y,E,w,f,u,b):null,x=Le(r,u,f,E),O=u.eventProcessor||ye(r,u,f,E,a,w),P=Ne(r,u,f),C=nt();let I,T,F,L=u.streaming,j=!1,U=!1,R=!0;const A=u.stateProvider,N=$e(null,function(e){(function(e){if(A)return;e&&H({kind:"identify",context:e,creationDate:(new Date).getTime()})})(e),l.hasListeners(ut.clientIdentityChanged)&&l.onIdentityChanged(N.getContext())}),$=new Me(y),V=y.isEnabled()?xe(y,f,()=>g,N):null;function H(e){f&&(A&&A.enqueueEvent&&A.enqueueEvent(e)||(e.context?(R=!1,!d||U||r.isDoNotTrack()||(i.debug(z.debugEnqueueingEvent(e.kind)),O.enqueue(e))):R&&(i.warn(z.eventWithoutContext()),R=!1)))}function M(e,t){l.hasListeners(ut.flagDetailChanged)&&l.onFlagChanged(e.key,B(t))}function q(){l.hasListeners(ut.flagDetailsChanged)&&l.onFlags(Object.entries(C.getFlagsWithOverrides()).map(([e,t])=>({key:e,detail:B(t)})).reduce((e,t)=>(e[t.key]=t.detail,e),{}))}function K(e,t,n,r){const o=N.getContext(),i=new Date,a={kind:"feature",key:e,context:o,value:t?t.value:null,variation:t?t.variationIndex:null,default:n,creationDate:i.getTime()},s=C.getFlags()[e];s&&(a.version=s.flagVersion?s.flagVersion:s.version,a.trackEvents=s.trackEvents,a.debugEventsUntilDate=s.debugEventsUntilDate),(r||s&&s.trackReason)&&t&&(a.reason=t.reason),H(a)}function J(e){return st(e,!1)?Promise.resolve(e):Promise.reject(new c.LDInvalidUserError(z.invalidContext()))}function _(e,t,n,r,o,i){let a;const s=C.get(e);return s?(a=B(s),null!==s.value&&void 0!==s.value||(a.value=t)):a={value:t,variationIndex:null,reason:{kind:"ERROR",errorKind:"FLAG_NOT_FOUND"}},n&&(o||s?.prerequisites?.forEach(e=>{_(e,void 0,n,!1,!1,!1)}),K(e,a,t,r)),!o&&i&&function(e,t){l.hasListeners(ut.flagUsed)&&l.onFlagUsed(e,t,N.getContext())}(e,a),a}function B(e){return{value:e.value,variationIndex:void 0===e.variation?null:e.variation,reason:e.reason||null}}function W(){if(T=!0,!N.getContext())return;const e=e=>{try{return JSON.parse(e)}catch(e){return void a.maybeReportError(new c.LDInvalidDataError(z.invalidData()))}};x.connect(N.getContext(),g,{ping:function(){i.debug(z.debugStreamPing());const e=N.getContext();P.fetchFlagSettings(e,g).then(t=>{S.deepEquals(e,N.getContext())&&Q(t||{})}).catch(e=>{a.maybeReportError(new c.LDFlagFetchError(z.errorFetchingFlags(e)))})},put:function(t){const n=e(t.data);n&&(i.debug(z.debugStreamPut()),Q(n))},patch:function(t){const n=e(t.data);if(!n)return;const r=C.getFlags(),o=r[n.key];if(!o||!o.version||!n.version||o.version<n.version){i.debug(z.debugStreamPatch(n.key));const e={},t=S.extend({},n);delete t.key,r[n.key]=t,C.setFlags(r);const a=B(t);e[n.key]=o?{previous:o.value,current:a}:{current:a},M(n,t),Y(e)}else i.debug(z.debugStreamPatchIgnored(n.key))},delete:function(t){const n=e(t.data);if(!n)return;const r=C.getFlags();if(!r[n.key]||r[n.key].version<n.version){i.debug(z.debugStreamDelete(n.key));const e={};r[n.key]&&!r[n.key].deleted&&(e[n.key]={previous:r[n.key].value}),r[n.key]={version:n.version,deleted:!0},C.setFlags(r),M(n,r[n.key]),Y(e)}else i.debug(z.debugStreamDeleteIgnored(n.key))}})}function X(){T&&(x.disconnect(),T=!1)}function Q(e){const t={};if(!e)return Promise.resolve();const n=C.getFlags();for(const r in n)S.objectHasOwnProperty(n,r)&&n[r]&&(e[r]&&!S.deepEquals(e[r].value,n[r].value)?t[r]={previous:n[r].value,current:B(e[r])}:e[r]&&!e[r].deleted||(t[r]={previous:n[r].value}));for(const r in e)S.objectHasOwnProperty(e,r)&&e[r]&&(!n[r]||n[r].deleted)&&(t[r]={current:B(e[r])});return C.setFlags({...e}),q(),Y(t).catch(()=>{})}function Y(e){const t=Object.keys(e);if(t.length>0){const n={};t.forEach(t=>{const r=e[t].current,o=r?r.value:void 0,i=e[t].previous;a.emit(pt+":"+t,o,i),n[t]=r?{current:o,previous:i}:{previous:i}}),a.emit(pt,n),a.emit(mt,C.getFlagsWithOverrides()),u.sendEventsOnlyForVariation||A||t.forEach(t=>{K(t,e[t].current)})}return I&&V?V.saveFlags(C.getFlags()):Promise.resolve()}function Z(){const e=L||F&&void 0===L;e&&!T?W():!e&&T&&X(),D&&D.setStreaming(e)}function ee(e){return e===pt||e.substr(0,7)===pt+":"}if("string"==typeof u.bootstrap&&"LOCALSTORAGE"===u.bootstrap.toUpperCase()&&(V?I=!0:i.warn(z.localStorageUnavailable())),"object"==typeof u.bootstrap&&C.setFlags(function(e){const t=Object.keys(e),n="$flagsState",r="$valid",o=e[n];!o&&t.length&&i.warn(z.bootstrapOldFormat()),!1===e[r]&&i.warn(z.bootstrapInvalid());const a={};return t.forEach(t=>{if(t!==n&&t!==r){let n={value:e[t]};o&&o[t]?n=S.extend(n,o[t]):n.version=0,a[t]=n}}),a}(u.bootstrap)),A){const e=A.getInitialState();e?ne(e):A.on("init",ne),A.on("update",function(e){e.context&&N.setContext(e.context);e.flags&&Q(e.flags)})}else(function(){if(!e)return Promise.reject(new c.LDInvalidEnvironmentIdError(z.environmentNotSpecified()));let n;return $.processContext(t).then(J).then(e=>(n=S.once(h.identify(e,void 0)),e)).then(e=>(n?.({status:"completed"}),N.setContext(e),"object"==typeof u.bootstrap?re():I?V.loadFlags().then(e=>{if(null==e){C.setFlags({});const e=N.getContext(),t=g;return P.fetchFlagSettings(e,t).then(n=>{if(t===g&&S.deepEquals(e,N.getContext()))return Q(n||{})}).then(re).catch(e=>{oe(new c.LDFlagFetchError(z.errorFetchingFlags(e)))})}{C.setFlags(e),S.onNextTick(re);const t=N.getContext(),n=g;return P.fetchFlagSettings(t,n).then(e=>{if(n===g&&S.deepEquals(t,N.getContext()))return Q(e)}).catch(e=>a.maybeReportError(e))}}):P.fetchFlagSettings(N.getContext(),g).then(e=>{C.setFlags(e||{}),q(),re()}).catch(e=>{C.setFlags({}),oe(e)}))).catch(e=>{throw n?.({status:"error"}),e})})().catch(oe);function ne(e){f=e.environment,N.setContext(e.context),C.setFlags({...e.flags}),S.onNextTick(re)}function re(){i.info(z.clientInitialized()),j=!0,Z(),s.signalSuccess()}function oe(e){s.signalFailure(e)}const ie={waitForInitialization:function(e=void 0){if(null!=e){if("number"==typeof e)return function(e){e>5&&i.warn("The waitForInitialization function was called with a timeout greater than 5 seconds. We recommend a timeout of 5 seconds or less.");const t=s.getInitializationPromise(),n=Qe(e,"waitForInitialization");return Promise.race([n,t]).catch(e=>{throw e instanceof c.LDTimeoutError&&i.error(`waitForInitialization error: ${e}`),e})}(e);i.warn("The waitForInitialization method was provided with a non-numeric timeout.")}return i.warn("The waitForInitialization function was called without a timeout specified. In a future version a default timeout will be applied."),s.getInitializationPromise()},waitUntilReady:()=>s.getReadyPromise(),identify:function(e,t,n){if(U)return S.wrapPromiseCallback(Promise.resolve({}),n);if(A)return i.warn(z.identifyDisabled()),S.wrapPromiseCallback(Promise.resolve(S.transformVersionedValuesToValues(C.getFlagsWithOverrides())),n);let r;const o=I&&V?V.clearFlags():Promise.resolve();return S.wrapPromiseCallback(o.then(()=>$.processContext(e)).then(J).then(e=>(r=S.once(h.identify(e,void 0)),e)).then(e=>P.fetchFlagSettings(e,t).then(n=>{const r=S.transformVersionedValuesToValues(n);return N.setContext(e),g=t,n?Q(n).then(()=>r):r})).then(e=>(r?.({status:"completed"}),T&&W(),e)).catch(e=>(r?.({status:"error"}),a.maybeReportError(e),Promise.reject(e))),n)},getContext:function(){return N.getContext()},variation:function(e,t){const{value:n}=h.withEvaluation(e,N.getContext(),t,()=>_(e,t,!0,!1,!1,!0));return n},variationDetail:function(e,t){return h.withEvaluation(e,N.getContext(),t,()=>_(e,t,!0,!0,!1,!0))},track:function(e,t,n){if("string"!=typeof e)return void a.maybeReportError(new c.LDInvalidEventKeyError(z.unknownCustomEventKey(e)));void 0!==n&&"number"!=typeof n&&i.warn(z.invalidMetricValue(typeof n)),r.customEventFilter&&!r.customEventFilter(e)&&i.warn(z.unknownCustomEventKey(e));const o=N.getContext(),s={kind:"custom",key:e,context:o,url:r.getCurrentUrl(),creationDate:(new Date).getTime()};o&&o.anonymous&&(s.contextKind=o.anonymous?"anonymousUser":"user"),null!=t&&(s.data=t),null!=n&&(s.metricValue=n),H(s),h.afterTrack({context:o,key:e,data:t,metricValue:n})},on:function(e,t,n){ee(e)?(F=!0,j&&Z(),a.on(e,t,n)):a.on(...arguments)},off:function(e){if(a.off(...arguments),ee(e)){let e=!1;a.getEvents().forEach(t=>{ee(t)&&a.getEventListenerCount(t)>0&&(e=!0)}),e||(F=!1,T&&void 0===L&&X())}},setStreaming:function(e){const t=null===e?void 0:e;t!==L&&(L=t,Z())},flush:function(e){return S.wrapPromiseCallback(d?O.flush():Promise.resolve(),e)},allFlags:function(){const e={},t=C.getFlagsWithOverrides();if(!t)return e;for(const n in t)e[n]=_(n,null,!u.sendEventsOnlyForVariation,!1,!0,!1).value;return e},close:function(e){if(U)return S.wrapPromiseCallback(Promise.resolve(),e);const t=()=>{U=!0,C.setFlags({})},n=Promise.resolve().then(()=>{if(X(),D&&D.stop(),d)return O.stop(),O.flush()}).then(t).catch(t);return S.wrapPromiseCallback(n,e)},addHook:function(e){h.addHook(e)}};ft(i,p,ie,v);const ae={setOverride:function(e,t){const n={},r=C.get(e),o=r?r.value:null;if(o===t)return void i.debug(`setOverride: No change needed for ${e}, value already ${t}`);C.setOverride(e,t);const a=C.get(e),s=B(a);n[e]={previous:o,current:s},M({key:e},a),Y(n)},removeOverride:function(e){const t=C.getFlagOverrides();if(!t[e])return;const n={},r=t[e],o=C.getFlags()[e];n[e]={previous:r.value,current:o?B(o):void 0},C.removeOverride(e),M({key:e},o),Y(n)},clearAllOverrides:function(){const e=C.getFlagOverrides();if(0===Object.keys(e).length)return;const t={},n=C.getFlags();Object.keys(e).forEach(r=>{const o=e[r],i=n[r];t[r]={previous:o.value,current:i?B(i):void 0}}),C.clearAllOverrides(),Object.keys(t).length>0&&Y(t)},getAllOverrides:function(){const e=C.getFlagOverrides();if(!e)return{};const t={};return Object.keys(e).forEach(n=>{const r=e[n];r&&(t[n]=r.value)}),t}};return gt(i,ae,v),{client:ie,options:u,emitter:a,ident:N,logger:i,requestor:P,start:function(){d&&(D&&D.start(),O.start())},enqueueEvent:H,getFlagsInternal:function(){return C.getFlagsWithOverrides()},getEnvironmentId:()=>f,internalChangeEventName:mt}},commonBasicLogger:at,errors:c,messages:z,utils:S,getContextKeys:ct},yt=ht.initialize,wt=ht.errors,kt=ht.messages;function bt(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Et(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Dt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Et(Object(n),!0).forEach(function(t){bt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Et(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var xt=ht.commonBasicLogger;var Ot=function(e){return xt(Dt({destination:console.log},e))};var Pt={promise:Promise.resolve({status:200,header:function(){return null},body:null})};function Ct(e,t,n,r,o){if(o&&!function(){var e=window.navigator&&window.navigator.userAgent;if(e){var t=e.match(/Chrom(e|ium)\/([0-9]+)\./);if(t)return parseInt(t[2],10)<73}return!0}())return Pt;var i=new window.XMLHttpRequest;for(var a in i.open(e,t,!o),n||{})Object.prototype.hasOwnProperty.call(n,a)&&i.setRequestHeader(a,n[a]);if(o){try{i.send(r)}catch(e){}return Pt}var s,c=new Promise(function(e,t){i.addEventListener("load",function(){s||e({status:i.status,header:function(e){return i.getResponseHeader(e)},body:i.responseText})}),i.addEventListener("error",function(){s||t(new Error)}),i.send(r)});return{promise:c,cancel:function(){s=!0,i.abort()}}}var St=e=>{if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")};function It(e,t,n,r){var o,i,a=(("substring"===e.kind||"regex"===e.kind)&&r.includes("/")?t:t.replace(r,"")).replace(n,"");switch(e.kind){case"exact":i=t,o=new RegExp("^"+St(e.url)+"/?$");break;case"canonical":i=a,o=new RegExp("^"+St(e.url)+"/?$");break;case"substring":i=a,o=new RegExp(".*"+St(e.substring)+".*$");break;case"regex":i=a,o=new RegExp(e.pattern);break;default:return!1}return o.test(i)}function Tt(e,t){for(var n={},r=null,o=[],i=0;i<e.length;i++)for(var a=e[i],s=a.urls||[],c=0;c<s.length;c++)if(It(s[c],window.location.href,window.location.search,window.location.hash)){"pageview"===a.kind?t("pageview",a):(o.push(a),t("click_pageview",a));break}return o.length>0&&(r=function(e){for(var n=function(e,t){for(var n=[],r=0;r<t.length;r++)for(var o=e.target,i=t[r],a=i.selector,s=document.querySelectorAll(a);o&&s.length>0;){for(var c=0;c<s.length;c++)o===s[c]&&n.push(i);o=o.parentNode}return n}(e,o),r=0;r<n.length;r++)t("click",n[r])},document.addEventListener("click",r)),n.dispose=function(){document.removeEventListener("click",r)},n}function Ft(e,t,n){var r,o;function i(){o&&o.dispose(),r&&r.length&&(o=Tt(r,a))}function a(n,r){var o=e.ident.getContext(),i={kind:n,key:r.key,data:null,url:t.getCurrentUrl(),creationDate:(new Date).getTime(),context:o};return"click"===n&&(i.selector=r.selector),e.enqueueEvent(i)}return e.requestor.fetchJSON("/sdk/goals/"+e.getEnvironmentId()).then(function(e){e&&e.length>0&&(o=Tt(r=e,a),function(e,t){var n,r=window.location.href;function o(){(n=window.location.href)!==r&&(r=n,t())}!function e(t,n){t(),setTimeout(function(){e(t,n)},n)}(o,e),window.history&&window.history.pushState?window.addEventListener("popstate",o):window.addEventListener("hashchange",o)}(300,i)),n()}).catch(function(t){e.emitter.maybeReportError(new wt.LDUnexpectedResponseError((t&&t.message,t.message))),n()}),{}}var Lt="goalsReady",jt={fetchGoals:{default:!0},hash:{type:"string"},eventProcessor:{type:"object"},eventUrlTransformer:{type:"function"},disableSyncEventPost:{default:!1}};function Ut(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=function(e){var t,n={userAgentHeaderName:"X-LaunchDarkly-User-Agent",synchronousFlush:!1};if(window.XMLHttpRequest){var r=e&&e.disableSyncEventPost;n.httpRequest=function(e,t,o,i){var a=n.synchronousFlush&!r;return n.synchronousFlush=!1,Ct(e,t,o,i,a)}}n.httpAllowsPost=function(){return void 0===t&&(t=!!window.XMLHttpRequest&&"withCredentials"in new window.XMLHttpRequest),t},n.httpFallbackPing=function(e){(new window.Image).src=e};var o,i=e&&e.eventUrlTransformer;n.getCurrentUrl=function(){return i?i(window.location.href):window.location.href},n.isDoNotTrack=function(){var e;return 1===(e=window.navigator&&void 0!==window.navigator.doNotTrack?window.navigator.doNotTrack:window.navigator&&void 0!==window.navigator.msDoNotTrack?window.navigator.msDoNotTrack:window.doNotTrack)||!0===e||"1"===e||"yes"===e};try{window.localStorage&&(n.localStorage={get:function(e){return new Promise(function(t){t(window.localStorage.getItem(e))})},set:function(e,t){return new Promise(function(n){window.localStorage.setItem(e,t),n()})},clear:function(e){return new Promise(function(t){window.localStorage.removeItem(e),t()})}})}catch(e){n.localStorage=null}if(e&&e.useReport&&"function"==typeof window.EventSourcePolyfill&&window.EventSourcePolyfill.supportedOptions&&window.EventSourcePolyfill.supportedOptions.method?(n.eventSourceAllowsReport=!0,o=window.EventSourcePolyfill):(n.eventSourceAllowsReport=!1,o=window.EventSource),window.EventSource){var a=3e5;n.eventSourceFactory=function(e,t){var n=Dt(Dt({},{heartbeatTimeout:a,silentTimeout:a,skipDefaultHeaders:!0}),t);return new o(e,n)},n.eventSourceIsActive=function(e){return e.readyState===window.EventSource.OPEN||e.readyState===window.EventSource.CONNECTING}}return n.userAgent="JSClient",n.version="3.9.5",n.diagnosticSdkData={name:"js-client-sdk",version:"3.9.5"},n.diagnosticPlatformData={name:"JS"},n.diagnosticUseCombinedEvent=!0,n}(n),o=yt(e,t,n,r,jt),i=o.client,a=o.options,s=o.emitter,c=new Promise(function(e){var t=s.on(Lt,function(){s.off(Lt,t),e()})});i.waitUntilGoalsReady=function(){return c},a.fetchGoals?Ft(o,r,function(){return s.emit(Lt)}):s.emit(Lt),"complete"!==document.readyState?window.addEventListener("load",o.start):o.start();var u=function(){r.synchronousFlush=!0,i.flush().catch(function(){}),r.synchronousFlush=!1};return document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&u()}),window.addEventListener("pagehide",u),i}var Rt=Ot,At="3.9.5";var Nt={initialize:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return console&&console.warn&&console.warn(kt.deprecated("default export","named LDClient export")),Ut(e,t,n)},version:At};e.basicLogger=Rt,e.createConsoleLogger=void 0,e.default=Nt,e.initialize=Ut,e.version=At,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ldclient.min.js.map
7c:T1280,// Loads the LaunchDarkly JS client SDK and initializes it.
// Mintlify includes every .js file in the content directory on every page,
// after the page becomes interactive.
//
// Docs flags live in Catfood, not app.launchdarkly.com, and they are served through
// a Relay Proxy. The environment also has secure mode turned on, so each environment
// needs three things: its client-side ID, the relay that serves it, and a secure mode
// hash generated for the exact context below. Client-side IDs and secure mode hashes
// are both safe to commit. Never put an SDK key (sdk-...) or an API token (api-...)
// here.
(function () {
  var ENVIRONMENTS = {
    production: {
      clientSideId: '5866f3891cd8810a42ce5281',
      relayUrl: 'https://relay-prod.ld.catamorphic.com',
      secureModeHash: '32d6ee918ac1631eaa3f86b36a12d1e62bd890cb50b38dff0304343b7ab7ad93',
    },
    staging: {
      clientSideId: '586c33cf1cd88133f9a7804f',
      relayUrl: 'https://relay-stg.ld.catamorphic.com',
      secureModeHash: '6938419d63f2ec8f3a08884a8a349798e3e715f08e8c8922e950bb70320bb5d4',
    },
  };

  var EVENTS_URL = 'https://events.ld.catamorphic.com';

  // Secure mode signs one specific context, so the key has to be this fixed string
  // rather than an SDK-generated per-visitor key. Every reader therefore shares one
  // anonymous context. Changing any field here invalidates the hashes above.
  var CONTEXT = {
    kind: 'user',
    key: 'anonymous',
    anonymous: true,
    application: 'launchDarkly',
  };

  // Only previews and local development read staging. Everything else reads
  // production, and that fallback direction is deliberate.
  //
  // launchdarkly.com proxies /docs to Mintlify's production deployment, and so do
  // its Netlify deploy previews, which report their own hostnames
  // (deploy-preview-404--launchdarkly-com.netlify.app). While production was an
  // allowlist of one, every one of those hosts fell through to staging, so a public
  // URL served staging flag values and could show content that production has
  // flagged off. Defaulting to production means an unrecognized host shows
  // production flag values, which is wrong in a preview but never publishes
  // anything early.
  function isStaging() {
    var h = window.location.hostname;
    return (
      h === 'localhost' ||
      h === '127.0.0.1' ||
      h === '::1' ||
      // `mint dev` also prints a LAN address, which teammates use to look at a
      // local build from another device.
      /^192\.168\./.test(h) ||
      /^10\./.test(h) ||
      /^172\.(1[6-9]|2[0-9]|3[01])\./.test(h) ||
      // Mintlify's per-PR preview deployments.
      /\.mintlify\.(site|app)$/.test(h)
    );
  }

  var env = isStaging() ? ENVIRONMENTS.staging : ENVIRONMENTS.production;

  // Without this, an unconfigured environment initializes against the literal
  // placeholder and fails in a way that looks like a flag problem.
  if (env.clientSideId.indexOf('REPLACE_WITH_') === 0) {
    console.warn(
      '[launchdarkly] No LaunchDarkly configuration for this environment, so ' +
        'flag-gated content renders its fallback. Fill in ld-init.js.',
    );
    return;
  }

  function start() {
    window.ldClient = window.LDClient.initialize(env.clientSideId, CONTEXT, {
      hash: env.secureModeHash,
      baseUrl: env.relayUrl,
      streamUrl: env.relayUrl,
      eventsUrl: EVENTS_URL,
    });
    window.ldClient.waitUntilReady().then(function () {
      // Lets components know flags are ready without polling.
      window.dispatchEvent(new Event('ld-ready'));
    });
  }

  // The SDK is vendored at assets/ldclient-3.9.5.min.js rather than pulled from a
  // CDN, because a CDN would run third-party code as first-party script on every
  // docs page -- the same thing our own docs tell customers not to do. To upgrade,
  // drop in a new bundle, delete the old one, and update the filename in the
  // warning below.
  //
  // Mintlify auto-includes every .js file under this directory, so the bundle has
  // already been requested and window.LDClient may already exist. It gives no
  // ordering guarantee between the files it injects, though, so when the bundle has
  // not finished yet we have to wait for it rather than assume it is there.
  if (window.LDClient) {
    start();
    return;
  }

  var waited = 0;
  var poll = setInterval(function () {
    if (window.LDClient) {
      clearInterval(poll);
      start();
    } else if ((waited += 50) >= 10000) {
      clearInterval(poll);
      console.warn(
        '[launchdarkly] assets/ldclient-3.9.5.min.js never defined LDClient, so ' +
          'flag-gated content renders its fallback. Is the bundle still present?',
      );
    }
  }, 50);
})();
78:["$","$L7a",null,{"customJsDisabled":false,"jsFiles":[{"_id":"6ac01cd82ddd1ebfb319d0ef","subdomain":"launchdarkly","filePath":"assets/ldclient-3.9.5.min.js","__v":0,"content":"$7b"},{"_id":"6ac01cd82ddd1ebfb319e347","subdomain":"launchdarkly","filePath":"ld-init.js","__v":0,"content":"$7c"}]}]
7f:T11c30,"use strict";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,View}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!View)_missingMdxReference(`View`,true);return _jsxs(_Fragment,{children:[_jsx(View,{title:`Developer`,id:`developer`}),`
`,_jsx(View,{title:`Federal docs`,id:`federal-docs`}),`
`,_jsx(View,{title:`EU docs`,id:`eu-docs`}),`
`,_jsxs(_components.p,{children:[`This documentation describes LaunchDarkly’s REST API. To access the complete OpenAPI spec directly, use `,_jsx(_components.a,{href:`/api/other/gets-the-openapi-spec-in-json`,children:`Get OpenAPI spec`}),`.`]}),`
`,_jsxs(_components.p,{children:[`To learn how to use LaunchDarkly using the user interface (UI) instead, read our `,_jsx(_components.a,{href:`/home`,children:`product documentation`}),`.`]}),`
`,_jsx(Heading,{level:`2`,id:`authentication`,children:`Authentication`}),`
`,_jsx(_components.p,{children:`LaunchDarkly’s REST API uses the HTTPS protocol with a minimum TLS version of 1.2.`}),`
`,_jsxs(_components.p,{children:[`All REST API resources are authenticated with either `,_jsx(_components.a,{href:`/home/account/api`,children:`personal or service access tokens`}),`, or session cookies. Other authentication mechanisms are not supported. You can manage personal access tokens on your `,_jsx(_components.a,{href:`https://app.launchdarkly.com/settings/authorization`,children:_jsx(_components.strong,{children:`Authorization`})}),` page in the LaunchDarkly UI.`]}),`
`,_jsxs(_components.p,{children:[`LaunchDarkly also has SDK keys, mobile keys, and client-side IDs that are used by our server-side SDKs, mobile SDKs, and JavaScript-based SDKs, respectively. `,_jsx(_components.strong,{children:`These keys cannot be used to access our REST API`}),`. These keys are environment-specific, and can only perform read-only operations such as fetching feature flag settings.`]}),`
`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Auth mechanism`}),_jsx(_components.th,{children:`Allowed resources`}),_jsx(_components.th,{children:`Use cases`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/home/account/api`,children:`Personal or service access tokens`})}),_jsx(_components.td,{children:`Can be customized on a per-token basis`}),_jsx(_components.td,{children:`Building scripts, custom integrations, data export.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`SDK keys`}),_jsx(_components.td,{children:`Can only access read-only resources specific to server-side SDKs. Restricted to a single environment.`}),_jsx(_components.td,{children:`Server-side SDKs`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Mobile keys`}),_jsx(_components.td,{children:`Can only access read-only resources specific to mobile SDKs, and only for flags marked available to mobile keys. Restricted to a single environment.`}),_jsx(_components.td,{children:`Mobile SDKs`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Client-side ID`}),_jsx(_components.td,{children:`Can only access read-only resources specific to JavaScript-based client-side SDKs, and only for flags marked available to client-side. Restricted to a single environment.`}),_jsx(_components.td,{children:`Client-side JavaScript`})]})]})]}),`
`,_jsxs(_components.blockquote,{children:[`
`,_jsx(Heading,{level:`4`,id:`keep-your-access-tokens-and-sdk-keys-private`,children:`Keep your access tokens and SDK keys private`}),`
`,_jsxs(_components.p,{children:[`Access tokens should `,_jsx(_components.em,{children:`never`}),` be exposed in untrusted contexts. Never put an access token in client-side JavaScript, or embed it in a mobile application. LaunchDarkly has special mobile keys that you can embed in mobile apps. If you accidentally expose an access token or SDK key, you can reset it from your `,_jsx(_components.a,{href:`https://app.launchdarkly.com/settings/authorization`,children:_jsx(_components.strong,{children:`Authorization`})}),` page.`]}),`
`,_jsx(_components.p,{children:`The client-side ID is safe to embed in untrusted contexts. It’s designed for use in client-side JavaScript.`}),`
`]}),`
`,_jsx(Heading,{level:`3`,id:`authentication-using-request-header`,children:`Authentication using request header`}),`
`,_jsxs(_components.p,{children:[`The preferred way to authenticate with the API is by adding an `,_jsx(_components.code,{children:`Authorization`}),` header containing your access token to your requests. The value of the `,_jsx(_components.code,{children:`Authorization`}),` header must be your access token.`]}),`
`,_jsxs(_components.p,{children:[`Manage personal access tokens from the `,_jsx(_components.a,{href:`https://app.launchdarkly.com/settings/authorization`,children:_jsx(_components.strong,{children:`Authorization`})}),` page.`]}),`
`,_jsx(Heading,{level:`3`,id:`authentication-using-session-cookie`,children:`Authentication using session cookie`}),`
`,_jsx(_components.p,{children:`For testing purposes, you can make API calls directly from your web browser. If you are logged in to the LaunchDarkly application, the API will use your existing session to authenticate calls.`}),`
`,_jsxs(_components.p,{children:[`Depending on the permissions granted as part of your `,_jsx(_components.a,{href:`/home/account/roles`,children:`role`}),`, you may not have permission to perform some API calls. You will receive a `,_jsx(_components.code,{children:`401`}),` response code in that case.`]}),`
`,_jsxs(_components.blockquote,{children:[`
`,_jsx(Heading,{level:`3`,id:`modifying-the-origin-header-causes-an-error`,children:`Modifying the Origin header causes an error`}),`
`,_jsxs(_components.p,{children:[`LaunchDarkly validates that the Origin header for any API request authenticated by a session cookie matches the expected Origin header. The expected Origin header is `,_jsx(_components.code,{children:`https://app.launchdarkly.com`}),`.`]}),`
`,_jsx(_components.p,{children:`If the Origin header does not match what’s expected, LaunchDarkly returns an error. This error can prevent the LaunchDarkly app from working correctly.`}),`
`,_jsx(_components.p,{children:`Any browser extension that intentionally changes the Origin header can cause this problem. For example, Cross-Origin Resource Sharing (CORS) extensions used during development can modify the Origin header and cause the app to fail.`}),`
`,_jsx(_components.p,{children:`To prevent this error, do not modify your Origin header.`}),`
`,_jsx(_components.p,{children:`LaunchDarkly does not require origin matching when authenticating with an access token, so this issue does not affect normal API usage.`}),`
`]}),`
`,_jsx(Heading,{level:`2`,id:`representations`,children:`Representations`}),`
`,_jsxs(_components.p,{children:[`All resources expect and return JSON response bodies. Error responses also send a JSON body. To learn more about the error format of the API, read `,_jsx(_components.a,{href:`/api/overview#errors`,children:`Errors`}),`.`]}),`
`,_jsxs(_components.p,{children:[`In practice this means that you always get a response with a `,_jsx(_components.code,{children:`Content-Type`}),` header set to `,_jsx(_components.code,{children:`application/json`}),`.`]}),`
`,_jsxs(_components.p,{children:[`In addition, request bodies for `,_jsx(_components.code,{children:`PATCH`}),`, `,_jsx(_components.code,{children:`POST`}),`, and `,_jsx(_components.code,{children:`PUT`}),` requests must be encoded as JSON with a `,_jsx(_components.code,{children:`Content-Type`}),` header set to `,_jsx(_components.code,{children:`application/json`}),`.`]}),`
`,_jsx(Heading,{level:`3`,id:`summary-and-detailed-representations`,children:`Summary and detailed representations`}),`
`,_jsxs(_components.p,{children:[`When you fetch a list of resources, the response includes only the most important attributes of each resource. This is a `,_jsx(_components.em,{children:`summary representation`}),` of the resource. When you fetch an individual resource, such as a single feature flag, you receive a `,_jsx(_components.em,{children:`detailed representation`}),` of the resource.`]}),`
`,_jsx(_components.p,{children:`The best way to find a detailed representation is to follow links. Every summary representation includes a link to its detailed representation.`}),`
`,_jsx(Heading,{level:`3`,id:`expanding-responses`,children:`Expanding responses`}),`
`,_jsx(_components.p,{children:`Sometimes the detailed representation of a resource does not include all of the attributes of the resource by default. If this is the case, the request method will clearly document this and describe which attributes you can include in an expanded response.`}),`
`,_jsxs(_components.p,{children:[`To include the additional attributes, append the `,_jsx(_components.code,{children:`expand`}),` request parameter to your request and add a comma-separated list of the attributes to include. For example, when you append `,_jsx(_components.code,{children:`?expand=members,maintainers`}),` to the `,_jsx(_components.a,{href:`/api/teams/get-team`,children:`Get team`}),` endpoint, the expanded response includes both of these attributes.`]}),`
`,_jsx(Heading,{level:`3`,id:`links-and-addressability`,children:`Links and addressability`}),`
`,_jsx(_components.p,{children:`The best way to navigate the API is by following links. These are attributes in representations that link to other resources. The API always uses the same format for links:`}),`
`,_jsxs(_components.ul,{children:[`
`,_jsxs(_components.li,{children:[`Links to other resources within the API are encapsulated in a `,_jsx(_components.code,{children:`_links`}),` object`]}),`
`,_jsxs(_components.li,{children:[`If the resource has a corresponding link to HTML content on the site, it is stored in a special `,_jsx(_components.code,{children:`_site`}),` link`]}),`
`]}),`
`,_jsx(_components.p,{children:`Each link has two attributes:`}),`
`,_jsxs(_components.ul,{children:[`
`,_jsxs(_components.li,{children:[`An `,_jsx(_components.code,{children:`href`}),`, which contains the URL`]}),`
`,_jsxs(_components.li,{children:[`A `,_jsx(_components.code,{children:`type`}),`, which describes the content type`]}),`
`]}),`
`,_jsx(_components.p,{children:`For example, a feature resource might return the following:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,expandable:`true`,numberOfLines:`16`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "_links"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: {`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`    "parent"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: {`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`      "href"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"/api/features"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`      "type"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"application/json"`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`    },`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`    "self"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: {`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`      "href"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"/api/features/sort.order"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`      "type"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"application/json"`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`    }`})}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`  },`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "_site"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: {`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`    "href"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"/features/sort.order"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`    "type"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"text/html"`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`  }`})}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsxs(_components.p,{children:[`From this, you can navigate to the parent collection of features by following the `,_jsx(_components.code,{children:`parent`}),` link, or navigate to the site page for the feature by following the `,_jsx(_components.code,{children:`_site`}),` link.`]}),`
`,_jsxs(_components.p,{children:[`Collections are always represented as a JSON object with an `,_jsx(_components.code,{children:`items`}),` attribute containing an array of representations. Like all other representations, collections have `,_jsx(_components.code,{children:`_links`}),` defined at the top level.`]}),`
`,_jsxs(_components.p,{children:[`Paginated collections include `,_jsx(_components.code,{children:`first`}),`, `,_jsx(_components.code,{children:`last`}),`, `,_jsx(_components.code,{children:`next`}),`, and `,_jsx(_components.code,{children:`prev`}),` links containing a URL with the respective set of elements in the collection.`]}),`
`,_jsx(Heading,{level:`2`,id:`updates`,children:`Updates`}),`
`,_jsxs(_components.p,{children:[`Resources that accept partial updates use the `,_jsx(_components.code,{children:`PATCH`}),` verb. Most resources support the `,_jsx(_components.a,{href:`/api/overview#updates-using-json-patch`,children:`JSON patch`}),` format. Some resources also support the `,_jsx(_components.a,{href:`/api/overview#updates-using-json-merge-patch`,children:`JSON merge patch`}),` format, and some resources support the `,_jsx(_components.a,{href:`/api/overview#updates-using-semantic-patch`,children:`semantic patch`}),` format, which is a way to specify the modifications to perform as a set of executable instructions. Each resource supports optional `,_jsx(_components.a,{href:`/api/overview#updates-with-comments`,children:`comments`}),` that you can submit with updates. Comments appear in outgoing webhooks, the audit log, and other integrations.`]}),`
`,_jsx(_components.p,{children:`When a resource supports both JSON patch and semantic patch, we document both in the request method. However, the specific request body fields and descriptions included in our documentation only match one type of patch or the other.`}),`
`,_jsx(Heading,{level:`3`,id:`updates-using-json-patch`,children:`Updates using JSON patch`}),`
`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://datatracker.ietf.org/doc/html/rfc6902`,children:`JSON patch`}),` is a way to specify the modifications to perform on a resource. JSON patch uses paths and a limited set of operations to describe how to transform the current state of the resource into a new state. JSON patch documents are always arrays, where each element contains an operation, a path to the field to update, and the new value.`]}),`
`,_jsx(_components.p,{children:`For example, in this feature flag representation:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`    "name"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"New recommendations engine"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`    "key"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"engine.enable"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`    "description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"This is the description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#82071E`,"--shiki-light-font-style":`italic`,"--shiki-dark":`#F44747`,"--shiki-dark-font-style":`inherit`},children:`    ...`})}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsx(_components.p,{children:`You can change the feature flag’s description with the following patch document:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`1`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`[{ `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"op"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"replace"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"path"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"/description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"value"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"This is the new description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:` }]`})]}),`
`]})})}),`
`,_jsx(_components.p,{children:`You can specify multiple modifications to perform in a single request. You can also test that certain preconditions are met before applying the patch:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`[`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`  { `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"op"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"test"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"path"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"/version"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"value"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,"--shiki-dark":`#B5CEA8`},children:`10`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:` },`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`  { `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"op"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"replace"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"path"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"/description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"value"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"The new description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:` }`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`]`})}),`
`]})})}),`
`,_jsxs(_components.p,{children:[`The above patch request tests whether the feature flag’s `,_jsx(_components.code,{children:`version`}),` is `,_jsx(_components.code,{children:`10`}),`, and if so, changes the feature flag’s description.`]}),`
`,_jsxs(_components.p,{children:[`Attributes that are not editable, such as a resource’s `,_jsx(_components.code,{children:`_links`}),`, have names that start with an underscore.`]}),`
`,_jsx(Heading,{level:`3`,id:`updates-using-json-merge-patch`,children:`Updates using JSON merge patch`}),`
`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://datatracker.ietf.org/doc/html/rfc7386`,children:`JSON merge patch`}),` is another format for specifying the modifications to perform on a resource. JSON merge patch is less expressive than JSON patch. However, in many cases it is simpler to construct a merge patch document. For example, you can change a feature flag’s description with the following merge patch document:`]}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"New flag description"`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsx(Heading,{level:`3`,id:`updates-using-semantic-patch`,children:`Updates using semantic patch`}),`
`,_jsx(_components.p,{children:`Some resources support the semantic patch format. A semantic patch is a way to specify the modifications to perform on a resource as a set of executable instructions.`}),`
`,_jsx(_components.p,{children:`Semantic patch allows you to be explicit about intent using precise, custom instructions. In many cases, you can define semantic patch instructions independently of the current state of the resource. This can be useful when defining a change that may be applied at a future date.`}),`
`,_jsxs(_components.p,{children:[`To make a semantic patch request, you must append `,_jsx(_components.code,{children:`domain-model=launchdarkly.semanticpatch`}),` to your `,_jsx(_components.code,{children:`Content-Type`}),` header.`]}),`
`,_jsx(_components.p,{children:`Here’s how:`}),`
`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Content-Type: application/json; domain-model=launchdarkly.semanticpatch`})}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`
`,_jsxs(_components.p,{children:[`If you call a semantic patch resource without this header, you will receive a `,_jsx(_components.code,{children:`400`}),` response because your semantic patch will be interpreted as a JSON patch.`]}),`
`,_jsx(_components.p,{children:`The body of a semantic patch request takes the following properties:`}),`
`,_jsxs(_components.ul,{children:[`
`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`comment`}),` (string): (Optional) A description of the update.`]}),`
`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`environmentKey`}),` (string): (Required for some resources only) The environment key.`]}),`
`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`instructions`}),` (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a `,_jsx(_components.code,{children:`kind`}),` property that indicates the instruction. If the instruction requires parameters, you must include those parameters as additional fields in the object. The documentation for each resource that supports semantic patch includes the available instructions and any additional parameters.`]}),`
`]}),`
`,_jsx(_components.p,{children:`For example:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "comment"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"optional comment"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "instructions"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: [ {`}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"kind"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"turnFlagOn"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`} ]`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsxs(_components.p,{children:[`Semantic patches are not applied partially; either all of the instructions are applied or none of them are. If `,_jsx(_components.strong,{children:`any`}),` instruction is invalid, the endpoint returns an error and will not change the resource. If all instructions are valid, the request succeeds and the resources are updated if necessary, or left unchanged if they are already in the state you request.`]}),`
`,_jsx(Heading,{level:`3`,id:`updates-with-comments`,children:`Updates with comments`}),`
`,_jsxs(_components.p,{children:[`You can submit optional comments with `,_jsx(_components.code,{children:`PATCH`}),` changes.`]}),`
`,_jsx(_components.p,{children:`To submit a comment along with a JSON patch document, use the following format:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "comment"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"This is a comment string"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "patch"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: [{ `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"op"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"replace"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"path"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"/description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"value"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"The new description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:` }]`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsx(_components.p,{children:`To submit a comment along with a JSON merge patch document, use the following format:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "comment"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"This is a comment string"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "merge"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"New flag description"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:` }`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsx(_components.p,{children:`To submit a comment along with a semantic patch, use the following format:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "comment"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"This is a comment string"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "instructions"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: [ {`}),_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`"kind"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"turnFlagOn"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`} ]`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`
`,_jsx(_components.p,{children:`The API always returns errors in a common format. Here’s an example:`}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`{`})}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "code"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"invalid_request"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "message"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"A feature with that key already exists"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`,`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#9CDCFE`},children:`  "id"`}),_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:`"30ce6058-87da-11e4-b116-123b93f75cba"`})]}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,"--shiki-dark":`#D4D4D4`},children:`}`})}),`
`]})})}),`
`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`code`}),` indicates the general class of error. The `,_jsx(_components.code,{children:`message`}),` is a human-readable explanation of what went wrong. The `,_jsx(_components.code,{children:`id`}),` is a unique identifier. Use it when you’re working with LaunchDarkly Support to debug a problem with a specific API call.`]}),`
`,_jsx(Heading,{level:`3`,id:`http-status-error-response-codes`,children:`HTTP status error response codes`}),`
`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Definition`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Possible Solution`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`400`}),_jsx(_components.td,{children:`Invalid request`}),_jsx(_components.td,{children:`The request cannot be understood.`}),_jsx(_components.td,{children:`Ensure JSON syntax in request body is correct.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`401`}),_jsx(_components.td,{children:`Invalid access token`}),_jsx(_components.td,{children:`Requestor is unauthorized or does not have permission for this API call.`}),_jsx(_components.td,{children:`Ensure your API access token is valid and has the appropriate permissions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`403`}),_jsx(_components.td,{children:`Forbidden`}),_jsx(_components.td,{children:`Requestor does not have access to this resource.`}),_jsx(_components.td,{children:`Ensure that the account member or access token has proper permissions set.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`404`}),_jsx(_components.td,{children:`Invalid resource identifier`}),_jsx(_components.td,{children:`The requested resource is not valid.`}),_jsx(_components.td,{children:`Ensure that the resource is correctly identified by ID or key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`405`}),_jsx(_components.td,{children:`Method not allowed`}),_jsx(_components.td,{children:`The request method is not allowed on this resource.`}),_jsx(_components.td,{children:`Ensure that the HTTP verb is correct.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`409`}),_jsx(_components.td,{children:`Conflict`}),_jsx(_components.td,{children:`The API request can not be completed because it conflicts with a concurrent API request.`}),_jsx(_components.td,{children:`Retry your request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`422`}),_jsx(_components.td,{children:`Unprocessable entity`}),_jsx(_components.td,{children:`The API request can not be completed because the update description can not be understood.`}),_jsx(_components.td,{children:`Ensure that the request body is correct for the type of patch you are using, either JSON patch or semantic patch.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{"data-numeric":`true`,children:`429`}),_jsx(_components.td,{children:`Too many requests`}),_jsxs(_components.td,{children:[`Read `,_jsx(_components.a,{href:`/api/overview#rate-limiting`,children:`Rate limiting`}),`.`]}),_jsx(_components.td,{children:`Wait and try again later.`})]})]})]}),`
`,_jsx(Heading,{level:`2`,id:`cors`,children:`CORS`}),`
`,_jsxs(_components.p,{children:[`The LaunchDarkly API supports Cross Origin Resource Sharing (CORS) for AJAX requests from any origin. If an `,_jsx(_components.code,{children:`Origin`}),` header is given in a request, it will be echoed as an explicitly allowed origin. Otherwise the request returns a wildcard, `,_jsx(_components.code,{children:`Access-Control-Allow-Origin: *`}),`. For more information on CORS, read the `,_jsx(_components.a,{href:`http://www.w3.org/TR/cors`,children:`CORS W3C Recommendation`}),`. Example CORS headers might look like:`]}),`
`,_jsx(CodeBlock,{filename:``,lines:`true`,wrap:`true`,numberOfLines:`4`,language:`http`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#569CD6`},children:`Access-Control-Allow-Headers`}),_jsx(_components.span,{style:{color:`#CF222E`,"--shiki-dark":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:` Accept, Content-Type, Content-Length, Accept-Encoding, Authorization`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#569CD6`},children:`Access-Control-Allow-Methods`}),_jsx(_components.span,{style:{color:`#CF222E`,"--shiki-dark":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:` OPTIONS, GET, DELETE, PATCH`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#569CD6`},children:`Access-Control-Allow-Origin`}),_jsx(_components.span,{style:{color:`#CF222E`,"--shiki-dark":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:` *`})]}),`
`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,"--shiki-dark":`#569CD6`},children:`Access-Control-Max-Age`}),_jsx(_components.span,{style:{color:`#CF222E`,"--shiki-dark":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,"--shiki-dark":`#CE9178`},children:` 300`})]}),`
`]})})}),`
`,_jsxs(_components.p,{children:[`You can make authenticated CORS calls just as you would make same-origin calls, using either `,_jsx(_components.a,{href:`/api/overview#authentication`,children:`token or session-based authentication`}),`. If you are using session authentication, you should set the `,_jsx(_components.code,{children:`withCredentials`}),` property for your `,_jsx(_components.code,{children:`xhr`}),` request to `,_jsx(_components.code,{children:`true`}),`. You should never expose your access tokens to untrusted entities.`]}),`
`,_jsx(Heading,{level:`2`,id:`rate-limiting`,children:`Rate limiting`}),`
`,_jsxs(_components.p,{children:[`We use several rate-limiting strategies to ensure the availability of our APIs. Rate-limited calls to our APIs return a `,_jsx(_components.code,{children:`429`}),` status code and include headers to indicate the current rate limit status. The specific headers returned depend on the API route that was called. Limits differ based on the route, authentication mechanism, and other factors.`]}),`
`,_jsxs(_components.p,{children:[`Each set of headers below appears only when the corresponding limit is being enforced for your call. A given route may be subject to any combination of these limits, so a response can include one, several, or none of these headers. A missing header indicates that the limit was not applied to this specific call; it does not necessarily indicate that the limit does not exist. To reduce usage before hitting a `,_jsx(_components.code,{children:`429`}),` status, program against whichever rate limit headers are present rather than expecting a specific header.`]}),`
`,_jsx(_components.p,{children:`We do not publicly document the specific number of calls permitted by any of these limits, and these limits may change. We encourage clients to program against the specification and rely on the headers described below, rather than hardcoding the current limits.`}),`
`,_jsxs(_components.blockquote,{children:[`
`,_jsx(Heading,{level:`3`,id:`rate-limiting-and-sdks`,children:`Rate limiting and SDKs`}),`
`,_jsx(_components.p,{children:`LaunchDarkly SDKs are never rate limited and do not use the API endpoints defined here. LaunchDarkly uses a different set of approaches, including streaming/server-sent events and a global CDN, to ensure availability to the routes used by LaunchDarkly SDKs.`}),`
`]}),`
`,_jsx(Heading,{level:`3`,id:`global-rate-limits`,children:`Global rate limits`}),`
`,_jsx(_components.p,{children:`Authenticated requests are subject to a global limit. This is the maximum number of calls that your account can make to the API per ten seconds. All service and personal access tokens on the account share this limit, so exceeding the limit with one access token will impact other tokens. Calls that are subject to global rate limits may return the headers below:`}),`
`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header name`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Global-Limit`})}),_jsx(_components.td,{children:`The maximum number of requests the account is permitted to make per ten seconds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Global-Remaining`})}),_jsx(_components.td,{children:`The number of requests remaining in the current global rate limit window.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Reset`})}),_jsx(_components.td,{children:`The time at which the current rate limit window resets in epoch milliseconds.`})]})]})]}),`
`,_jsx(Heading,{level:`3`,id:`route-level-rate-limits`,children:`Route-level rate limits`}),`
`,_jsx(_components.p,{children:`Some authenticated routes have custom rate limits. These also reset every ten seconds. Any service or personal access tokens hitting the same route share this limit, so exceeding the limit with one access token may impact other tokens. Calls that are subject to route-level rate limits return the headers below:`}),`
`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header name`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Route-Limit`})}),_jsx(_components.td,{children:`The maximum number of requests to the current route permitted per ten seconds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Route-Remaining`})}),_jsx(_components.td,{children:`The number of requests remaining for the current route in the current rate limit window.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Reset`})}),_jsx(_components.td,{children:`The time at which the current rate limit window resets in epoch milliseconds.`})]})]})]}),`
`,_jsxs(_components.p,{children:[`A `,_jsx(_components.em,{children:`route`}),` represents a specific URL pattern and verb. For example, the `,_jsx(_components.a,{href:`/api/environments/delete-environment`,children:`Delete environment`}),` endpoint is considered a single route, and each call to delete an environment counts against your route-level rate limit for that route.`]}),`
`,_jsx(Heading,{level:`3`,id:`access-token-rate-limits`,children:`Access token rate limits`}),`
`,_jsx(_components.p,{children:`Some calls are rate limited per access token. Unlike the global and route-level limits, this limit applies to a single service or personal access token on its own. Exceeding a limit with one access token does not affect other tokens on the account. Calls that are subject to access token rate limits return these headers:`}),`
`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header name`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Auth-Token-Limit`})}),_jsx(_components.td,{children:`The maximum number of requests the access token can make per ten seconds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Auth-Token-Remaining`})}),_jsx(_components.td,{children:`The number of requests remaining for the access token in the current rate limit window.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Ratelimit-Auth-Token-Reset`})}),_jsx(_components.td,{children:`The time at which the current rate limit window resets in epoch milliseconds.`})]})]})]}),`
`,_jsxs(_components.p,{children:[`Unlike the other rate limits, access token rate limits report their own reset time in the `,_jsx(_components.code,{children:`X-Ratelimit-Auth-Token-Reset`}),` header instead of in `,_jsx(_components.code,{children:`X-Ratelimit-Reset`}),`.`]}),`
`,_jsx(Heading,{level:`3`,id:`ip-based-rate-limiting`,children:`IP-based rate limiting`}),`
`,_jsxs(_components.p,{children:[`We also employ IP-based rate limiting on some API routes. If you hit an IP-based rate limit, your API response will include a `,_jsx(_components.code,{children:`Retry-After`}),` header indicating how long to wait before re-trying the call. Clients must wait at least `,_jsx(_components.code,{children:`Retry-After`}),` seconds before making additional calls to our API, and should employ jitter and backoff strategies to avoid triggering rate limits again.`]}),`
`,_jsx(Heading,{level:`2`,id:`openapi-swagger-and-client-libraries`,children:`OpenAPI (Swagger) and client libraries`}),`
`,_jsxs(_components.p,{children:[`We have a `,_jsx(_components.a,{href:`https://app.launchdarkly.com/api/v2/openapi.json`,children:`complete OpenAPI (Swagger) specification`}),` for our API.`]}),`
`,_jsxs(_components.p,{children:[`We auto-generate multiple client libraries based on our OpenAPI specification. To learn more, visit the `,_jsx(_components.a,{href:`https://github.com/search?q=topic%3Alaunchdarkly-api+org%3Alaunchdarkly&type=Repositories`,children:`collection of client libraries on GitHub`}),`. Alternatively, you can use the specification to generate client libraries to interact with our REST API in your language of choice. Or, you can refer to our API endpoints’ documentation for guidance on how to make requests with a common HTTP library in your language of choice.`]}),`
`,_jsx(_components.p,{children:`Our OpenAPI specification is supported by several API-based tools such as Postman and Insomnia. In many cases, you can directly import our specification to explore our APIs.`}),`
`,_jsx(Heading,{level:`2`,id:`method-overriding`,children:`Method overriding`}),`
`,_jsxs(_components.p,{children:[`Some firewalls and HTTP clients restrict the use of verbs other than `,_jsx(_components.code,{children:`GET`}),` and `,_jsx(_components.code,{children:`POST`}),`. In those environments, our API endpoints that use `,_jsx(_components.code,{children:`DELETE`}),`, `,_jsx(_components.code,{children:`PATCH`}),`, and `,_jsx(_components.code,{children:`PUT`}),` verbs are inaccessible.`]}),`
`,_jsxs(_components.p,{children:[`To avoid this issue, our API supports the `,_jsx(_components.code,{children:`X-HTTP-Method-Override`}),` header, allowing clients to “tunnel” `,_jsx(_components.code,{children:`DELETE`}),`, `,_jsx(_components.code,{children:`PATCH`}),`, and `,_jsx(_components.code,{children:`PUT`}),` requests using a `,_jsx(_components.code,{children:`POST`}),` request.`]}),`
`,_jsxs(_components.p,{children:[`For example, to call a `,_jsx(_components.code,{children:`PATCH`}),` endpoint using a `,_jsx(_components.code,{children:`POST`}),` request, you can include `,_jsx(_components.code,{children:`X-HTTP-Method-Override:PATCH`}),` as a header.`]}),`
`,_jsx(Heading,{level:`2`,id:`beta-resources`,children:`Beta resources`}),`
`,_jsxs(_components.p,{children:[`We sometimes release new API resources in `,_jsx(_components.strong,{children:`beta`}),` status before we release them with general availability.`]}),`
`,_jsx(_components.p,{children:`Resources that are in beta are still undergoing testing and development. They may change without notice, including becoming backwards incompatible.`}),`
`,_jsx(_components.p,{children:`We try to promote resources into general availability as quickly as possible. This happens after sufficient testing and when we’re satisfied that we no longer need to make backwards-incompatible changes.`}),`
`,_jsx(_components.p,{children:`We mark beta resources with a “Beta” callout in our documentation, pictured below:`}),`
`,_jsxs(_components.blockquote,{children:[`
`,_jsx(Heading,{level:`3`,id:`this-feature-is-in-beta`,children:`This feature is in beta`}),`
`,_jsxs(_components.p,{children:[`To use this feature, pass in a header including the `,_jsx(_components.code,{children:`LD-API-Version`}),` key with value set to `,_jsx(_components.code,{children:`beta`}),`. Use this header with each call. To learn more, read `,_jsx(_components.a,{href:`/api/overview#beta-resources`,children:`Beta resources`}),`.`]}),`
`,_jsx(_components.p,{children:`Resources that are in beta are still undergoing testing and development. They may change without notice, including becoming backwards incompatible.`}),`
`]}),`
`,_jsx(Heading,{level:`3`,id:`using-beta-resources`,children:`Using beta resources`}),`
`,_jsxs(_components.p,{children:[`To use a beta resource, you must include a header in the request. If you call a beta resource without this header, you receive a `,_jsx(_components.code,{children:`403`}),` response.`]}),`
`,_jsx(_components.p,{children:`Use this header:`}),`
`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`LD-API-Version: beta`})}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`
`,_jsx(Heading,{level:`2`,id:`federal-and-eu-environments`,children:`Federal and EU environments`}),`
`,_jsx(_components.p,{children:`In addition to the commercial versions, LaunchDarkly offers instances for federal agencies and those based in the European Union (EU).`}),`
`,_jsx(Heading,{level:`3`,id:`federal-environments`,children:`Federal environments`}),`
`,_jsx(_components.p,{children:`The version of LaunchDarkly that is available on domains controlled by the United States government is different from the version of LaunchDarkly available to the general public. If you are an employee or contractor for a United States federal agency and use LaunchDarkly in your work, you likely use the federal instance of LaunchDarkly.`}),`
`,_jsxs(_components.p,{children:[`If you are working in the federal instance of LaunchDarkly, the base URI for each request is `,_jsx(_components.code,{children:`https://app.launchdarkly.us`}),`.`]}),`
`,_jsxs(_components.p,{children:[`To learn more, read `,_jsx(_components.a,{href:`/home/infrastructure/federal`,children:`LaunchDarkly in federal environments`}),`.`]}),`
`,_jsx(Heading,{level:`3`,id:`eu-environments`,children:`EU environments`}),`
`,_jsx(_components.p,{children:`The version of LaunchDarkly that is available in the EU is different from the version of LaunchDarkly available to other regions. If you are based in the EU, you likely use the EU instance of LaunchDarkly. The LaunchDarkly EU instance complies with EU data residency principles, including the protection and confidentiality of EU customer information.`}),`
`,_jsxs(_components.p,{children:[`If you are working in the EU instance of LaunchDarkly, the base URI for each request is `,_jsx(_components.code,{children:`https://app.eu.launchdarkly.com`}),`.`]}),`
`,_jsxs(_components.p,{children:[`To learn more, read `,_jsx(_components.a,{href:`/home/infrastructure/eu`,children:`LaunchDarkly in the European Union (EU)`}),`.`]}),`
`,_jsx(Heading,{level:`2`,id:`versioning`,children:`Versioning`}),`
`,_jsx(_components.p,{children:`We try hard to keep our REST API backwards compatible, but we occasionally have to make backwards-incompatible changes in the process of shipping new features. These breaking changes can cause unexpected behavior if you don’t prepare for them accordingly.`}),`
`,_jsx(_components.p,{children:`Updates to our REST API include support for the latest features in LaunchDarkly. We also release a new version of our REST API every time we make a breaking change. We provide simultaneous support for multiple API versions so you can migrate from your current API version to a new version at your own pace.`}),`
`,_jsx(Heading,{level:`3`,id:`setting-the-api-version-per-request`,children:`Setting the API version per request`}),`
`,_jsxs(_components.p,{children:[`You can set the API version on a specific request by sending an `,_jsx(_components.code,{children:`LD-API-Version`}),` header, as shown in the example below:`]}),`
`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,"--shiki-dark-bg":`#0B0C0E`,color:`#1f2328`,"--shiki-dark":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`LD-API-Version: 20240415`})}),`
`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`
`,_jsxs(_components.p,{children:[`The header value is the version number of the API version you would like to request. The number for each version corresponds to the date the version was released in `,_jsx(_components.code,{children:`yyyymmdd`}),` format. In the example above the version `,_jsx(_components.code,{children:`20240415`}),` corresponds to April 15, 2024.`]}),`
`,_jsx(Heading,{level:`3`,id:`setting-the-api-version-per-access-token`,children:`Setting the API version per access token`}),`
`,_jsx(_components.p,{children:`When you create an access token, you must specify a specific version of the API to use. This ensures that integrations using this token cannot be broken by version changes.`}),`
`,_jsxs(_components.p,{children:[`Tokens created before versioning was released have their version set to `,_jsx(_components.code,{children:`20160426`}),`, which is the version of the API that existed before the current versioning scheme, so that they continue working the same way they did before versioning.`]}),`
`,_jsx(_components.p,{children:`If you would like to upgrade your integration to use a new API version, you can explicitly set the header described above.`}),`
`,_jsxs(_components.blockquote,{children:[`
`,_jsx(Heading,{level:`3`,id:`best-practice-set-the-header-for-every-client-or-integration`,children:`Best practice: Set the header for every client or integration`}),`
`,_jsx(_components.p,{children:`We recommend that you set the API version header explicitly in any client or integration you build.`}),`
`,_jsx(_components.p,{children:`Only rely on the access token API version during manual testing.`}),`
`]}),`
`,_jsx(Heading,{level:`3`,id:`api-version-changelog`,children:`API version changelog`}),`
`,_jsxs(`table`,{children:[_jsx(`thead`,{children:_jsxs(`tr`,{children:[_jsx(`th`,{children:`Version`}),_jsx(`th`,{children:`Changes`}),_jsx(`th`,{children:`End of life (EOL)`})]})}),_jsxs(`tbody`,{children:[_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(_components.code,{children:`20240415`})}),_jsx(`td`,{children:_jsxs(`ul`,{children:[_jsxs(`li`,{children:[`Changed several endpoints from unpaginated to paginated. Use the `,_jsx(_components.code,{children:`limit`}),` and `,_jsx(_components.code,{children:`offset`}),` query parameters to page through the results.`]}),` `,_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/access-tokens/list-access-tokens`,children:`list access tokens`}),` endpoint: `,_jsx(`ul`,{children:_jsxs(`li`,{children:[`Response is now paginated with a default limit of `,_jsx(_components.code,{children:`25`})]})})]}),` `,_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/account-members/list-account-members`,children:`list account members`}),` endpoint: `,_jsx(`ul`,{children:_jsxs(`li`,{children:[`The `,_jsx(_components.code,{children:`accessCheck`}),` filter is no longer available`]})})]}),` `,_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/custom-roles/list-custom-roles`,children:`list custom roles`}),` endpoint: `,_jsx(`ul`,{children:_jsxs(`li`,{children:[`Response is now paginated with a default limit of `,_jsx(_components.code,{children:`20`})]})})]}),` `,_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/feature-flags/list-feature-flags`,children:`list feature flags`}),` endpoint: `,_jsxs(`ul`,{children:[_jsxs(`li`,{children:[`Response is now paginated with a default limit of `,_jsx(_components.code,{children:`20`})]}),_jsxs(`li`,{children:[`The `,_jsx(_components.code,{children:`environments`}),` field is now only returned if the request is filtered by environment, using the `,_jsx(_components.code,{children:`filterEnv`}),` query parameter`]}),_jsxs(`li`,{children:[`The `,_jsx(_components.code,{children:`followerId`}),`, `,_jsx(_components.code,{children:`hasDataExport`}),`, `,_jsx(_components.code,{children:`status`}),`, `,_jsx(_components.code,{children:`contextKindTargeted`}),`, and `,_jsx(_components.code,{children:`segmentTargeted`}),` filters are no longer available`]}),_jsxs(`li`,{children:[`The `,_jsx(_components.code,{children:`compare`}),` query parameter is no longer available`]})]})]}),` `,_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/segments/list-segments`,children:`list segments`}),` endpoint: `,_jsx(`ul`,{children:_jsxs(`li`,{children:[`Response is now paginated with a default limit of `,_jsx(_components.code,{children:`20`})]})})]}),` `,_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/teams/list-teams`,children:`list teams`}),` endpoint: `,_jsxs(`ul`,{children:[_jsxs(`li`,{children:[`The `,_jsx(_components.code,{children:`expand`}),` parameter no longer supports including `,_jsx(_components.code,{children:`projects`}),` or `,_jsx(_components.code,{children:`roles`})]}),_jsx(`li`,{children:`In paginated results, the maximum page size is now 100`})]})]}),` `,_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/workflows/get-workflows`,children:`get workflows`}),` endpoint: `,_jsxs(`ul`,{children:[_jsxs(`li`,{children:[`Response is now paginated with a default limit of `,_jsx(_components.code,{children:`20`})]}),_jsxs(`li`,{children:[`The `,_jsx(_components.code,{children:`_conflicts`}),` field in the response is no longer available`]})]})]}),` `]})}),_jsx(`td`,{children:`Current`})]}),_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(_components.code,{children:`20220603`})}),_jsx(`td`,{children:_jsxs(`ul`,{children:[_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/projects/list-projects`,children:`list projects`}),` return value:`,_jsxs(`ul`,{children:[_jsxs(`li`,{children:[`Response is now paginated with a default limit of `,_jsx(_components.code,{children:`20`}),`.`]}),_jsx(`li`,{children:`Added support for filter and sort.`}),_jsxs(`li`,{children:[`The project `,_jsx(_components.code,{children:`environments`}),` field is now expandable. This field is omitted by default.`]})]})]}),_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/projects/get-project`,children:`get project`}),` return value:`,_jsx(`ul`,{children:_jsxs(`li`,{children:[`The `,_jsx(_components.code,{children:`environments`}),` field is now expandable. This field is omitted by default.`]})})]})]})}),_jsx(`td`,{children:`2025-04-15`})]}),_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(_components.code,{children:`20210729`})}),_jsx(`td`,{children:_jsxs(`ul`,{children:[_jsxs(`li`,{children:[`Changed the `,_jsx(_components.a,{href:`/api/approvals/create-approval-request`,children:`create approval request`}),` return value. It now returns HTTP Status Code `,_jsx(_components.code,{children:`201`}),` instead of `,_jsx(_components.code,{children:`200`}),`.`]}),_jsxs(`li`,{children:[` Changed the `,_jsx(_components.a,{href:`/api/users/get-user`,children:`get user`}),` return value. It now returns a user record, not a user. `]}),_jsx(`li`,{children:`Added additional optional fields to environment, segments, flags, members, and segments, including the ability to create big segments. `}),_jsx(`li`,{children:` Added default values for flag variations when new environments are created. `}),_jsxs(`li`,{children:[`Added filtering and pagination for getting flags and members, including `,_jsx(_components.code,{children:`limit`}),`, `,_jsx(_components.code,{children:`number`}),`, `,_jsx(_components.code,{children:`filter`}),`, and `,_jsx(_components.code,{children:`sort`}),` query parameters. `]}),_jsx(`li`,{children:`Added endpoints for expiring user targets for flags and segments, scheduled changes, access tokens, Relay Proxy configuration, integrations and subscriptions, and approvals. `})]})}),_jsx(`td`,{children:`2023-06-03`})]}),_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(_components.code,{children:`20191212`})}),_jsx(`td`,{children:_jsxs(`ul`,{children:[_jsxs(`li`,{children:[_jsx(_components.a,{href:`/api/feature-flags/list-feature-flags`,children:`List feature flags`}),` now defaults to sending summaries of feature flag configurations, equivalent to setting the query parameter `,_jsx(_components.code,{children:`summary=true`}),`. Summaries omit flag targeting rules and individual user targets from the payload. `]}),_jsx(`li`,{children:` Added endpoints for flags, flag status, projects, environments, audit logs, members, users, custom roles, segments, usage, streams, events, and data export. `})]})}),_jsx(`td`,{children:`2022-07-29`})]}),_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(_components.code,{children:`20160426`})}),_jsx(`td`,{children:_jsx(`ul`,{children:_jsx(`li`,{children:`Initial versioning of API. Tokens created before versioning have their version set to this.`})})}),_jsx(`td`,{children:`2020-12-12`})]})]})]}),`
`,_jsxs(_components.p,{children:[`To learn more about how EOL is determined, read LaunchDarkly’s `,_jsx(_components.a,{href:`https://launchdarkly.com/policies/end-of-life-policy/`,children:`End of Life (EOL) Policy`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+" `"+id+"` to be defined: you likely forgot to import, pass, or provide it.")}79:["$","$L7d",null,{"slug":"api/overview","pageMetadata":"$69:props:pageMetadata","theme":"aspen","children":["$","$L7e",null,{"mdxSource":{"compiledSource":"$7f","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"REST API overview","description":null,"href":"/api/overview"}}},"mdxSourceWithNoJs":"$undefined","displayDomain":"launchdarkly.com/docs"}]}]
