Creates a ramp schedule, optionally attached to a published feature rule by passing featureId and ruleId together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule followed by a publish. Without a target the schedule is a free-standing skeleton in pending status. Requires a Pro plan or above.
POST
/
v1
/
ramp-schedules
cURL
curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules' \
-H 'Authorization: Bearer YOUR_API_KEY'
When true, the ramp holds at step -1 with its rule disabled (zero traffic) until a human approves the start via /actions/approve-step. Composes with startDate.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"GrowthBook Documentation","colors":{"primary":"#039DD0","light":"#baa7ff","dark":"#039DD0"},"logo":{"light":"https://mintcdn.com/growthbook-ea15456d/66H-dO8hZfIFVUdN/static/img/growthbook-docslogo-light.png?fit=max\u0026auto=format\u0026n=66H-dO8hZfIFVUdN\u0026q=85\u0026s=36f32d1bbabbdafdb0bd9bc2b53c43e7","dark":"https://mintcdn.com/growthbook-ea15456d/66H-dO8hZfIFVUdN/static/img/growthbook-docslogo-dark.png?fit=max\u0026auto=format\u0026n=66H-dO8hZfIFVUdN\u0026q=85\u0026s=4d2b042f7579c6c815de8ce10cbf6408","href":"/"},"favicon":"https://mintcdn.com/growthbook-ea15456d/giSZyh24PfnTkKz4/static/favicon.png?fit=max\u0026auto=format\u0026n=giSZyh24PfnTkKz4\u0026q=85\u0026s=6832a69676f48e5223736cd3b6ce33da","background":{"color":{"dark":"#1B1B1D"}},"navbar":{"links":[{"icon":"bullhorn","href":"https://growthbook.io/product-updates","label":"Product Updates"},{"href":"https://github.com/growthbook/growthbook","label":"Github","type":"github"}],"primary":{"type":"button","label":"Open App","href":"https://app.growthbook.io/"}},"footer":{"socials":{"x":"https://twitter.com/growth_book","linkedin":"https://www.linkedin.com/company/growthbook","github":"https://github.com/growthbook/growthbook","slack":"https://slack.growthbook.io/?ref=footer-icon"},"links":[{"header":"Community","items":[{"label":"Join us on Slack","href":"https://slack.growthbook.io/"},{"label":"Open an Issue","href":"https://github.com/growthbook/growthbook/issues/new/choose"}]},{"header":"Company","items":[{"label":"About","href":"https://www.growthbook.io/about"},{"label":"Blog","href":"https://www.growthbook.io/blog"}]}]},"seo":{"indexing":"navigable"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"gtm":{"tagId":"GTM-MF7GKV4V"}},"banner":{"content":"**New:** See what we've shipped lately on our [Product Updates](https://growthbook.io/product-updates) page.","dismissible":true},"contextual":{"options":["copy","view",{"title":"Edit this page","description":"Propose a change on GitHub","icon":"pencil","href":{"base":"https://github.com/growthbook/growthbook/edit/main/docs$path.mdx"}},"chatgpt","claude","perplexity","grok","aistudio","devin","windsurf","mcp","cursor","vscode","devin-mcp"],"display":"header"},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"growthbook-ea15456d","hasAudioNarration":false,"actualSubdomain":"growthbook-ea15456d","customDomains":["docs.growthbook.io"],"gitSource":{"type":"github","owner":"growthbook","repo":"growthbook","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"contextualFeedback":{"allowEmail":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":"6af314502e595ebec461d060","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API","count":569},{"language":"default","tag":"Endpoints","count":451},{"language":"default","tag":"Docs","count":189},{"language":"default","tag":"Models","count":117},{"language":"default","tag":"Data \u0026 Metrics","count":41},{"language":"default","tag":"Experimentation","count":41},{"language":"default","tag":"Feature Revisions","count":33},{"language":"default","tag":"SDKs","count":29},{"language":"default","tag":"Feature Flags","count":27},{"language":"default","tag":"Contextual Bandits","count":26}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"workos-onboarding","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":"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":"support-platform-pylon-zendesk","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":"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":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","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":"fork-pr-previews","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":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":":root{--violet-1: #fdfcfe;--violet-2: #faf8ff;--violet-3: #f4f0fe;--violet-4: #ebe4ff;--violet-5: #e1d9ff;--violet-6: #d4cafe;--violet-7: #c2b5f5;--violet-8: #aa99ec;--violet-9: #6e56cf;--violet-10: #654dc4;--violet-11: #6550b9;--violet-12: #2f265f;--violet-a1: #5500aa03;--violet-a2: #4900ff07;--violet-a3: #4400ee0f;--violet-a4: #4300ff1b;--violet-a5: #3600ff26;--violet-a6: #3100fb35;--violet-a7: #2d01dd4a;--violet-a8: #2b00d066;--violet-a9: #2400b7a9;--violet-a10: #2300abb2;--violet-a11: #1f0099af;--violet-a12: #0b0043d9;--slate-a1: #00005503;--slate-a2: #00005506;--slate-a3: #0000330f;--slate-a4: #00002d17;--slate-a5: #0009321f;--slate-a6: #00002f26;--slate-a7: #00062e32;--slate-a8: #00083046;--slate-a9: #00051d74;--slate-a10: #00071b7f;--slate-a11: #0007149f;--slate-a12: #000509e3;--indigo-1: #fdfdfe;--indigo-2: #f7f9ff;--indigo-3: #edf2fe;--indigo-4: #e1e9ff;--indigo-5: #d2deff;--indigo-6: #c1d0ff;--indigo-7: #abbdf9;--indigo-8: #8da4ef;--indigo-9: #3e63dd;--indigo-10: #3358d4;--indigo-11: #3a5bc7;--indigo-12: hsl(226, 50%, 24%);--indigo-a1: #00008002;--indigo-a2: #0040ff08;--indigo-a3: #0047f112;--indigo-a4: #0044ff1e;--indigo-a5: #0044ff2d;--indigo-a6: #003eff3e;--indigo-a7: #0037ed54;--indigo-a8: #0034dc72;--indigo-a9: hsla(226, 100%, 41%, 0.757);--indigo-a10: hsla(226, 100%, 39%, 0.8);--indigo-a11: hsla(226, 100%, 36%, 0.773);--indigo-a12: hsla(226, 100%, 14%, 0.878);--amber-a1: #c0800004;--amber-a2: #f4d10016;--amber-a3: #ffde003d;--amber-a4: #ffd40063;--amber-a5: #f8cf0088;--amber-a6: #eab5008c;--amber-a7: #dc9b009d;--amber-a8: #da8a00c9;--amber-a9: #ffb300c2;--amber-a10: #ffb300e7;--amber-a11: #ab6400;--amber-a12: #341500dd;--green-a1: #00c04004;--green-a2: #00a32f0b;--green-a3: #00a43319;--green-a4: #00a83829;--green-a5: #019c393b;--green-a6: #00963c52;--green-a7: #00914071;--green-a8: #00924ba4;--green-a9: #008f4acf;--green-a10: #008647d4;--green-a11: #00713fde;--green-a12: #002616e6;--red-a1: #ff000003;--red-a2: #ff000008;--red-a3: #f3000d14;--red-a4: #ff000824;--red-a5: #ff000632;--red-a6: #f8000442;--red-a7: #df000356;--red-a8: #d2000571;--red-a9: #db0007b7;--red-a10: #d10005c1;--red-a11: #c40006d3;--red-a12: #55000de8;--color-text-high: var(--indigo-12);--color-text-mid: hsl(226 50% 24% / 85%);--color-contrast: #fff;--ifm-color-primary: var(--violet-11);--ifm-color-primary-dark: var(--violet-10);--ifm-color-primary-darker: var(--violet-11);--ifm-color-primary-darkest: var(--violet-12);--ifm-color-primary-light: var(--violet-7);--ifm-color-primary-lighter: var(--violet-6);--ifm-color-primary-lightest: var(--violet-5);--ifm-navbar-link-color: var(--color-text-mid);--ifm-code-font-size: 95%;--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);--ifm-alert-border-color: #8a26e7;--color-border: var(--slate-a6);--ifm-background-color: #fff;--color-inverse: #000}.dark{--violet-1: #14121f;--violet-2: #1b1525;--violet-3: #291f43;--violet-4: #33255b;--violet-5: #3c2e69;--violet-6: #473876;--violet-7: #56468b;--violet-8: #6958ad;--violet-9: #6e56cf;--violet-10: #7d66d9;--violet-11: #baa7ff;--violet-12: #e2ddfe;--violet-a1: #4422ff0f;--violet-a2: #853ff916;--violet-a3: #8354fe36;--violet-a4: #7d51fd50;--violet-a5: #845ffd5f;--violet-a6: #8f6cfd6d;--violet-a7: #9879ff83;--violet-a8: #977dfea8;--violet-a9: #8668ffcc;--violet-a10: #9176fed7;--violet-a11: #baa7ff;--violet-a12: #e3defffe;--slate-a1: #00000000;--slate-a2: #d8f4f609;--slate-a3: #ddeaf814;--slate-a4: #d3edf81d;--slate-a5: #d9edfe25;--slate-a6: #d6ebfd30;--slate-a7: #d9edff40;--slate-a8: #d9edff5d;--slate-a9: #dfebfd6d;--slate-a10: #e5edfd7b;--slate-a11: #f1f7feb5;--slate-a12: #fcfdffef;--indigo-1: #11131f;--indigo-2: #141726;--indigo-3: #182449;--indigo-4: #1d2e62;--indigo-5: #253974;--indigo-6: #304384;--indigo-7: #3a4f97;--indigo-8: #435db1;--indigo-9: #3e63dd;--indigo-10: #5472e4;--indigo-11: #9eb1ff;--indigo-12: #d6e1ff;--indigo-a1: #1133ff0f;--indigo-a2: #3354fa17;--indigo-a3: #2f62ff3c;--indigo-a4: #3566ff57;--indigo-a5: #4171fd6b;--indigo-a6: #5178fd7c;--indigo-a7: #5a7fff90;--indigo-a8: #5b81feac;--indigo-a9: #4671ffdb;--indigo-a10: #5c7efee3;--indigo-a11: #9eb1ff;--indigo-a12: #d6e1ff;--amber-a1: #e63c0006;--amber-a2: #fd9b000d;--amber-a3: #fa820022;--amber-a4: #fc820032;--amber-a5: #fd8b0041;--amber-a6: #fd9b0051;--amber-a7: #ffab2567;--amber-a8: #ffae3587;--amber-a9: #ffc53d;--amber-a10: #ffd60a;--amber-a11: #ffca16;--amber-a12: #ffe7b3;--green-a1: #00de4505;--green-a2: #29f99d0b;--green-a3: #22ff991e;--green-a4: #11ff992d;--green-a5: #2bffa23c;--green-a6: #44ffaa4b;--green-a7: #50fdac5e;--green-a8: #54ffad73;--green-a9: #44ffa49e;--green-a10: #43fea4ab;--green-a11: #46fea5d4;--green-a12: #bbffd7f0;--red-a1: #f4121209;--red-a2: #f22f3e11;--red-a3: #ff173f2d;--red-a4: #fe0a3b44;--red-a5: #ff204756;--red-a6: #ff3e5668;--red-a7: #ff536184;--red-a8: #ff5d61b0;--red-a9: #fe4e54e4;--red-a10: #ff6465eb;--red-a11: #ff9592;--red-a12: #ffd1d9;--color-text-high: #fff;--color-text-mid: hsl(0 0% 100% / 0.85);--color-contrast: #fff;--color-inverse: #fff}a code,a:hover code{color:inherit!important}pre a,code a{color:inherit!important}#content a{color:rgb(var(--primary));border-bottom:0!important}#content a:hover{text-decoration:underline!important}.dark #content a{color:rgb(var(--primary-light))}.dark #navbar>div.z-0.absolute.inset-0.bg-background-light.dark\\:bg-background-dark{background-color:#242526!important}@media (min-width: 1024px){#navbar .nav-logo{height:2rem!important;max-width:none!important}#navbar div:has(>a>.nav-logo){flex:0 1 auto}}@media (min-width: 1024px){#sidebar-content{width:18rem!important}#body-content{padding-left:18rem!important}}@media (min-width: 1651px){#content-area{margin-left:max(0px, calc(50vw - 348px - 18rem))!important}}#body-content:has(.not-found-container){padding-left:0!important}#content-area:has(.not-found-container){margin-left:0!important}ul.sidebar-group>li[data-title=\"Tutorials\"],ul.sidebar-group>li[data-title=\"Knowledge Base\"],ul.sidebar-group>li[data-title=\"GrowthBook Guide\"]{border-top:1px solid rgb(var(--gray-200));margin-top:0.5rem;padding-top:0.5rem}.dark ul.sidebar-group>li[data-title=\"Tutorials\"],.dark ul.sidebar-group>li[data-title=\"Knowledge Base\"],.dark ul.sidebar-group>li[data-title=\"GrowthBook Guide\"]{border-top-color:rgb(var(--gray-800))}#sidebar-content li[data-title]>button>div:first-child{flex:1 1 auto;min-width:0}#sidebar-content li[data-title]>button>div:first-child>span:first-child{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#sidebar-content li[data-title]>button>div:first-child .nav-tag-pill{flex:0 0 auto;margin-left:auto}#sidebar-content [data-nav-tag=\"BETA\"]{background:#fbbf24!important;color:#78350f!important}#sidebar-content [data-nav-tag=\"NEW\"]{background:var(--green-a9)!important;color:#fff!important}#sidebar-content [data-nav-tag=\"LEGACY\"]{background:#e5e7eb!important;color:#4b5563!important}#sidebar-content [data-nav-tag=\"v2\"]{background:#c2e6ff!important;color:#0d74ce!important}.dark #sidebar-content [data-nav-tag=\"BETA\"]{background:#78350f!important;color:#fde68a!important}.dark #sidebar-content [data-nav-tag=\"NEW\"]{background:#14532d!important;color:#86efac!important}.dark #sidebar-content [data-nav-tag=\"LEGACY\"]{background:#374151!important;color:#d1d5db!important}.dark #sidebar-content [data-nav-tag=\"v2\"]{background:#0c4a6e!important;color:#7dd3fc!important}#sidebar-content li[data-title]>button{display:flex;width:100%;max-width:100%;box-sizing:border-box;justify-content:space-between;align-items:center}#sidebar-content li[data-title]>button>div:last-child{flex:0 0 auto;margin-left:auto}#sidebar-content a:has(.method-nav-pill)>.flex-1{min-width:0}#sidebar-content a:has(.method-nav-pill) .flex-wrap{flex-wrap:nowrap;width:100%}#sidebar-content a:has(.method-nav-pill) .flex-wrap>span.min-w-0{flex:1 1 auto;max-width:100%}#sidebar-content a[href^=\"/api/features/operation/\"],#sidebar-content a[href^=\"/api/feature-revisions/operation/\"],#sidebar-content a[href^=\"/api/metrics/operation/\"]{color:rgb(156 163 175)!important}.dark #sidebar-content a[href^=\"/api/features/operation/\"],.dark #sidebar-content a[href^=\"/api/feature-revisions/operation/\"],.dark #sidebar-content a[href^=\"/api/metrics/operation/\"]{color:rgb(107 114 128)!important}#sidebar-content a[href^=\"/api/features/operation/\"]:hover,#sidebar-content a[href^=\"/api/features/operation/\"]:focus-visible,#sidebar-content a[href^=\"/api/feature-revisions/operation/\"]:hover,#sidebar-content a[href^=\"/api/feature-revisions/operation/\"]:focus-visible,#sidebar-content a[href^=\"/api/metrics/operation/\"]:hover,#sidebar-content a[href^=\"/api/metrics/operation/\"]:focus-visible{color:#111!important}.dark #sidebar-content a[href^=\"/api/features/operation/\"]:hover,.dark #sidebar-content a[href^=\"/api/features/operation/\"]:focus-visible,.dark #sidebar-content a[href^=\"/api/feature-revisions/operation/\"]:hover,.dark #sidebar-content a[href^=\"/api/feature-revisions/operation/\"]:focus-visible,.dark #sidebar-content a[href^=\"/api/metrics/operation/\"]:hover,.dark #sidebar-content a[href^=\"/api/metrics/operation/\"]:focus-visible{color:#fff!important}#sidebar-content a[href^=\"/api/features/operation/\"] .method-nav-pill,#sidebar-content a[href^=\"/api/feature-revisions/operation/\"] .method-nav-pill,#sidebar-content a[href^=\"/api/metrics/operation/\"] .method-nav-pill{filter:grayscale(1);opacity:0.65}#sidebar-content a[href^=\"/api/features/operation/\"]:hover .method-nav-pill,#sidebar-content a[href^=\"/api/features/operation/\"]:focus-visible .method-nav-pill,#sidebar-content a[href^=\"/api/feature-revisions/operation/\"]:hover .method-nav-pill,#sidebar-content a[href^=\"/api/feature-revisions/operation/\"]:focus-visible .method-nav-pill,#sidebar-content a[href^=\"/api/metrics/operation/\"]:hover .method-nav-pill,#sidebar-content a[href^=\"/api/metrics/operation/\"]:focus-visible .method-nav-pill{filter:none;opacity:1}#sidebar-content a[href^=\"/api/features/operation/\"] .flex-wrap>span.min-w-0,#sidebar-content a[href^=\"/api/feature-revisions/operation/\"] .flex-wrap>span.min-w-0,#sidebar-content a[href^=\"/api/metrics/operation/\"] .flex-wrap>span.min-w-0{text-decoration:line-through}.chat-assistant-send-button{display:none!important}table[class*=\"[\u0026_td]:min-w-[150px]\"] td:first-child:has(code){max-width:25%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:break-word}#navbar a[href=\"https://growthbook.io/product-updates\"]:not(#banner a){--pu-accent: var(--primary);--pu-text: 3 120 160;--pu-ring: var(--background-light);--pu-tint: 0.08;position:relative;color:rgb(var(--pu-text))!important;border-color:rgb(var(--pu-accent) / 0.4)!important;background-color:rgb(var(--pu-accent) / var(--pu-tint))!important}.dark #navbar a[href=\"https://growthbook.io/product-updates\"]:not(#banner a){--pu-accent: var(--primary-light);--pu-text: var(--primary-light);--pu-ring: var(--background-dark);--pu-tint: 0.12}#navbar a[href=\"https://growthbook.io/product-updates\"]:not(#banner a) svg{background-color:rgb(var(--pu-text))!important}#navbar a[href=\"https://growthbook.io/product-updates\"]:not(#banner a)::after{content:\"\";position:absolute;top:8px;left:29px;width:7px;height:7px;border-radius:9999px;background:rgb(var(--pu-accent));box-shadow:0 0 0 2px rgb(var(--pu-ring))}"}],"page":{"pagePath":"api/ramp-schedules/operation/postRampSchedule","slug":"/api/ramp-schedules/operation/postRampSchedule","pageMetadata":{"title":"Create a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules","description":"Creates a ramp schedule, optionally attached to a published feature rule by passing `featureId` and `ruleId` together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is `PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule` followed by a publish. Without a target the schedule is a free-standing skeleton in `pending` status. Requires a Pro plan or above.","href":"/api/ramp-schedules/operation/postRampSchedule"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates a ramp schedule, optionally attached to a published feature rule by passing \", _jsx(_components.code, {\n children: \"featureId\"\n }), \" and \", _jsx(_components.code, {\n children: \"ruleId\"\n }), \" together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is \", _jsx(_components.code, {\n children: \"PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule\"\n }), \" followed by a publish. Without a target the schedule is a free-standing skeleton in \", _jsx(_components.code, {\n children: \"pending\"\n }), \" status. Requires a Pro plan or above.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules","description":"Creates a ramp schedule, optionally attached to a published feature rule by passing `featureId` and `ruleId` together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is `PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule` followed by a publish. Without a target the schedule is a free-standing skeleton in `pending` status. Requires a Pro plan or above.","href":"/api/ramp-schedules/operation/postRampSchedule"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/growthbook-ea15456d/1f4d041fccf45c4d/docs-ui.js","/_mintlify/custom/growthbook-ea15456d/2a3423f351be4eea/kapa-widget.js","/_mintlify/custom/growthbook-ea15456d/e900cb7870eac898/snippets/data/SDKInfo.js","/_mintlify/custom/growthbook-ea15456d/5075c54121b00a3d/snippets/data/commercialFeatures.js","/_mintlify/custom/growthbook-ea15456d/55695472085fd488/reo.js"],"openApiReferenceData":{"operation":{"operationId":"postRampSchedule","summary":"Create a ramp schedule","description":"Creates a ramp schedule, optionally attached to a published feature rule by passing `featureId` and `ruleId` together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is `PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule` followed by a publish. Without a target the schedule is a free-standing skeleton in `pending` status. Requires a Pro plan or above.","tags":["ramp-schedules"],"requestBody":"b76c5067-6f59-4b93-9e4a-e20680fdc22f","responses":{"200":"9b9c771b-a9be-452e-b87d-18d3223f716c","202":"973ea588-64fe-46e7-aaf7-20345e8b40af"},"x-codeSamples":[{"lang":"cURL","source":"curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules' \\\n -H 'Authorization: Bearer YOUR_API_KEY'"}],"method":"post","type":"path","servers":["a90fa77a-1e3a-4653-822f-0ec7a0c0e5c9","da4439ad-114f-418d-b8e9-ec5d8270d44a"],"security":["9b0fc9dc-914c-45e6-98a0-ae13016d3aba","9c080b0f-17f7-40e8-9d49-cacc8725e1ed"],"path":"/v1/ramp-schedules","baseUrlOptions":["https://api.growthbook.io/api","https://{domain}/api"],"title":"Create a ramp schedule","codeSamples":[{"lang":"cURL","source":"curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules' \\\n -H 'Authorization: Bearer YOUR_API_KEY'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"name","typeLabel":"string"},"featureId":{"type":"string","uniqueKey":"featureId","typeLabel":"string"},"ruleId":{"type":"string","uniqueKey":"ruleId","typeLabel":"string"},"environment":{"type":"string","uniqueKey":"environment","typeLabel":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"interval":{"oneOf":[{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].interval.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"steps.items.[INDEX].interval.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"steps.items.[INDEX].interval","typeLabel":"number | null"},"actions":{"default":[],"type":"array","items":{"type":"object","properties":{"patch":{"type":"object","properties":{"ruleId":{"type":"string","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.ruleId","typeLabel":"string"},"coverage":{"oneOf":[{"type":"number","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","maximum":1,"minimum":0,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.coverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.coverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.coverage","typeLabel":"number | null"},"condition":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.condition.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.condition.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.condition","typeLabel":"string | null"},"savedGroups":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"match":{"type":"string","enum":["all","none","any"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].match","typeLabel":"enum\u003cstring>"},"ids":{"type":"array","items":{"type":"string","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids","typeLabel":"string[]"}},"required":["match","ids"],"additionalProperties":false,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups","typeLabel":"object[] | null"},"prerequisites":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"string","isRequired":true,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].condition","typeLabel":"string"}},"required":["id","condition"],"additionalProperties":false,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites","typeLabel":"object[] | null"},"allEnvironments":{"oneOf":[{"type":"boolean","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.allEnvironments.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.allEnvironments.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.allEnvironments","typeLabel":"boolean | null"},"environments":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.environments.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.environments.oneOf.0","typeLabel":"string[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.environments.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.environments","typeLabel":"string[] | null"},"force":{"description":"Value to serve, in the string form rule values use (\"false\", \"10\", '{\"limit\": 5}'). A non-string JSON value is accepted and stored as its JSON text. Must be valid for the feature's value type.","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.force","typeLabel":"any"},"enabled":{"oneOf":[{"type":"boolean","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch.enabled","typeLabel":"boolean | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].patch","typeLabel":"object"},"targetType":{"type":"string","const":"feature-rule","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].targetType","typeLabel":"string"},"targetId":{"type":"string","uniqueKey":"steps.items.[INDEX].actions.items.[INDEX].targetId","typeLabel":"string"}},"required":["patch"],"additionalProperties":false,"uniqueKey":"steps.items.[INDEX].actions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].actions","typeLabel":"object[]"},"approvalNotes":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].approvalNotes.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"steps.items.[INDEX].approvalNotes.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].approvalNotes","typeLabel":"string | null"},"monitored":{"default":false,"type":"boolean","uniqueKey":"steps.items.[INDEX].monitored","typeLabel":"boolean"},"holdConditions":{"type":"object","properties":{"minSampleSize":{"type":"integer","exclusiveMinimum":0,"uniqueKey":"steps.items.[INDEX].holdConditions.minSampleSize","typeLabel":"integer"},"requiresApproval":{"type":"boolean","uniqueKey":"steps.items.[INDEX].holdConditions.requiresApproval","typeLabel":"boolean"}},"additionalProperties":false,"uniqueKey":"steps.items.[INDEX].holdConditions","typeLabel":"object"}},"required":["interval"],"additionalProperties":false,"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps","typeLabel":"object[]"},"startActions":{"type":"array","items":{"type":"object","properties":{"patch":{"type":"object","properties":{"ruleId":{"type":"string","uniqueKey":"startActions.items.[INDEX].patch.ruleId","typeLabel":"string"},"coverage":{"oneOf":[{"type":"number","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","maximum":1,"minimum":0,"uniqueKey":"startActions.items.[INDEX].patch.coverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","uniqueKey":"startActions.items.[INDEX].patch.coverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.coverage","typeLabel":"number | null"},"condition":{"oneOf":[{"type":"string","uniqueKey":"startActions.items.[INDEX].patch.condition.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"startActions.items.[INDEX].patch.condition.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.condition","typeLabel":"string | null"},"savedGroups":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"match":{"type":"string","enum":["all","none","any"],"isRequired":true,"uniqueKey":"startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].match","typeLabel":"enum\u003cstring>"},"ids":{"type":"array","items":{"type":"string","uniqueKey":"startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids","typeLabel":"string[]"}},"required":["match","ids"],"additionalProperties":false,"uniqueKey":"startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"startActions.items.[INDEX].patch.savedGroups.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"startActions.items.[INDEX].patch.savedGroups.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.savedGroups","typeLabel":"object[] | null"},"prerequisites":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"startActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"string","isRequired":true,"uniqueKey":"startActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].condition","typeLabel":"string"}},"required":["id","condition"],"additionalProperties":false,"uniqueKey":"startActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"startActions.items.[INDEX].patch.prerequisites.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"startActions.items.[INDEX].patch.prerequisites.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.prerequisites","typeLabel":"object[] | null"},"allEnvironments":{"oneOf":[{"type":"boolean","uniqueKey":"startActions.items.[INDEX].patch.allEnvironments.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"startActions.items.[INDEX].patch.allEnvironments.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.allEnvironments","typeLabel":"boolean | null"},"environments":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"startActions.items.[INDEX].patch.environments.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"startActions.items.[INDEX].patch.environments.oneOf.0","typeLabel":"string[]"},{"type":"null","uniqueKey":"startActions.items.[INDEX].patch.environments.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.environments","typeLabel":"string[] | null"},"force":{"description":"Value to serve, in the string form rule values use (\"false\", \"10\", '{\"limit\": 5}'). A non-string JSON value is accepted and stored as its JSON text. Must be valid for the feature's value type.","uniqueKey":"startActions.items.[INDEX].patch.force","typeLabel":"any"},"enabled":{"oneOf":[{"type":"boolean","uniqueKey":"startActions.items.[INDEX].patch.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"startActions.items.[INDEX].patch.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.enabled","typeLabel":"boolean | null"},"hashAttribute":{"oneOf":[{"type":"string","description":"Attribute the rule buckets on. Required (here or on the rule) when a step sets partial coverage on a force rule, which becomes a rollout.","uniqueKey":"startActions.items.[INDEX].patch.hashAttribute.oneOf.0","typeLabel":"string"},{"type":"null","description":"Attribute the rule buckets on. Required (here or on the rule) when a step sets partial coverage on a force rule, which becomes a rollout.","uniqueKey":"startActions.items.[INDEX].patch.hashAttribute.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.hashAttribute","typeLabel":"string | null"},"seed":{"oneOf":[{"type":"string","description":"Hash seed for a promoted force rule. Defaults to the rule id.","uniqueKey":"startActions.items.[INDEX].patch.seed.oneOf.0","typeLabel":"string"},{"type":"null","description":"Hash seed for a promoted force rule. Defaults to the rule id.","uniqueKey":"startActions.items.[INDEX].patch.seed.oneOf.1","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.seed","typeLabel":"string | null"},"hashVersion":{"oneOf":[{"type":"number","description":"Hash algorithm version for a promoted force rule. Defaults to 2.","const":1,"uniqueKey":"startActions.items.[INDEX].patch.hashVersion.oneOf.0","typeLabel":"number"},{"type":"number","description":"Hash algorithm version for a promoted force rule. Defaults to 2.","const":2,"uniqueKey":"startActions.items.[INDEX].patch.hashVersion.oneOf.1","typeLabel":"number"},{"type":"null","description":"Hash algorithm version for a promoted force rule. Defaults to 2.","uniqueKey":"startActions.items.[INDEX].patch.hashVersion.oneOf.2","typeLabel":"null"}],"uniqueKey":"startActions.items.[INDEX].patch.hashVersion","typeLabel":"number · number · null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"startActions.items.[INDEX].patch","typeLabel":"object"},"targetType":{"type":"string","const":"feature-rule","uniqueKey":"startActions.items.[INDEX].targetType","typeLabel":"string"},"targetId":{"type":"string","uniqueKey":"startActions.items.[INDEX].targetId","typeLabel":"string"}},"required":["patch"],"additionalProperties":false,"uniqueKey":"startActions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"startActions","typeLabel":"object[]"},"endActions":{"type":"array","items":{"type":"object","properties":{"patch":{"type":"object","properties":{"ruleId":{"type":"string","uniqueKey":"endActions.items.[INDEX].patch.ruleId","typeLabel":"string"},"coverage":{"oneOf":[{"type":"number","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","maximum":1,"minimum":0,"uniqueKey":"endActions.items.[INDEX].patch.coverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","uniqueKey":"endActions.items.[INDEX].patch.coverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"endActions.items.[INDEX].patch.coverage","typeLabel":"number | null"},"condition":{"oneOf":[{"type":"string","uniqueKey":"endActions.items.[INDEX].patch.condition.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"endActions.items.[INDEX].patch.condition.oneOf.1","typeLabel":"null"}],"uniqueKey":"endActions.items.[INDEX].patch.condition","typeLabel":"string | null"},"savedGroups":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"match":{"type":"string","enum":["all","none","any"],"isRequired":true,"uniqueKey":"endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].match","typeLabel":"enum\u003cstring>"},"ids":{"type":"array","items":{"type":"string","uniqueKey":"endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids","typeLabel":"string[]"}},"required":["match","ids"],"additionalProperties":false,"uniqueKey":"endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"endActions.items.[INDEX].patch.savedGroups.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"endActions.items.[INDEX].patch.savedGroups.oneOf.1","typeLabel":"null"}],"uniqueKey":"endActions.items.[INDEX].patch.savedGroups","typeLabel":"object[] | null"},"prerequisites":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"endActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"string","isRequired":true,"uniqueKey":"endActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].condition","typeLabel":"string"}},"required":["id","condition"],"additionalProperties":false,"uniqueKey":"endActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"endActions.items.[INDEX].patch.prerequisites.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"endActions.items.[INDEX].patch.prerequisites.oneOf.1","typeLabel":"null"}],"uniqueKey":"endActions.items.[INDEX].patch.prerequisites","typeLabel":"object[] | null"},"allEnvironments":{"oneOf":[{"type":"boolean","uniqueKey":"endActions.items.[INDEX].patch.allEnvironments.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"endActions.items.[INDEX].patch.allEnvironments.oneOf.1","typeLabel":"null"}],"uniqueKey":"endActions.items.[INDEX].patch.allEnvironments","typeLabel":"boolean | null"},"environments":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"endActions.items.[INDEX].patch.environments.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"endActions.items.[INDEX].patch.environments.oneOf.0","typeLabel":"string[]"},{"type":"null","uniqueKey":"endActions.items.[INDEX].patch.environments.oneOf.1","typeLabel":"null"}],"uniqueKey":"endActions.items.[INDEX].patch.environments","typeLabel":"string[] | null"},"force":{"description":"Value to serve, in the string form rule values use (\"false\", \"10\", '{\"limit\": 5}'). A non-string JSON value is accepted and stored as its JSON text. Must be valid for the feature's value type.","uniqueKey":"endActions.items.[INDEX].patch.force","typeLabel":"any"},"enabled":{"oneOf":[{"type":"boolean","uniqueKey":"endActions.items.[INDEX].patch.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"endActions.items.[INDEX].patch.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"endActions.items.[INDEX].patch.enabled","typeLabel":"boolean | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"endActions.items.[INDEX].patch","typeLabel":"object"},"targetType":{"type":"string","const":"feature-rule","uniqueKey":"endActions.items.[INDEX].targetType","typeLabel":"string"},"targetId":{"type":"string","uniqueKey":"endActions.items.[INDEX].targetId","typeLabel":"string"}},"required":["patch"],"additionalProperties":false,"uniqueKey":"endActions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"endActions","typeLabel":"object[]"},"startDate":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"startDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"startDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"startDate","typeLabel":"string\u003cdate-time> | null"},"cutoffDate":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"cutoffDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"cutoffDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"cutoffDate","typeLabel":"string\u003cdate-time> | null"},"requiresStartApproval":{"oneOf":[{"type":"boolean","description":"When true, the ramp holds at step -1 with its rule disabled (zero traffic) until a human approves the start via /actions/approve-step. Composes with startDate.","uniqueKey":"requiresStartApproval.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"When true, the ramp holds at step -1 with its rule disabled (zero traffic) until a human approves the start via /actions/approve-step. Composes with startDate.","uniqueKey":"requiresStartApproval.oneOf.1","typeLabel":"null"}],"uniqueKey":"requiresStartApproval","typeLabel":"boolean | null"},"monitoringConfig":{"oneOf":[{"type":"object","required":["datasourceId","guardrailMetricIds"],"properties":{"datasourceId":{"type":"string","isRequired":true,"uniqueKey":"monitoringConfig.oneOf.0.datasourceId","typeLabel":"string"},"guardrailMetricIds":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"monitoringConfig.oneOf.0.guardrailMetricIds.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"monitoringConfig.oneOf.0.guardrailMetricIds","typeLabel":"string[]"},"exposureQuery":{"description":"The assignment query, grouping its ID with the identifier type analyzed on. Mutually exclusive with the deprecated `exposureQueryId`.","type":"object","properties":{"id":{"description":"The ID of one of the data source's assignment queries.","type":"string","isRequired":true,"uniqueKey":"monitoringConfig.oneOf.0.exposureQuery.id","typeLabel":"string"},"identifierType":{"oneOf":[{"type":"string","description":"The identifier type to analyze on, which the query must declare. Required when selecting a different assignment query that declares several. Otherwise defaults to the current identifier type, or the query's only one. Null is treated as omitted, so a response's value can be sent back.","uniqueKey":"monitoringConfig.oneOf.0.exposureQuery.identifierType.oneOf.0","typeLabel":"string"},{"type":"null","description":"The identifier type to analyze on, which the query must declare. Required when selecting a different assignment query that declares several. Otherwise defaults to the current identifier type, or the query's only one. Null is treated as omitted, so a response's value can be sent back.","uniqueKey":"monitoringConfig.oneOf.0.exposureQuery.identifierType.oneOf.1","typeLabel":"null"}],"uniqueKey":"monitoringConfig.oneOf.0.exposureQuery.identifierType","typeLabel":"string | null"}},"required":["id"],"additionalProperties":false,"uniqueKey":"monitoringConfig.oneOf.0.exposureQuery","typeLabel":"object"},"exposureQueryId":{"deprecated":true,"description":"Deprecated: use `exposureQuery`. Rejected when selecting a different assignment query that declares several identifier types; set `exposureQuery.identifierType` instead.","type":"string","uniqueKey":"monitoringConfig.oneOf.0.exposureQueryId","typeLabel":"string"},"signalMetricIds":{"type":"array","items":{"type":"string","uniqueKey":"monitoringConfig.oneOf.0.signalMetricIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"monitoringConfig.oneOf.0.signalMetricIds","typeLabel":"string[]"},"monitoringMode":{"type":"string","enum":["auto","manual"],"uniqueKey":"monitoringConfig.oneOf.0.monitoringMode","typeLabel":"enum\u003cstring>"},"autoUpdate":{"type":"boolean","uniqueKey":"monitoringConfig.oneOf.0.autoUpdate","typeLabel":"boolean"},"autoRollback":{"type":"boolean","uniqueKey":"monitoringConfig.oneOf.0.autoRollback","typeLabel":"boolean"},"updateScheduleMinutes":{"oneOf":[{"type":"number","minimum":10,"uniqueKey":"monitoringConfig.oneOf.0.updateScheduleMinutes.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"monitoringConfig.oneOf.0.updateScheduleMinutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"monitoringConfig.oneOf.0.updateScheduleMinutes","typeLabel":"number | null"},"srmAction":{"type":"string","enum":["warn","hold","rollback"],"uniqueKey":"monitoringConfig.oneOf.0.srmAction","typeLabel":"enum\u003cstring>"},"noTrafficAction":{"type":"string","enum":["warn","hold","rollback"],"uniqueKey":"monitoringConfig.oneOf.0.noTrafficAction","typeLabel":"enum\u003cstring>"},"multipleExposureAction":{"type":"string","enum":["warn","hold","rollback"],"uniqueKey":"monitoringConfig.oneOf.0.multipleExposureAction","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"monitoringConfig.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"monitoringConfig.oneOf.1","typeLabel":"null"}],"uniqueKey":"monitoringConfig","typeLabel":"object | null"},"lockdownConfig":{"type":"object","properties":{"mode":{"type":"string","enum":["none","locked"],"isRequired":true,"uniqueKey":"lockdownConfig.mode","typeLabel":"enum\u003cstring>"}},"required":["mode"],"additionalProperties":false,"uniqueKey":"lockdownConfig","typeLabel":"object"},"experimentHealthAction":{"type":"string","enum":["rollback","hold","warn"],"uniqueKey":"experimentHealthAction","typeLabel":"enum\u003cstring>"},"templateId":{"type":"string","uniqueKey":"templateId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","featureId":"\u003cstring>","ruleId":"\u003cstring>","environment":"\u003cstring>","steps":[{"interval":1,"actions":[],"approvalNotes":"\u003cstring>","monitored":false,"holdConditions":{"minSampleSize":123,"requiresApproval":true}}],"startActions":[{"patch":{"ruleId":"\u003cstring>","coverage":0.5,"condition":"\u003cstring>","savedGroups":[{"ids":["\u003cstring>"]}],"prerequisites":[{"id":"\u003cstring>","condition":"\u003cstring>"}],"allEnvironments":true,"environments":["\u003cstring>"],"force":"\u003cunknown>","enabled":true,"hashAttribute":"\u003cstring>","seed":"\u003cstring>","hashVersion":1},"targetType":"feature-rule","targetId":"\u003cstring>"}],"endActions":[{"patch":{"ruleId":"\u003cstring>","coverage":0.5,"condition":"\u003cstring>","savedGroups":[{"ids":["\u003cstring>"]}],"prerequisites":[{"id":"\u003cstring>","condition":"\u003cstring>"}],"allEnvironments":true,"environments":["\u003cstring>"],"force":"\u003cunknown>","enabled":true},"targetType":"feature-rule","targetId":"\u003cstring>"}],"startDate":"2023-11-07T05:31:56Z","cutoffDate":"2023-11-07T05:31:56Z","requiresStartApproval":true,"monitoringConfig":{"datasourceId":"\u003cstring>","guardrailMetricIds":["\u003cstring>"],"exposureQueryId":"\u003cstring>","signalMetricIds":["\u003cstring>"],"autoUpdate":true,"autoRollback":true,"updateScheduleMinutes":11},"templateId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"9b9c771b-a9be-452e-b87d-18d3223f716c":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"rampSchedule":{"type":"object","properties":{"id":{"description":"Unique identifier (rs_ prefix)","type":"string","isRequired":true,"uniqueKey":"rampSchedule.id","typeLabel":"string"},"dateCreated":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"rampSchedule.dateCreated","typeLabel":"string\u003cdate-time>"},"dateUpdated":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"rampSchedule.dateUpdated","typeLabel":"string\u003cdate-time>"},"name":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.name","typeLabel":"string"},"entityType":{"type":"string","enum":["feature"],"isRequired":true,"uniqueKey":"rampSchedule.entityType","typeLabel":"enum\u003cstring>"},"entityId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.entityId","typeLabel":"string"},"targets":{"description":"Controlled entity references","type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.targets.items.[INDEX].id","typeLabel":"string"},"entityType":{"type":"string","enum":["feature"],"isRequired":true,"uniqueKey":"rampSchedule.targets.items.[INDEX].entityType","typeLabel":"enum\u003cstring>"},"entityId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.targets.items.[INDEX].entityId","typeLabel":"string"},"status":{"type":"string","enum":["pending-join","active"],"isRequired":true,"uniqueKey":"rampSchedule.targets.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"ruleId":{"oneOf":[{"type":"string","uniqueKey":"rampSchedule.targets.items.[INDEX].ruleId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"rampSchedule.targets.items.[INDEX].ruleId.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.targets.items.[INDEX].ruleId","typeLabel":"string | null"},"environment":{"oneOf":[{"type":"string","description":"Legacy disambiguator used alongside `ruleId` for pre-v2 ramps. May be null on newer targets.","deprecated":true,"uniqueKey":"rampSchedule.targets.items.[INDEX].environment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Legacy disambiguator used alongside `ruleId` for pre-v2 ramps. May be null on newer targets.","deprecated":true,"uniqueKey":"rampSchedule.targets.items.[INDEX].environment.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.targets.items.[INDEX].environment","typeLabel":"string | null"},"activatingRevisionVersion":{"oneOf":[{"type":"integer","description":"Feature revision version that activates this ramp; cleared once published","uniqueKey":"rampSchedule.targets.items.[INDEX].activatingRevisionVersion.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Feature revision version that activates this ramp; cleared once published","uniqueKey":"rampSchedule.targets.items.[INDEX].activatingRevisionVersion.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.targets.items.[INDEX].activatingRevisionVersion","typeLabel":"integer | null"}},"required":["id","entityType","entityId","status"],"additionalProperties":false,"uniqueKey":"rampSchedule.targets.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"rampSchedule.targets","typeLabel":"object[]"},"steps":{"description":"Ordered ramp steps","type":"array","items":{"type":"object","properties":{"interval":{"oneOf":[{"type":"number","description":"Hold duration in seconds before this step's gates are evaluated. null = no time gate (advance as soon as holdConditions clear).","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].interval.oneOf.0","typeLabel":"number"},{"type":"null","description":"Hold duration in seconds before this step's gates are evaluated. null = no time gate (advance as soon as holdConditions clear).","isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].interval.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].interval","typeLabel":"number | null"},"actions":{"type":"array","items":{"type":"object","properties":{"targetType":{"type":"string","const":"feature-rule","isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].targetType","typeLabel":"string"},"targetId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].targetId","typeLabel":"string"},"patch":{"type":"object","properties":{"ruleId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.ruleId","typeLabel":"string"},"coverage":{"oneOf":[{"type":"number","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","maximum":1,"minimum":0,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.coverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.coverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.coverage","typeLabel":"number | null"},"condition":{"oneOf":[{"type":"string","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.condition.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.condition.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.condition","typeLabel":"string | null"},"savedGroups":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"match":{"type":"string","enum":["all","none","any"],"isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].match","typeLabel":"enum\u003cstring>"},"ids":{"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids","typeLabel":"string[]"}},"required":["match","ids"],"additionalProperties":false,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.savedGroups","typeLabel":"object[] | null"},"prerequisites":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].condition","typeLabel":"string"}},"required":["id","condition"],"additionalProperties":false,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.prerequisites","typeLabel":"object[] | null"},"allEnvironments":{"oneOf":[{"type":"boolean","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.allEnvironments.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.allEnvironments.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.allEnvironments","typeLabel":"boolean | null"},"environments":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.environments.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.environments.oneOf.0","typeLabel":"string[]"},{"type":"null","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.environments.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.environments","typeLabel":"string[] | null"},"force":{"description":"Value to serve, in the string form rule values use (\"false\", \"10\", '{\"limit\": 5}'). A non-string JSON value is accepted and stored as its JSON text. Must be valid for the feature's value type.","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.force","typeLabel":"any"},"enabled":{"oneOf":[{"type":"boolean","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch.enabled","typeLabel":"boolean | null"}},"required":["ruleId"],"additionalProperties":false,"isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX].patch","typeLabel":"object"}},"required":["targetType","targetId","patch"],"additionalProperties":false,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"rampSchedule.steps.items.[INDEX].actions","typeLabel":"object[]"},"approvalNotes":{"oneOf":[{"type":"string","uniqueKey":"rampSchedule.steps.items.[INDEX].approvalNotes.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"rampSchedule.steps.items.[INDEX].approvalNotes.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.steps.items.[INDEX].approvalNotes","typeLabel":"string | null"},"monitored":{"description":"When true, this step runs A/B traffic analysis while active. Treatment = [0, coverage), control = [0.5, 0.5+coverage). Arms are equal-sized and non-adjacent: step-ups only add users, never reassign existing ones. The UI caps monitored-step coverage at 0.5 so control end never exceeds 1.0. The SDK uses explicit hash ranges on the experiment rule to prevent bucketing shifts across monitored/unmonitored transitions.","type":"boolean","uniqueKey":"rampSchedule.steps.items.[INDEX].monitored","typeLabel":"boolean"},"holdConditions":{"type":"object","properties":{"minSampleSize":{"type":"integer","exclusiveMinimum":0,"uniqueKey":"rampSchedule.steps.items.[INDEX].holdConditions.minSampleSize","typeLabel":"integer"},"requiresApproval":{"type":"boolean","uniqueKey":"rampSchedule.steps.items.[INDEX].holdConditions.requiresApproval","typeLabel":"boolean"}},"additionalProperties":false,"uniqueKey":"rampSchedule.steps.items.[INDEX].holdConditions","typeLabel":"object"}},"required":["interval","actions"],"additionalProperties":false,"uniqueKey":"rampSchedule.steps.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"rampSchedule.steps","typeLabel":"object[]"},"status":{"type":"string","enum":["pending","ready","running","paused","completed","rolled-back"],"isRequired":true,"uniqueKey":"rampSchedule.status","typeLabel":"enum\u003cstring>"},"currentStepIndex":{"description":"Index of current step; -1 = not yet started","type":"integer","minimum":-1,"isRequired":true,"uniqueKey":"rampSchedule.currentStepIndex","typeLabel":"integer"},"nextStepAt":{"oneOf":[{"type":"string","description":"When the current step's time gate elapses; null for steps with no interval (pure approval gates) and terminal states","format":"date-time","isRequired":true,"uniqueKey":"rampSchedule.nextStepAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the current step's time gate elapses; null for steps with no interval (pure approval gates) and terminal states","isRequired":true,"uniqueKey":"rampSchedule.nextStepAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"rampSchedule.nextStepAt","typeLabel":"string\u003cdate-time> | null"},"awaitingApproval":{"description":"Computed at read time: whether a human approval is the gate blocking the schedule right now — either the start-approval gate (`requiresStartApproval` before step 0) or the current step's `holdConditions.requiresApproval` once its time hold (if any) has elapsed. Paused schedules report `false` (the pause is the blocking gate). For monitored steps the approve-step endpoint may still reject an approval until analysis-based gates clear.","type":"boolean","isRequired":true,"uniqueKey":"rampSchedule.awaitingApproval","typeLabel":"boolean"},"startActions":{"description":"Actions that restore controlled rules to their pre-ramp state. Applied when rolling back or jumping to start, and the base every step accumulates on; the only place a plan can set hashAttribute, seed or hashVersion.","type":"array","items":{"type":"object","properties":{"targetType":{"type":"string","const":"feature-rule","isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].targetType","typeLabel":"string"},"targetId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].targetId","typeLabel":"string"},"patch":{"type":"object","properties":{"ruleId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.ruleId","typeLabel":"string"},"coverage":{"oneOf":[{"type":"number","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","maximum":1,"minimum":0,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.coverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.coverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.coverage","typeLabel":"number | null"},"condition":{"oneOf":[{"type":"string","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.condition.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.condition.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.condition","typeLabel":"string | null"},"savedGroups":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"match":{"type":"string","enum":["all","none","any"],"isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].match","typeLabel":"enum\u003cstring>"},"ids":{"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids","typeLabel":"string[]"}},"required":["match","ids"],"additionalProperties":false,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.savedGroups.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.savedGroups.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.savedGroups","typeLabel":"object[] | null"},"prerequisites":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].condition","typeLabel":"string"}},"required":["id","condition"],"additionalProperties":false,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.prerequisites.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.prerequisites.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.prerequisites","typeLabel":"object[] | null"},"allEnvironments":{"oneOf":[{"type":"boolean","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.allEnvironments.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.allEnvironments.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.allEnvironments","typeLabel":"boolean | null"},"environments":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.environments.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.environments.oneOf.0","typeLabel":"string[]"},{"type":"null","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.environments.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.environments","typeLabel":"string[] | null"},"force":{"description":"Value to serve, in the string form rule values use (\"false\", \"10\", '{\"limit\": 5}'). A non-string JSON value is accepted and stored as its JSON text. Must be valid for the feature's value type.","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.force","typeLabel":"any"},"enabled":{"oneOf":[{"type":"boolean","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.enabled","typeLabel":"boolean | null"},"hashAttribute":{"oneOf":[{"type":"string","description":"Attribute the rule buckets on. Required (here or on the rule) when a step sets partial coverage on a force rule, which becomes a rollout.","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.hashAttribute.oneOf.0","typeLabel":"string"},{"type":"null","description":"Attribute the rule buckets on. Required (here or on the rule) when a step sets partial coverage on a force rule, which becomes a rollout.","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.hashAttribute.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.hashAttribute","typeLabel":"string | null"},"seed":{"oneOf":[{"type":"string","description":"Hash seed for a promoted force rule. Defaults to the rule id.","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.seed.oneOf.0","typeLabel":"string"},{"type":"null","description":"Hash seed for a promoted force rule. Defaults to the rule id.","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.seed.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.seed","typeLabel":"string | null"},"hashVersion":{"oneOf":[{"type":"number","description":"Hash algorithm version for a promoted force rule. Defaults to 2.","const":1,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.hashVersion.oneOf.0","typeLabel":"number"},{"type":"number","description":"Hash algorithm version for a promoted force rule. Defaults to 2.","const":2,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.hashVersion.oneOf.1","typeLabel":"number"},{"type":"null","description":"Hash algorithm version for a promoted force rule. Defaults to 2.","uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.hashVersion.oneOf.2","typeLabel":"null"}],"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch.hashVersion","typeLabel":"number · number · null"}},"required":["ruleId"],"additionalProperties":false,"isRequired":true,"uniqueKey":"rampSchedule.startActions.items.[INDEX].patch","typeLabel":"object"}},"required":["targetType","targetId","patch"],"additionalProperties":false,"uniqueKey":"rampSchedule.startActions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.startActions","typeLabel":"object[]"},"endActions":{"description":"Actions applied on top of all step patches when the ramp completes. Represents the final desired rule state.","type":"array","items":{"type":"object","properties":{"targetType":{"type":"string","const":"feature-rule","isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].targetType","typeLabel":"string"},"targetId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].targetId","typeLabel":"string"},"patch":{"type":"object","properties":{"ruleId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.ruleId","typeLabel":"string"},"coverage":{"oneOf":[{"type":"number","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","maximum":1,"minimum":0,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.coverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Traffic fraction (0–1). For monitored steps the rollout rule is promoted to an experiment: treatment = [0, coverage), control = [0.5, 0.5+coverage). Both arms are equal-sized and non-adjacent, so a step-up only adds new users to each arm — no existing user changes group. The REST API enforces coverage ≤ 0.5 on monitored steps so control end never exceeds 1.0. The SDK uses explicit hash ranges on bucketingV2 clients to keep bucketing stable across monitored/unmonitored transitions.","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.coverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.coverage","typeLabel":"number | null"},"condition":{"oneOf":[{"type":"string","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.condition.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.condition.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.condition","typeLabel":"string | null"},"savedGroups":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"match":{"type":"string","enum":["all","none","any"],"isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].match","typeLabel":"enum\u003cstring>"},"ids":{"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX].ids","typeLabel":"string[]"}},"required":["match","ids"],"additionalProperties":false,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.savedGroups.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.savedGroups.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.savedGroups.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.savedGroups","typeLabel":"object[] | null"},"prerequisites":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX].condition","typeLabel":"string"}},"required":["id","condition"],"additionalProperties":false,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.prerequisites.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.prerequisites.oneOf.0","typeLabel":"object[]"},{"type":"null","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.prerequisites.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.prerequisites","typeLabel":"object[] | null"},"allEnvironments":{"oneOf":[{"type":"boolean","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.allEnvironments.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.allEnvironments.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.allEnvironments","typeLabel":"boolean | null"},"environments":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.environments.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.environments.oneOf.0","typeLabel":"string[]"},{"type":"null","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.environments.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.environments","typeLabel":"string[] | null"},"force":{"description":"Value to serve, in the string form rule values use (\"false\", \"10\", '{\"limit\": 5}'). A non-string JSON value is accepted and stored as its JSON text. Must be valid for the feature's value type.","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.force","typeLabel":"any"},"enabled":{"oneOf":[{"type":"boolean","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch.enabled","typeLabel":"boolean | null"}},"required":["ruleId"],"additionalProperties":false,"isRequired":true,"uniqueKey":"rampSchedule.endActions.items.[INDEX].patch","typeLabel":"object"}},"required":["targetType","targetId","patch"],"additionalProperties":false,"uniqueKey":"rampSchedule.endActions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"rampSchedule.endActions","typeLabel":"object[]"},"startDate":{"oneOf":[{"type":"string","description":"When the ramp fires. Absent/null means immediately on publish; set to a future datetime to delay start and keep the rule disabled until that time.","format":"date-time","uniqueKey":"rampSchedule.startDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the ramp fires. Absent/null means immediately on publish; set to a future datetime to delay start and keep the rule disabled until that time.","uniqueKey":"rampSchedule.startDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startDate","typeLabel":"string\u003cdate-time> | null"},"cutoffDate":{"oneOf":[{"type":"string","description":"Rule-level kill date. When reached, the ramp is completed and the rule is disabled (enabled=false). Use for time-boxed rules that must stop serving on a fixed date regardless of ramp progress. Set to null to clear.","format":"date-time","uniqueKey":"rampSchedule.cutoffDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Rule-level kill date. When reached, the ramp is completed and the rule is disabled (enabled=false). Use for time-boxed rules that must stop serving on a fixed date regardless of ramp progress. Set to null to clear.","uniqueKey":"rampSchedule.cutoffDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.cutoffDate","typeLabel":"string\u003cdate-time> | null"},"requiresStartApproval":{"description":"When true, the ramp holds at step -1 with its rule disabled (zero traffic) until a human approves the start via /actions/approve-step. Composes with startDate ('hold until approved, then arm for that date').","type":"boolean","uniqueKey":"rampSchedule.requiresStartApproval","typeLabel":"boolean"},"startApprovedAt":{"oneOf":[{"type":"string","description":"When the current launch's start was approved. Cleared on every return to step -1 (publish, rollback), re-arming the approval gate.","format":"date-time","uniqueKey":"rampSchedule.startApprovedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the current launch's start was approved. Cleared on every return to step -1 (publish, rollback), re-arming the approval gate.","uniqueKey":"rampSchedule.startApprovedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startApprovedAt","typeLabel":"string\u003cdate-time> | null"},"startedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"rampSchedule.startedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"rampSchedule.startedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.startedAt","typeLabel":"string\u003cdate-time> | null"},"phaseStartedAt":{"oneOf":[{"type":"string","description":"Anchor for cumulative interval timing; resets after each approval gate is satisfied","format":"date-time","uniqueKey":"rampSchedule.phaseStartedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Anchor for cumulative interval timing; resets after each approval gate is satisfied","uniqueKey":"rampSchedule.phaseStartedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.phaseStartedAt","typeLabel":"string\u003cdate-time> | null"},"pausedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"rampSchedule.pausedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"rampSchedule.pausedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.pausedAt","typeLabel":"string\u003cdate-time> | null"},"nextProcessAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"rampSchedule.nextProcessAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"rampSchedule.nextProcessAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.nextProcessAt","typeLabel":"string\u003cdate-time> | null"},"elapsedMs":{"oneOf":[{"type":"integer","description":"Milliseconds since startedAt (computed at response time, not stored)","uniqueKey":"rampSchedule.elapsedMs.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Milliseconds since startedAt (computed at response time, not stored)","uniqueKey":"rampSchedule.elapsedMs.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.elapsedMs","typeLabel":"integer | null"},"lockdownConfig":{"type":"object","properties":{"mode":{"type":"string","enum":["none","locked"],"isRequired":true,"uniqueKey":"rampSchedule.lockdownConfig.mode","typeLabel":"enum\u003cstring>"}},"required":["mode"],"additionalProperties":false,"uniqueKey":"rampSchedule.lockdownConfig","typeLabel":"object"},"monitoringConfig":{"oneOf":[{"type":"object","required":["datasourceId","guardrailMetricIds","exposureQuery","exposureQueryId"],"properties":{"datasourceId":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.datasourceId","typeLabel":"string"},"guardrailMetricIds":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.guardrailMetricIds.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.guardrailMetricIds","typeLabel":"string[]"},"exposureQuery":{"description":"The assignment query, grouping its ID with the identifier type analyzed on.","type":"object","properties":{"id":{"description":"The ID of one of the data source's assignment queries.","type":"string","isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.exposureQuery.id","typeLabel":"string"},"identifierType":{"oneOf":[{"type":"string","description":"The identifier type analyzed on. Null when none can be resolved: no assignment query is selected, or a record saved before identifier types were stored points at a query that no longer exists.","isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.exposureQuery.identifierType.oneOf.0","typeLabel":"string"},{"type":"null","description":"The identifier type analyzed on. Null when none can be resolved: no assignment query is selected, or a record saved before identifier types were stored points at a query that no longer exists.","isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.exposureQuery.identifierType.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.exposureQuery.identifierType","typeLabel":"string | null"}},"required":["id","identifierType"],"additionalProperties":false,"isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.exposureQuery","typeLabel":"object"},"exposureQueryId":{"description":"Deprecated: use `exposureQuery`.","deprecated":true,"type":"string","isRequired":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.exposureQueryId","typeLabel":"string"},"signalMetricIds":{"type":"array","items":{"type":"string","uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.signalMetricIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.signalMetricIds","typeLabel":"string[]"},"updateScheduleMinutes":{"oneOf":[{"type":"number","minimum":10,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.updateScheduleMinutes.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.updateScheduleMinutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.updateScheduleMinutes","typeLabel":"number | null"},"monitoringMode":{"type":"string","enum":["auto","manual"],"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.monitoringMode","typeLabel":"enum\u003cstring>"},"autoUpdate":{"type":"boolean","uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.autoUpdate","typeLabel":"boolean"},"srmAction":{"type":"string","enum":["rollback","hold","warn"],"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.srmAction","typeLabel":"enum\u003cstring>"},"noTrafficAction":{"type":"string","enum":["rollback","hold","warn"],"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.noTrafficAction","typeLabel":"enum\u003cstring>"},"noTrafficGracePeriodHours":{"oneOf":[{"type":"number","description":"How long to wait for traffic before applying `noTrafficAction`. Defaults to 24 hours when null or not set.","minimum":0,"exclusiveMinimum":true,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.noTrafficGracePeriodHours.oneOf.0","typeLabel":"number"},{"type":"null","description":"How long to wait for traffic before applying `noTrafficAction`. Defaults to 24 hours when null or not set.","uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.noTrafficGracePeriodHours.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.noTrafficGracePeriodHours","typeLabel":"number | null"},"multipleExposureAction":{"type":"string","enum":["rollback","hold","warn"],"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0.multipleExposureAction","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"rampSchedule.monitoringConfig.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"rampSchedule.monitoringConfig.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringConfig","typeLabel":"object | null"},"experimentHealthAction":{"type":"string","enum":["rollback","hold","warn"],"uniqueKey":"rampSchedule.experimentHealthAction","typeLabel":"enum\u003cstring>"},"currentStepEnteredAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"rampSchedule.currentStepEnteredAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"rampSchedule.currentStepEnteredAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.currentStepEnteredAt","typeLabel":"string\u003cdate-time> | null"},"stepApproval":{"oneOf":[{"type":"object","description":"Approval record for the current step. Valid only while `stepApproval.stepIndex === currentStepIndex`.","required":["stepIndex","approvedAt","approvedBy","context"],"properties":{"stepIndex":{"description":"Index of the step that was approved.","type":"integer","isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.stepIndex","typeLabel":"integer"},"approvedAt":{"description":"When the approval was granted.","type":"string","format":"date-time","isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedAt","typeLabel":"string\u003cdate-time>"},"approvedBy":{"description":"Who approved: the approver's user ID, or the API key's ID when a key approved as itself.","type":"string","isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedBy","typeLabel":"string"},"context":{"description":"Surface through which the approval was granted.","type":"string","enum":["ui","api"],"isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.context","typeLabel":"enum\u003cstring>"},"approvedByUser":{"description":"The approver, with an API key's name.","type":"object","properties":{"type":{"description":"`dashboard` (signed-in member), `api_key` (API key or personal access token) or `system`","type":"string","enum":["dashboard","api_key","system"],"isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.type","typeLabel":"enum\u003cstring>"},"id":{"description":"The member's user ID. Absent for an organization API key","type":"string","uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.id","typeLabel":"string"},"apiKey":{"description":"The API key's ID, when the action came through one","type":"string","uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.apiKey","typeLabel":"string"},"name":{"description":"The member's name, or the organization API key's name","type":"string","uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.name","typeLabel":"string"},"email":{"description":"The member's email. Absent for an organization API key","type":"string","uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.email","typeLabel":"string"},"requestedBy":{"description":"The member named with `X-GrowthBook-Requested-By`","type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.requestedBy.id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.requestedBy.name","typeLabel":"string"},"email":{"type":"string","isRequired":true,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.requestedBy.email","typeLabel":"string"}},"required":["id","name","email"],"additionalProperties":false,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.requestedBy","typeLabel":"object"},"assumedRole":{"description":"Whether the key assumed the named member's role","type":"boolean","uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser.assumedRole","typeLabel":"boolean"}},"required":["type"],"additionalProperties":false,"uniqueKey":"rampSchedule.stepApproval.oneOf.0.approvedByUser","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"rampSchedule.stepApproval.oneOf.0","typeLabel":"object"},{"type":"null","description":"Approval record for the current step. Valid only while `stepApproval.stepIndex === currentStepIndex`.","uniqueKey":"rampSchedule.stepApproval.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.stepApproval","typeLabel":"object | null"},"monitoringStartDate":{"oneOf":[{"type":"string","description":"When the monitored section most recently started (first monitored step entered). Used for no-traffic grace period gating.","format":"date-time","uniqueKey":"rampSchedule.monitoringStartDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the monitored section most recently started (first monitored step entered). Used for no-traffic grace period gating.","uniqueKey":"rampSchedule.monitoringStartDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringStartDate","typeLabel":"string\u003cdate-time> | null"},"lastRollbackAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"rampSchedule.lastRollbackAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"rampSchedule.lastRollbackAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.lastRollbackAt","typeLabel":"string\u003cdate-time> | null"},"lastRollbackReason":{"oneOf":[{"type":"string","uniqueKey":"rampSchedule.lastRollbackReason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"rampSchedule.lastRollbackReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.lastRollbackReason","typeLabel":"string | null"},"monitoringStatus":{"oneOf":[{"type":"object","description":"Read-only monitoring status. Present when monitoringConfig is set.","required":["monitoringMode","autoUpdate","effectiveAutoUpdate","currentStepMonitored"],"properties":{"monitoringMode":{"description":"User-selected monitoring mode. `auto` schedules snapshots automatically; `manual` requires clicking Update.","type":"string","enum":["auto","manual"],"isRequired":true,"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.monitoringMode","typeLabel":"enum\u003cstring>"},"autoUpdate":{"description":"Legacy alias for auto-update behavior. Prefer `monitoringMode` (`auto` means true, `manual` means false).","type":"boolean","isRequired":true,"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.autoUpdate","typeLabel":"boolean"},"effectiveAutoUpdate":{"description":"Computed runtime flag. True only when monitoring mode is auto and schedule state allows automatic snapshot scheduling.","type":"boolean","isRequired":true,"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.effectiveAutoUpdate","typeLabel":"boolean"},"currentStepMonitored":{"description":"Whether the step at currentStepIndex has monitoring enabled","type":"boolean","isRequired":true,"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.currentStepMonitored","typeLabel":"boolean"},"safeRolloutId":{"oneOf":[{"type":"string","uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.safeRolloutId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.safeRolloutId.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.safeRolloutId","typeLabel":"string | null"},"blockedReason":{"oneOf":[{"type":"string","description":"When `effectiveAutoUpdate` is false, this describes the computed reason auto-updates are currently blocked.","uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.blockedReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"When `effectiveAutoUpdate` is false, this describes the computed reason auto-updates are currently blocked.","uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.blockedReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.blockedReason","typeLabel":"string | null"},"nextSnapshotAt":{"oneOf":[{"type":"string","description":"When the next automatic snapshot query will run","format":"date-time","uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.nextSnapshotAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the next automatic snapshot query will run","uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.nextSnapshotAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0.nextSnapshotAt","typeLabel":"string\u003cdate-time> | null"}},"additionalProperties":false,"uniqueKey":"rampSchedule.monitoringStatus.oneOf.0","typeLabel":"object"},{"type":"null","description":"Read-only monitoring status. Present when monitoringConfig is set.","uniqueKey":"rampSchedule.monitoringStatus.oneOf.1","typeLabel":"null"}],"uniqueKey":"rampSchedule.monitoringStatus","typeLabel":"object | null"}},"required":["id","dateCreated","dateUpdated","name","entityType","entityId","targets","steps","status","currentStepIndex","nextStepAt","awaitingApproval"],"additionalProperties":false,"isRequired":true,"uniqueKey":"rampSchedule","typeLabel":"object"}},"required":["rampSchedule"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"rampSchedule":{"id":"\u003cstring>","dateCreated":"2023-11-07T05:31:56Z","dateUpdated":"2023-11-07T05:31:56Z","name":"\u003cstring>","entityType":"feature","entityId":"\u003cstring>","targets":[{"id":"\u003cstring>","entityType":"feature","entityId":"\u003cstring>","status":"pending-join","ruleId":"\u003cstring>","environment":"\u003cstring>","activatingRevisionVersion":123}],"steps":[{"interval":1,"actions":[{"targetType":"feature-rule","targetId":"\u003cstring>","patch":{"ruleId":"\u003cstring>","coverage":0.5,"condition":"\u003cstring>","savedGroups":[{"match":"all","ids":["\u003cstring>"]}],"prerequisites":[{"id":"\u003cstring>","condition":"\u003cstring>"}],"allEnvironments":true,"environments":["\u003cstring>"],"force":"\u003cunknown>","enabled":true}}],"approvalNotes":"\u003cstring>","monitored":true,"holdConditions":{"minSampleSize":123,"requiresApproval":true}}],"status":"pending","currentStepIndex":0,"nextStepAt":"2023-11-07T05:31:56Z","awaitingApproval":true,"startActions":[{"targetType":"feature-rule","targetId":"\u003cstring>","patch":{"ruleId":"\u003cstring>","coverage":0.5,"condition":"\u003cstring>","savedGroups":[{"match":"all","ids":["\u003cstring>"]}],"prerequisites":[{"id":"\u003cstring>","condition":"\u003cstring>"}],"allEnvironments":true,"environments":["\u003cstring>"],"force":"\u003cunknown>","enabled":true,"hashAttribute":"\u003cstring>","seed":"\u003cstring>","hashVersion":1}}],"endActions":[{"targetType":"feature-rule","targetId":"\u003cstring>","patch":{"ruleId":"\u003cstring>","coverage":0.5,"condition":"\u003cstring>","savedGroups":[{"match":"all","ids":["\u003cstring>"]}],"prerequisites":[{"id":"\u003cstring>","condition":"\u003cstring>"}],"allEnvironments":true,"environments":["\u003cstring>"],"force":"\u003cunknown>","enabled":true}}],"startDate":"2023-11-07T05:31:56Z","cutoffDate":"2023-11-07T05:31:56Z","requiresStartApproval":true,"startApprovedAt":"2023-11-07T05:31:56Z","startedAt":"2023-11-07T05:31:56Z","phaseStartedAt":"2023-11-07T05:31:56Z","pausedAt":"2023-11-07T05:31:56Z","nextProcessAt":"2023-11-07T05:31:56Z","elapsedMs":123,"lockdownConfig":{"mode":"none"},"monitoringConfig":{"datasourceId":"\u003cstring>","guardrailMetricIds":["\u003cstring>"],"exposureQuery":{"id":"\u003cstring>","identifierType":"\u003cstring>"},"exposureQueryId":"\u003cstring>","signalMetricIds":["\u003cstring>"],"updateScheduleMinutes":11,"monitoringMode":"auto","autoUpdate":true,"srmAction":"rollback","noTrafficAction":"rollback","noTrafficGracePeriodHours":1,"multipleExposureAction":"rollback"},"experimentHealthAction":"rollback","currentStepEnteredAt":"2023-11-07T05:31:56Z","stepApproval":{"stepIndex":123,"approvedAt":"2023-11-07T05:31:56Z","approvedBy":"\u003cstring>","context":"ui","approvedByUser":{"type":"dashboard","id":"\u003cstring>","apiKey":"\u003cstring>","name":"\u003cstring>","email":"\u003cstring>","requestedBy":{"id":"\u003cstring>","name":"\u003cstring>","email":"\u003cstring>"},"assumedRole":true}},"monitoringStartDate":"2023-11-07T05:31:56Z","lastRollbackAt":"2023-11-07T05:31:56Z","lastRollbackReason":"\u003cstring>","monitoringStatus":{"monitoringMode":"auto","autoUpdate":true,"effectiveAutoUpdate":true,"currentStepMonitored":true,"safeRolloutId":"\u003cstring>","blockedReason":"\u003cstring>","nextSnapshotAt":"2023-11-07T05:31:56Z"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"973ea588-64fe-46e7-aaf7-20345e8b40af":{"description":"Held until a person confirms it in GrowthBook. Poll the Location until the confirmation completes.","headers":{"Location":{"description":"The confirmation to poll","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before polling","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"confirmation":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"confirmation.id","typeLabel":"string"},"status":{"type":"string","enum":["pending","running","completed","rejected","expired"],"isRequired":true,"uniqueKey":"confirmation.status","typeLabel":"enum\u003cstring>"},"actions":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["feature.create","feature.draft","feature.review","feature.publish","feature.archive","feature.delete","feature.other","experiment.create","experiment.draft","experiment.start","experiment.stop","experiment.targeting","experiment.traffic","experiment.phases","experiment.visualEditor","experiment.checklist","experiment.other","savedGroup.create","savedGroup.draft","savedGroup.review","savedGroup.publish","savedGroup.archive","savedGroup.delete","savedGroup.other","constant.create","constant.draft","constant.review","constant.publish","constant.archive","constant.delete","constant.other","config.create","config.draft","config.review","config.publish","config.archive","config.delete","config.other","rampSchedule.create","rampSchedule.start","rampSchedule.pause","rampSchedule.progression","rampSchedule.approve","rampSchedule.edit","rampSchedule.delete","rampSchedule.other","settings.approvals","settings.other","access.members","access.teams","customHook.create","customHook.edit","customHook.delete","environment.create","environment.edit","environment.delete","project.create","project.edit","project.delete","attribute.create","attribute.edit","attribute.delete","customField.create","customField.edit","customField.delete","sdkConnection.create","sdkConnection.edit","sdkConnection.delete","metric.create","metric.edit","metric.delete","factTable.create","factTable.edit","factTable.delete","segment.create","segment.edit","segment.delete","dimension.create","dimension.edit","dimension.delete","override.ignoreWarnings","override.skipSchemaValidation","override.skipHooks","override.bypassApproval","override.restBypassesReviews","override.draftLimit","override.skipChecklist","override.bypassDuplicateKeyCheck","override.unscopedRules","other.write"],"isRequired":true,"uniqueKey":"confirmation.actions.items.[INDEX].action","typeLabel":"enum\u003cstring>"},"environments":{"type":"array","items":{"type":"string","uniqueKey":"confirmation.actions.items.[INDEX].environments.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"confirmation.actions.items.[INDEX].environments","typeLabel":"string[]"}},"required":["action","environments"],"additionalProperties":false,"uniqueKey":"confirmation.actions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"confirmation.actions","typeLabel":"object[]"},"summary":{"type":"string","isRequired":true,"uniqueKey":"confirmation.summary","typeLabel":"string"},"url":{"type":"string","isRequired":true,"uniqueKey":"confirmation.url","typeLabel":"string"},"expiresAt":{"type":"string","isRequired":true,"uniqueKey":"confirmation.expiresAt","typeLabel":"string"},"response":{"oneOf":[{"type":"object","required":["status","body"],"properties":{"status":{"type":"number","isRequired":true,"uniqueKey":"confirmation.response.oneOf.0.status","typeLabel":"number"},"body":{"oneOf":[{"isRequired":true}],"isRequired":true,"uniqueKey":"confirmation.response.oneOf.0.body","typeLabel":"any"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"confirmation.response.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"confirmation.response.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"confirmation.response","typeLabel":"object | null"},"note":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"confirmation.note.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"confirmation.note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"confirmation.note","typeLabel":"string | null"}},"required":["id","status","actions","summary","url","expiresAt","response","note"],"additionalProperties":false,"isRequired":true,"uniqueKey":"confirmation","typeLabel":"object"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["confirmation","message"],"additionalProperties":false,"$defs":{"Confirmation":{"id":"Confirmation","type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","rejected","expired"]},"actions":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["feature.create","feature.draft","feature.review","feature.publish","feature.archive","feature.delete","feature.other","experiment.create","experiment.draft","experiment.start","experiment.stop","experiment.targeting","experiment.traffic","experiment.phases","experiment.visualEditor","experiment.checklist","experiment.other","savedGroup.create","savedGroup.draft","savedGroup.review","savedGroup.publish","savedGroup.archive","savedGroup.delete","savedGroup.other","constant.create","constant.draft","constant.review","constant.publish","constant.archive","constant.delete","constant.other","config.create","config.draft","config.review","config.publish","config.archive","config.delete","config.other","rampSchedule.create","rampSchedule.start","rampSchedule.pause","rampSchedule.progression","rampSchedule.approve","rampSchedule.edit","rampSchedule.delete","rampSchedule.other","settings.approvals","settings.other","access.members","access.teams","customHook.create","customHook.edit","customHook.delete","environment.create","environment.edit","environment.delete","project.create","project.edit","project.delete","attribute.create","attribute.edit","attribute.delete","customField.create","customField.edit","customField.delete","sdkConnection.create","sdkConnection.edit","sdkConnection.delete","metric.create","metric.edit","metric.delete","factTable.create","factTable.edit","factTable.delete","segment.create","segment.edit","segment.delete","dimension.create","dimension.edit","dimension.delete","override.ignoreWarnings","override.skipSchemaValidation","override.skipHooks","override.bypassApproval","override.restBypassesReviews","override.draftLimit","override.skipChecklist","override.bypassDuplicateKeyCheck","override.unscopedRules","other.write"]},"environments":{"type":"array","items":{"type":"string"}}},"required":["action","environments"],"additionalProperties":false}},"summary":{"type":"string"},"url":{"type":"string"},"expiresAt":{"type":"string"},"response":{"anyOf":[{"type":"object","properties":{"status":{"type":"number"},"body":{}},"required":["status","body"],"additionalProperties":false},{"type":"null"}]},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status","actions","summary","url","expiresAt","response","note"],"additionalProperties":false}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"confirmation":{"id":"\u003cstring>","status":"pending","actions":[{"action":"feature.create","environments":["\u003cstring>"]}],"summary":"\u003cstring>","url":"\u003cstring>","expiresAt":"\u003cstring>","response":{"status":123,"body":"\u003cunknown>"},"note":"\u003cstring>"},"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"9b0fc9dc-914c-45e6-98a0-ae13016d3aba":{"bearerAuth":{"type":"http","scheme":"bearer","description":"If using Bearer auth, pass the Secret Key as the token:\n```bash\ncurl https://api.growthbook.io/api/v1/features -H \"Authorization: Bearer secret_abc123DEF456\"\n```\n","scopes":[],"schemeName":"bearerAuth"}},"9c080b0f-17f7-40e8-9d49-cacc8725e1ed":{"basicAuth":{"type":"http","scheme":"basic","description":"If using HTTP Basic auth, pass the Secret Key as the username and leave the password blank:\n```bash\ncurl https://api.growthbook.io/api/v1/features -u secret_abc123DEF456:\n# The \":\" at the end stops curl from asking for a password\n```\n","scopes":[],"schemeName":"basicAuth"}}},"servers":{"a90fa77a-1e3a-4653-822f-0ec7a0c0e5c9":{"url":"https://api.growthbook.io/api","description":"GrowthBook Cloud"},"da4439ad-114f-418d-b8e9-ec5d8270d44a":{"url":"https://{domain}/api","description":"Self-hosted GrowthBook","variables":{"domain":{"default":"localhost:3100","description":"Your self-hosted GrowthBook host (and port)"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"If using Bearer auth, pass the Secret Key as the token:\n```bash\ncurl https://api.growthbook.io/api/v1/features -H \"Authorization: Bearer secret_abc123DEF456\"\n```\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"If using Bearer auth, pass the Secret Key as the token:\n```bash\ncurl https://api.growthbook.io/api/v1/features -H \"Authorization: Bearer secret_abc123DEF456\"\n```\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"http","scheme":"basic","description":"If using HTTP Basic auth, pass the Secret Key as the username and leave the password blank:\n```bash\ncurl https://api.growthbook.io/api/v1/features -u secret_abc123DEF456:\n# The \":\" at the end stops curl from asking for a password\n```\n","scopes":[],"schemeName":"basicAuth"},"schema":{"title":"Basic Auth","type":"object","description":"If using HTTP Basic auth, pass the Secret Key as the username and leave the password blank:\n```bash\ncurl https://api.growthbook.io/api/v1/features -u secret_abc123DEF456:\n# The \":\" at the end stops curl from asking for a password\n```\n","isRequired":true,"properties":{"username":{"type":"string","uniqueKey":"username","isRequired":true,"typeLabel":"string","deprecated":false},"password":{"type":"string","uniqueKey":"password","isRequired":true,"typeLabel":"string","deprecated":false}},"additionalProperties":false,"deprecated":false},"schemeName":"basicAuth","name":"Authorization"}],"title":"basicAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"growthbook-ea15456d","siteName":"GrowthBook Documentation","title":"Create a ramp schedule - GrowthBook Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-14T18:43:52.595Z","originalFileLocation":"api/ramp-schedules/operation/postRampSchedule.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a ramp schedule, optionally attached to a published feature rule by passing featureId and ruleId together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule followed by a publish. Without a target the schedule is a free-standing skeleton in pending status. Requires a Pro plan or above.\">\u003cmeta data-mint-head name=\"application-name\" content=\"GrowthBook Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a ramp schedule - GrowthBook Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a ramp schedule, optionally attached to a published feature rule by passing featureId and ruleId together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule followed by a publish. Without a target the schedule is a free-standing skeleton in pending status. Requires a Pro plan or above.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"GrowthBook Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://growthbook-ea15456d.mintlify.site/_mintlify/api/og/v2?division=Ramp+Schedules\u0026amp;title=Create+a+ramp+schedule\u0026amp;description=Creates+a+ramp+schedule%2C+optionally+attached+to+a+published+feature+rule+by+passing+%60featureId%60+and+%60ruleId%60+together+%28the+target+is+then+injected+into+every+ac\u0026amp;theme=eaa6443ec500d260c3ee1256\u0026amp;signature=9b81fe281fa8a20348203b20b03e62ac50b54dcb19350186a8eb17b9de0521ca\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a ramp schedule - GrowthBook Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a ramp schedule, optionally attached to a published feature rule by passing featureId and ruleId together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule followed by a publish. Without a target the schedule is a free-standing skeleton in pending status. Requires a Pro plan or above.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://growthbook-ea15456d.mintlify.site/_mintlify/api/og/v2?division=Ramp+Schedules\u0026amp;title=Create+a+ramp+schedule\u0026amp;description=Creates+a+ramp+schedule%2C+optionally+attached+to+a+published+feature+rule+by+passing+%60featureId%60+and+%60ruleId%60+together+%28the+target+is+then+injected+into+every+ac\u0026amp;theme=eaa6443ec500d260c3ee1256\u0026amp;signature=9b81fe281fa8a20348203b20b03e62ac50b54dcb19350186a8eb17b9de0521ca\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/growthbook-ea15456d/OQgSyDtrkb__kTVO/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"GrowthBook Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#039DD0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/ramp-schedules/operation/postRampSchedule.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.growthbook.io/#organization\",\"name\":\"GrowthBook Documentation\",\"url\":\"https://docs.growthbook.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/growthbook-ea15456d/66H-dO8hZfIFVUdN/static/img/growthbook-docslogo-light.png?fit=max\u0026auto=format\u0026n=66H-dO8hZfIFVUdN\u0026q=85\u0026s=36f32d1bbabbdafdb0bd9bc2b53c43e7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.growthbook.io#website\",\"name\":\"GrowthBook Documentation\",\"url\":\"https://docs.growthbook.io\",\"publisher\":{\"@id\":\"https://docs.growthbook.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule#webpage\",\"url\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule\",\"name\":\"Create a ramp schedule\",\"description\":\"Creates a ramp schedule, optionally attached to a published feature rule by passing featureId and ruleId together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule followed by a publish. Without a target the schedule is a free-standing skeleton in pending status. Requires a Pro plan or above.\",\"dateModified\":\"2026-09-14T18:43:52.595Z\",\"isPartOf\":{\"@id\":\"https://docs.growthbook.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.growthbook.io/api/projects/operation/listProjects\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ramp Schedules\",\"item\":\"https://docs.growthbook.io/api/ramp-schedules/operation/listRampSchedules\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a ramp schedule\",\"item\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule#apireference\",\"headline\":\"Create a ramp schedule\",\"name\":\"Create a ramp schedule\",\"description\":\"Creates a ramp schedule, optionally attached to a published feature rule by passing featureId and ruleId together (the target is then injected into every action). Attaching on creation skips the revision review flow, so when the organization requires review anywhere it is limited to credentials that may bypass approval. The reviewed way to attach a plan is PUT /features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule followed by a publish. Without a target the schedule is a free-standing skeleton in pending status. Requires a Pro plan or above.\",\"url\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule\",\"mainEntityOfPage\":{\"@id\":\"https://docs.growthbook.io/api/ramp-schedules/operation/postRampSchedule#webpage\"},\"dateModified\":\"2026-09-14T18:43:52.595Z\",\"publisher\":{\"@id\":\"https://docs.growthbook.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.growthbook.io#website\"}}]}\u003c/script>","siteName":"GrowthBook Documentation","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":""}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/lib"}]},{"tab":"API","groups":[{"group":"Introduction","pages":[{"title":"Introduction","href":"/api/introduction"}]},{"group":"Endpoints","pages":[{"group":"Projects","pages":[{"title":"Get all projects","openapi":"openapi.yaml GET /v1/projects","href":"/api/projects/operation/listProjects"},{"title":"Create a single project","openapi":"openapi.yaml POST /v1/projects","href":"/api/projects/operation/postProject"},{"title":"Get a single project","openapi":"openapi.yaml GET /v1/projects/{id}","href":"/api/projects/operation/getProject"},{"title":"Edit a single project","openapi":"openapi.yaml PUT /v1/projects/{id}","href":"/api/projects/operation/putProject"},{"title":"Deletes a single project","openapi":"openapi.yaml DELETE /v1/projects/{id}","href":"/api/projects/operation/deleteProject"}]},{"group":"Environments","pages":[{"title":"Get the organization's environments","openapi":"openapi.yaml GET /v1/environments","href":"/api/environments/operation/listEnvironments"},{"title":"Create a new environment","openapi":"openapi.yaml POST /v1/environments","href":"/api/environments/operation/postEnvironment"},{"title":"Update an environment","openapi":"openapi.yaml PUT /v1/environments/{id}","href":"/api/environments/operation/putEnvironment"},{"title":"Deletes a single environment","openapi":"openapi.yaml DELETE /v1/environments/{id}","href":"/api/environments/operation/deleteEnvironment"}]},{"group":"Feature Flags","tag":"v2","pages":[{"title":"Get all features","openapi":"openapi.yaml GET /v2/features","href":"/api/features-v2/operation/listFeaturesV2"},{"title":"Create a single feature","openapi":"openapi.yaml POST /v2/features","href":"/api/features-v2/operation/postFeatureV2"},{"title":"Get a single feature","openapi":"openapi.yaml GET /v2/features/{id}","href":"/api/features-v2/operation/getFeatureV2"},{"title":"Partially update a feature","openapi":"openapi.yaml POST /v2/features/{id}","href":"/api/features-v2/operation/updateFeatureV2"},{"title":"Deletes a single feature","openapi":"openapi.yaml DELETE /v2/features/{id}","href":"/api/features-v2/operation/deleteFeatureV2"},{"title":"Toggle a feature in one or more environments","openapi":"openapi.yaml POST /v2/features/{id}/toggle","href":"/api/features-v2/operation/toggleFeatureV2"},{"title":"Revert a feature to a specific revision","openapi":"openapi.yaml POST /v2/features/{id}/revert","href":"/api/features-v2/operation/revertFeatureV2"},{"title":"Get list of feature keys","openapi":"openapi.yaml GET /v2/feature-keys","href":"/api/features-v2/operation/getFeatureKeysV2"},{"title":"Get stale status for one or more features","openapi":"openapi.yaml GET /v2/stale-features","href":"/api/features-v2/operation/getFeatureStaleV2"}]},{"group":"Feature Revisions","tag":"v2","pages":[{"title":"List revisions across all features","openapi":"openapi.yaml GET /v2/feature-revisions","href":"/api/feature-revisions-v2/operation/listRevisionsV2"},{"title":"List revisions for a feature","openapi":"openapi.yaml GET /v2/features/{id}/revisions","href":"/api/feature-revisions-v2/operation/getFeatureRevisionsV2"},{"title":"Create a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions","href":"/api/feature-revisions-v2/operation/postFeatureRevisionV2"},{"title":"Get the most recent active draft revision","openapi":"openapi.yaml GET /v2/features/{id}/revisions/latest","href":"/api/feature-revisions-v2/operation/getFeatureRevisionLatestV2"},{"title":"Get a single feature revision","openapi":"openapi.yaml GET /v2/features/{id}/revisions/{version}","href":"/api/feature-revisions-v2/operation/getFeatureRevisionV2"},{"title":"Diff a revision against another revision","openapi":"openapi.yaml GET /v2/features/{id}/revisions/{version}/diff","href":"/api/feature-revisions-v2/operation/getFeatureRevisionDiffV2"},{"title":"Update revision metadata","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/metadata","href":"/api/feature-revisions-v2/operation/putFeatureRevisionMetadataV2"},{"title":"Set the default value in a draft revision","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/default-value","href":"/api/feature-revisions-v2/operation/putFeatureRevisionDefaultValueV2"},{"title":"Set feature-level prerequisites in a draft revision","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/prerequisites","href":"/api/feature-revisions-v2/operation/putFeatureRevisionPrerequisitesV2"},{"title":"Set holdout in a draft revision","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/holdout","href":"/api/feature-revisions-v2/operation/putFeatureRevisionHoldoutV2"},{"title":"Set archived state in a draft revision","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/archive","href":"/api/feature-revisions-v2/operation/putFeatureRevisionArchiveV2"},{"title":"Toggle an environment on/off in a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/toggle","href":"/api/feature-revisions-v2/operation/postFeatureRevisionToggleV2"},{"title":"Add a rule to a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/rules","href":"/api/feature-revisions-v2/operation/postFeatureRevisionRuleAddV2"},{"title":"Update a rule in a draft revision","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/rules/{ruleId}","href":"/api/feature-revisions-v2/operation/putFeatureRevisionRuleV2"},{"title":"Delete a rule from a draft revision","openapi":"openapi.yaml DELETE /v2/features/{id}/revisions/{version}/rules/{ruleId}","href":"/api/feature-revisions-v2/operation/deleteFeatureRevisionRuleV2"},{"title":"Reorder rules in the revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/rules/reorder","href":"/api/feature-revisions-v2/operation/postFeatureRevisionRulesReorderV2"},{"title":"Set ramp schedule for a rule","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule","href":"/api/feature-revisions-v2/operation/putFeatureRevisionRuleRampScheduleV2"},{"title":"Remove ramp schedule from a rule","openapi":"openapi.yaml DELETE /v2/features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule","href":"/api/feature-revisions-v2/operation/deleteFeatureRevisionRuleRampScheduleV2"},{"title":"Request review for a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/request-review","href":"/api/feature-revisions-v2/operation/postFeatureRevisionRequestReviewV2"},{"title":"Schedule (or cancel) a deferred publish for a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/schedule-publish","href":"/api/feature-revisions-v2/operation/postFeatureRevisionSchedulePublishV2"},{"title":"Submit a review on a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/submit-review","href":"/api/feature-revisions-v2/operation/postFeatureRevisionSubmitReviewV2"},{"title":"Recall a review request (revert to draft)","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/recall-review","href":"/api/feature-revisions-v2/operation/postFeatureRevisionRecallReviewV2"},{"title":"Undo a reviewer's own review verdict","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/undo-review","href":"/api/feature-revisions-v2/operation/postFeatureRevisionUndoReviewV2"},{"title":"List the activity log for a revision","openapi":"openapi.yaml GET /v2/features/{id}/revisions/{version}/log","href":"/api/feature-revisions-v2/operation/getFeatureRevisionLogV2"},{"title":"Edit the comment text of an owned log entry","openapi":"openapi.yaml PUT /v2/features/{id}/revisions/{version}/log/{logId}","href":"/api/feature-revisions-v2/operation/putFeatureRevisionLogCommentV2"},{"title":"Delete an owned revision Comment entry","openapi":"openapi.yaml DELETE /v2/features/{id}/revisions/{version}/log/{logId}","href":"/api/feature-revisions-v2/operation/deleteFeatureRevisionLogEntryV2"},{"title":"Get merge status for a draft revision","openapi":"openapi.yaml GET /v2/features/{id}/revisions/{version}/merge-status","href":"/api/feature-revisions-v2/operation/getFeatureRevisionMergeStatusV2"},{"title":"Preview a rebase without applying it","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/rebase/preview","href":"/api/feature-revisions-v2/operation/postFeatureRevisionRebasePreviewV2"},{"title":"Rebase a draft revision onto the current live version","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/rebase","href":"/api/feature-revisions-v2/operation/postFeatureRevisionRebaseV2"},{"title":"Publish a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/publish","href":"/api/feature-revisions-v2/operation/postFeatureRevisionPublishV2"},{"title":"Discard a draft revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/discard","href":"/api/feature-revisions-v2/operation/postFeatureRevisionDiscardV2"},{"title":"Reopen a discarded revision as a draft","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/reopen","href":"/api/feature-revisions-v2/operation/postFeatureRevisionReopenV2"},{"title":"Revert the feature to a prior revision","openapi":"openapi.yaml POST /v2/features/{id}/revisions/{version}/revert","href":"/api/feature-revisions-v2/operation/postFeatureRevisionRevertV2"}]},{"group":"Feature Flags (legacy)","tag":"LEGACY","expanded":false,"pages":[{"title":"Get all features","openapi":"openapi.yaml GET /v1/features","href":"/api/features/operation/listFeatures"},{"title":"Create a single feature","openapi":"openapi.yaml POST /v1/features","href":"/api/features/operation/postFeature"},{"title":"Get a single feature","openapi":"openapi.yaml GET /v1/features/{id}","href":"/api/features/operation/getFeature"},{"title":"Partially update a feature","openapi":"openapi.yaml POST /v1/features/{id}","href":"/api/features/operation/updateFeature"},{"title":"Deletes a single feature","openapi":"openapi.yaml DELETE /v1/features/{id}","href":"/api/features/operation/deleteFeature"},{"title":"Toggle a feature in one or more environments","openapi":"openapi.yaml POST /v1/features/{id}/toggle","href":"/api/features/operation/toggleFeature"},{"title":"Revert a feature to a specific revision","openapi":"openapi.yaml POST /v1/features/{id}/revert","href":"/api/features/operation/revertFeature"},{"title":"Get list of feature keys","openapi":"openapi.yaml GET /v1/feature-keys","href":"/api/features/operation/getFeatureKeys"},{"title":"Get stale status for one or more features","openapi":"openapi.yaml GET /v1/stale-features","href":"/api/features/operation/getFeatureStale"}]},{"group":"Feature Revisions (legacy)","tag":"LEGACY","expanded":false,"pages":[{"title":"List feature revisions","openapi":"openapi.yaml GET /v1/revisions","href":"/api/feature-revisions/operation/listRevisions"},{"title":"List revisions for a feature","openapi":"openapi.yaml GET /v1/features/{id}/revisions","href":"/api/feature-revisions/operation/getFeatureRevisions"},{"title":"Create a draft revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions","href":"/api/feature-revisions/operation/postFeatureRevision"},{"title":"Get the most recent active draft revision","openapi":"openapi.yaml GET /v1/features/{id}/revisions/latest","href":"/api/feature-revisions/operation/getFeatureRevisionLatest"},{"title":"Get a single feature revision","openapi":"openapi.yaml GET /v1/features/{id}/revisions/{version}","href":"/api/feature-revisions/operation/getFeatureRevision"},{"title":"Update revision metadata (comment, title, feature metadata)","openapi":"openapi.yaml PUT /v1/features/{id}/revisions/{version}/metadata","href":"/api/feature-revisions/operation/putFeatureRevisionMetadata"},{"title":"Set the default value in a draft revision","openapi":"openapi.yaml PUT /v1/features/{id}/revisions/{version}/default-value","href":"/api/feature-revisions/operation/putFeatureRevisionDefaultValue"},{"title":"Set feature-level prerequisites in a draft revision","openapi":"openapi.yaml PUT /v1/features/{id}/revisions/{version}/prerequisites","href":"/api/feature-revisions/operation/putFeatureRevisionPrerequisites"},{"title":"Set holdout in a draft revision","openapi":"openapi.yaml PUT /v1/features/{id}/revisions/{version}/holdout","href":"/api/feature-revisions/operation/putFeatureRevisionHoldout"},{"title":"Set archived state in a draft revision","openapi":"openapi.yaml PUT /v1/features/{id}/revisions/{version}/archive","href":"/api/feature-revisions/operation/putFeatureRevisionArchive"},{"title":"Toggle an environment on/off in a draft revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/toggle","href":"/api/feature-revisions/operation/postFeatureRevisionToggle"},{"title":"Add a rule to a draft revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/rules","href":"/api/feature-revisions/operation/postFeatureRevisionRuleAdd"},{"title":"Update a rule in a draft revision","openapi":"openapi.yaml PUT /v1/features/{id}/revisions/{version}/rules/{ruleId}","href":"/api/feature-revisions/operation/putFeatureRevisionRule"},{"title":"Delete a rule from a draft revision","openapi":"openapi.yaml DELETE /v1/features/{id}/revisions/{version}/rules/{ruleId}","href":"/api/feature-revisions/operation/deleteFeatureRevisionRule"},{"title":"Reorder rules in an environment","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/rules/reorder","href":"/api/feature-revisions/operation/postFeatureRevisionRulesReorder"},{"title":"Set ramp schedule for a rule","openapi":"openapi.yaml PUT /v1/features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule","href":"/api/feature-revisions/operation/putFeatureRevisionRuleRampSchedule"},{"title":"Remove ramp schedule from a rule","openapi":"openapi.yaml DELETE /v1/features/{id}/revisions/{version}/rules/{ruleId}/ramp-schedule","href":"/api/feature-revisions/operation/deleteFeatureRevisionRuleRampSchedule"},{"title":"Request review for a draft revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/request-review","href":"/api/feature-revisions/operation/postFeatureRevisionRequestReview"},{"title":"Submit a review on a draft revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/submit-review","href":"/api/feature-revisions/operation/postFeatureRevisionSubmitReview"},{"title":"Get merge status for a draft revision","openapi":"openapi.yaml GET /v1/features/{id}/revisions/{version}/merge-status","href":"/api/feature-revisions/operation/getFeatureRevisionMergeStatus"},{"title":"Rebase a draft revision onto the current live version","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/rebase","href":"/api/feature-revisions/operation/postFeatureRevisionRebase"},{"title":"Publish a draft revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/publish","href":"/api/feature-revisions/operation/postFeatureRevisionPublish"},{"title":"Discard a draft revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/discard","href":"/api/feature-revisions/operation/postFeatureRevisionDiscard"},{"title":"Revert the feature to a prior revision","openapi":"openapi.yaml POST /v1/features/{id}/revisions/{version}/revert","href":"/api/feature-revisions/operation/postFeatureRevisionRevert"}]},{"group":"Ramp Schedules","pages":[{"title":"Get all rampSchedules","openapi":"openapi.yaml GET /v1/ramp-schedules","description":"Returns all ramp schedules for the organization, with optional filters.\n","href":"/api/ramp-schedules/operation/listRampSchedules"},{"title":"Create a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules","href":"/api/ramp-schedules/operation/postRampSchedule"},{"title":"Start a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/start","description":"Transitions the schedule from `ready` to `running`. The schedule must have\nat least one target rule attached — a schedule created without targets starts\nin `pending` and moves to `ready` automatically when the first target is\nattached via `/actions/add-target`.\n\nThe first step is processed immediately: interval-free steps advance right\naway; interval-based steps arm a timer. Once started, use `/actions/pause`\nto halt, `/actions/advance` to skip steps, or `/actions/rollback` to revert.\n","href":"/api/ramp-schedules/operation/startRampSchedule"},{"title":"Pause a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/pause","href":"/api/ramp-schedules/operation/pauseRampSchedule"},{"title":"Resume a paused ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/resume","href":"/api/ramp-schedules/operation/resumeRampSchedule"},{"title":"Roll back a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/rollback","href":"/api/ramp-schedules/operation/rollbackRampSchedule"},{"title":"Restart a terminal ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/restart","href":"/api/ramp-schedules/operation/restartRampSchedule"},{"title":"Jump to a specific step","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/jump","href":"/api/ramp-schedules/operation/jumpRampSchedule"},{"title":"Complete a ramp schedule immediately","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/complete","href":"/api/ramp-schedules/operation/completeRampSchedule"},{"title":"Approve the pending approval gate","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/approve-step","href":"/api/ramp-schedules/operation/approveStepRampSchedule"},{"title":"Add a target rule to a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/add-target","href":"/api/ramp-schedules/operation/addTargetRampSchedule"},{"title":"Remove a target rule from a ramp schedule","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/eject-target","href":"/api/ramp-schedules/operation/ejectTargetRampSchedule"},{"title":"Advance to the next step, overriding any holds","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/advance","href":"/api/ramp-schedules/operation/apiAdvanceRampSchedule"},{"title":"Get ramp schedule status summary","openapi":"openapi.yaml GET /v1/ramp-schedules/{id}/status","href":"/api/ramp-schedules/operation/getRampScheduleStatus"},{"title":"Set ramp monitoring mode","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/set-monitoring-mode","href":"/api/ramp-schedules/operation/setMonitoringModeRampSchedule"},{"title":"Toggle automatic monitoring updates","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/set-auto-update","href":"/api/ramp-schedules/operation/setAutoUpdateRampSchedule"},{"title":"Update ramp monitoring configuration","openapi":"openapi.yaml PUT /v1/ramp-schedules/{id}/monitoring","href":"/api/ramp-schedules/operation/updateRampScheduleMonitoring"},{"title":"Update ramp lockdown configuration","openapi":"openapi.yaml PUT /v1/ramp-schedules/{id}/lockdown","href":"/api/ramp-schedules/operation/updateRampScheduleLockdown"},{"title":"Update ramp schedule steps","openapi":"openapi.yaml PUT /v1/ramp-schedules/{id}/steps","href":"/api/ramp-schedules/operation/updateRampScheduleSteps"},{"title":"Trigger a manual monitoring update","openapi":"openapi.yaml POST /v1/ramp-schedules/{id}/actions/refresh-monitoring","href":"/api/ramp-schedules/operation/refreshMonitoringRampSchedule"},{"title":"Roll back matching ramp schedules","openapi":"openapi.yaml POST /v1/ramp-schedules/actions/rollback","href":"/api/ramp-schedules/operation/rollbackMatchingRampSchedules"},{"title":"Pause matching ramp schedules","openapi":"openapi.yaml POST /v1/ramp-schedules/actions/pause","href":"/api/ramp-schedules/operation/pauseMatchingRampSchedules"},{"title":"Get a single rampSchedule","openapi":"openapi.yaml GET /v1/ramp-schedules/{id}","href":"/api/ramp-schedules/operation/getRampSchedule"},{"title":"Update a single rampSchedule","openapi":"openapi.yaml PUT /v1/ramp-schedules/{id}","href":"/api/ramp-schedules/operation/updateRampSchedule"},{"title":"Delete a single rampSchedule","openapi":"openapi.yaml DELETE /v1/ramp-schedules/{id}","href":"/api/ramp-schedules/operation/deleteRampSchedule"}]},{"group":"Data Sources","pages":[{"title":"Get all data sources","openapi":"openapi.yaml GET /v1/data-sources","href":"/api/data-sources/operation/listDataSources"},{"title":"Get a single data source","openapi":"openapi.yaml GET /v1/data-sources/{id}","href":"/api/data-sources/operation/getDataSource"},{"title":"Get a Data Source's Information Schema","openapi":"openapi.yaml GET /v1/data-sources/{dataSourceId}/information-schema","href":"/api/data-sources/operation/getInformationSchema"},{"title":"Search warehouse tables","openapi":"openapi.yaml POST /v1/data-sources/{id}/sql/search-tables","href":"/api/data-sources/operation/searchWarehouseTables"},{"title":"Get warehouse table schemas","openapi":"openapi.yaml POST /v1/data-sources/{id}/sql/table-schema","href":"/api/data-sources/operation/getWarehouseTableSchema"},{"title":"Preview distinct column values","openapi":"openapi.yaml POST /v1/data-sources/{id}/sql/preview-values","href":"/api/data-sources/operation/previewWarehouseColumnValues"},{"title":"Execute a read-only SQL query","openapi":"openapi.yaml POST /v1/data-sources/{id}/sql/run-query","href":"/api/data-sources/operation/runSqlQuery"},{"title":"Get a single Information Schema Table by id","openapi":"openapi.yaml GET /v1/information-schema-tables/{tableId}","href":"/api/data-sources/operation/getInformationSchemaTable"}]},{"group":"Fact Tables","pages":[{"title":"Get all fact tables","openapi":"openapi.yaml GET /v1/fact-tables","href":"/api/fact-tables/operation/listFactTables"},{"title":"Create a single fact table","openapi":"openapi.yaml POST /v1/fact-tables","href":"/api/fact-tables/operation/postFactTable"},{"title":"Get a single fact table","openapi":"openapi.yaml GET /v1/fact-tables/{id}","href":"/api/fact-tables/operation/getFactTable"},{"title":"Update a single fact table","openapi":"openapi.yaml POST /v1/fact-tables/{id}","href":"/api/fact-tables/operation/updateFactTable"},{"title":"Deletes a single fact table","openapi":"openapi.yaml DELETE /v1/fact-tables/{id}","href":"/api/fact-tables/operation/deleteFactTable"},{"title":"Get all filters for a fact table","openapi":"openapi.yaml GET /v1/fact-tables/{factTableId}/filters","href":"/api/fact-tables/operation/listFactTableFilters"},{"title":"Create a single fact table filter","openapi":"openapi.yaml POST /v1/fact-tables/{factTableId}/filters","href":"/api/fact-tables/operation/postFactTableFilter"},{"title":"Get a single fact filter","openapi":"openapi.yaml GET /v1/fact-tables/{factTableId}/filters/{id}","href":"/api/fact-tables/operation/getFactTableFilter"},{"title":"Update a single fact table filter","openapi":"openapi.yaml POST /v1/fact-tables/{factTableId}/filters/{id}","href":"/api/fact-tables/operation/updateFactTableFilter"},{"title":"Deletes a single fact table filter","openapi":"openapi.yaml DELETE /v1/fact-tables/{factTableId}/filters/{id}","href":"/api/fact-tables/operation/deleteFactTableFilter"},{"title":"Create a virtual (computed) column on a fact table","openapi":"openapi.yaml POST /v1/fact-tables/{factTableId}/virtual-columns","href":"/api/fact-tables/operation/postFactTableVirtualColumn"},{"title":"Update a virtual (computed) column on a fact table","openapi":"openapi.yaml POST /v1/fact-tables/{factTableId}/virtual-columns/{id}","href":"/api/fact-tables/operation/updateFactTableVirtualColumn"},{"title":"Delete a virtual (computed) column from a fact table","openapi":"openapi.yaml DELETE /v1/fact-tables/{factTableId}/virtual-columns/{id}","href":"/api/fact-tables/operation/deleteFactTableVirtualColumn"},{"title":"Get the materialization status of a fact table's shared daily aggregated tables","openapi":"openapi.yaml GET /v1/fact-tables/{id}/aggregated-tables","href":"/api/fact-tables/operation/getAggregatedFactTables"},{"title":"Force a refresh or full restate of a fact table's shared daily aggregated tables","openapi":"openapi.yaml POST /v1/fact-tables/{id}/aggregated-tables/refresh","href":"/api/fact-tables/operation/refreshAggregatedFactTable"},{"title":"List aggregated table runs","openapi":"openapi.yaml GET /v1/fact-tables/{id}/aggregated-tables/runs","href":"/api/fact-tables/operation/listAggregatedTableRuns"},{"title":"Get a single aggregated table run","openapi":"openapi.yaml GET /v1/fact-tables/{id}/aggregated-tables/runs/{runId}","href":"/api/fact-tables/operation/getAggregatedTableRun"},{"title":"Bulk import fact tables, filters, and metrics","openapi":"openapi.yaml POST /v1/bulk-import/facts","href":"/api/fact-tables/operation/postBulkImportFacts"}]},{"group":"Fact Metrics","pages":[{"title":"Get all fact metrics","openapi":"openapi.yaml GET /v1/fact-metrics","href":"/api/fact-metrics/operation/listFactMetrics"},{"title":"Create a single fact metric","openapi":"openapi.yaml POST /v1/fact-metrics","href":"/api/fact-metrics/operation/postFactMetric"},{"title":"Get a single fact metric","openapi":"openapi.yaml GET /v1/fact-metrics/{id}","href":"/api/fact-metrics/operation/getFactMetric"},{"title":"Update a single fact metric","openapi":"openapi.yaml POST /v1/fact-metrics/{id}","href":"/api/fact-metrics/operation/updateFactMetric"},{"title":"Deletes a single fact metric","openapi":"openapi.yaml DELETE /v1/fact-metrics/{id}","href":"/api/fact-metrics/operation/deleteFactMetric"},{"title":"Create a fact metric analysis","openapi":"openapi.yaml POST /v1/fact-metrics/{id}/analysis","href":"/api/fact-metrics/operation/postFactMetricAnalysis"}]},{"group":"Metrics (legacy)","tag":"LEGACY","expanded":false,"pages":[{"title":"Get all metrics","openapi":"openapi.yaml GET /v1/metrics","href":"/api/metrics/operation/listMetrics"},{"title":"Create a single metric","openapi":"openapi.yaml POST /v1/metrics","href":"/api/metrics/operation/postMetric"},{"title":"Get a single metric","openapi":"openapi.yaml GET /v1/metrics/{id}","href":"/api/metrics/operation/getMetric"},{"title":"Update a metric","openapi":"openapi.yaml PUT /v1/metrics/{id}","href":"/api/metrics/operation/putMetric"},{"title":"Deletes a metric","openapi":"openapi.yaml DELETE /v1/metrics/{id}","href":"/api/metrics/operation/deleteMetric"},{"title":"Get results for all experiments that use a metric","openapi":"openapi.yaml GET /v1/metrics/{id}/experiments","href":"/api/metrics/operation/listMetricExperiments"}]},{"group":"Experiments","pages":[{"title":"Get all experiments","openapi":"openapi.yaml GET /v1/experiments","href":"/api/experiments/operation/listExperiments"},{"title":"Create a single experiment","openapi":"openapi.yaml POST /v1/experiments","href":"/api/experiments/operation/postExperiment"},{"title":"Get latest results for many experiments","openapi":"openapi.yaml GET /v1/experiments/results","href":"/api/experiments/operation/listExperimentResults"},{"title":"Get a single experiment","openapi":"openapi.yaml GET /v1/experiments/{id}","href":"/api/experiments/operation/getExperiment"},{"title":"Update a single experiment","openapi":"openapi.yaml POST /v1/experiments/{id}","href":"/api/experiments/operation/updateExperiment"},{"title":"Delete an experiment","openapi":"openapi.yaml DELETE /v1/experiments/{id}","href":"/api/experiments/operation/deleteExperiment"},{"title":"Get an experiment pre-launch checklist status","openapi":"openapi.yaml GET /v1/experiments/{id}/start-checklist","href":"/api/experiments/operation/getExperimentStartChecklist"},{"title":"Get results for an experiment","openapi":"openapi.yaml GET /v1/experiments/{id}/results","href":"/api/experiments/operation/getExperimentResults"},{"title":"Archive an experiment","openapi":"openapi.yaml POST /v1/experiments/{id}/archive","href":"/api/experiments/operation/postExperimentArchive"},{"title":"Unarchive an experiment","openapi":"openapi.yaml POST /v1/experiments/{id}/unarchive","href":"/api/experiments/operation/postExperimentUnarchive"},{"title":"Start/Stage an experiment","openapi":"openapi.yaml POST /v1/experiments/{id}/start","href":"/api/experiments/operation/postExperimentStart"},{"title":"Mark manual pre-launch checklist items complete","openapi":"openapi.yaml POST /v1/experiments/{id}/start-checklist/manual/complete","href":"/api/experiments/operation/postExperimentStartChecklistManualComplete"},{"title":"Stop an experiment","openapi":"openapi.yaml POST /v1/experiments/{id}/stop","href":"/api/experiments/operation/postExperimentStop"},{"title":"Set an experiment's schedule and shipping automation","openapi":"openapi.yaml PUT /v1/experiments/{id}/schedule","href":"/api/experiments/operation/putExperimentSchedule"},{"title":"Modify temporary rollout status for a stopped experiment","openapi":"openapi.yaml POST /v1/experiments/{id}/modify-temporary-rollout","href":"/api/experiments/operation/postExperimentModifyTemporaryRollout"},{"title":"Create Experiment Snapshot","openapi":"openapi.yaml POST /v1/experiments/{id}/snapshot","href":"/api/experiments/operation/postExperimentSnapshot"},{"title":"Upload a variation screenshot","openapi":"openapi.yaml POST /v1/experiments/{id}/variation/{variationId}/screenshot/upload","href":"/api/experiments/operation/postVariationImageUpload"},{"title":"Delete a variation screenshot","openapi":"openapi.yaml DELETE /v1/experiments/{id}/variation/{variationId}/screenshot","href":"/api/experiments/operation/deleteVariationScreenshot"},{"title":"Get a list of experiments with names and ids","openapi":"openapi.yaml GET /v1/experiment-names","href":"/api/experiments/operation/getExperimentNames"},{"title":"Post a comment on an experiment","openapi":"openapi.yaml POST /v1/experiments/{id}/comment","href":"/api/experiments/operation/postExperimentComment"}]},{"group":"Namespaces","pages":[{"title":"Get all namespaces","openapi":"openapi.yaml GET /v1/namespaces","href":"/api/namespaces/operation/listNamespaces"},{"title":"Create a namespace","openapi":"openapi.yaml POST /v1/namespaces","href":"/api/namespaces/operation/postNamespace"},{"title":"Get a single namespace","openapi":"openapi.yaml GET /v1/namespaces/{id}","href":"/api/namespaces/operation/getNamespace"},{"title":"Update a namespace","openapi":"openapi.yaml PUT /v1/namespaces/{id}","href":"/api/namespaces/operation/putNamespace"},{"title":"Delete a namespace","openapi":"openapi.yaml DELETE /v1/namespaces/{id}","href":"/api/namespaces/operation/deleteNamespace"},{"title":"Get namespace membership","openapi":"openapi.yaml GET /v1/namespaces/{id}/memberships","href":"/api/namespaces/operation/getNamespaceMemberships"},{"title":"Rotate namespace seed","openapi":"openapi.yaml POST /v1/namespaces/{id}/rotateSeed","href":"/api/namespaces/operation/postNamespaceRotateSeed"}]},{"group":"Experiment Snapshots","pages":[{"title":"Get an experiment snapshot status","openapi":"openapi.yaml GET /v1/snapshots/{id}","href":"/api/snapshots/operation/getExperimentSnapshot"}]},{"group":"Dimensions","pages":[{"title":"Get all dimensions","openapi":"openapi.yaml GET /v1/dimensions","href":"/api/dimensions/operation/listDimensions"},{"title":"Create a single dimension","openapi":"openapi.yaml POST /v1/dimensions","href":"/api/dimensions/operation/postDimension"},{"title":"Get a single dimension","openapi":"openapi.yaml GET /v1/dimensions/{id}","href":"/api/dimensions/operation/getDimension"},{"title":"Update a single dimension","openapi":"openapi.yaml POST /v1/dimensions/{id}","href":"/api/dimensions/operation/updateDimension"},{"title":"Deletes a single dimension","openapi":"openapi.yaml DELETE /v1/dimensions/{id}","href":"/api/dimensions/operation/deleteDimension"}]},{"group":"Segments","pages":[{"title":"Get all segments","openapi":"openapi.yaml GET /v1/segments","href":"/api/segments/operation/listSegments"},{"title":"Create a single segment","openapi":"openapi.yaml POST /v1/segments","href":"/api/segments/operation/postSegment"},{"title":"Get a single segment","openapi":"openapi.yaml GET /v1/segments/{id}","href":"/api/segments/operation/getSegment"},{"title":"Update a single segment","openapi":"openapi.yaml POST /v1/segments/{id}","href":"/api/segments/operation/updateSegment"},{"title":"Deletes a single segment","openapi":"openapi.yaml DELETE /v1/segments/{id}","href":"/api/segments/operation/deleteSegment"}]},{"group":"Experiment Reports","pages":[{"title":"Get all reports","openapi":"openapi.yaml GET /v1/reports","href":"/api/reports/operation/listReports"},{"title":"Create a new report","openapi":"openapi.yaml POST /v1/reports","href":"/api/reports/operation/postReport"},{"title":"Get a single report","openapi":"openapi.yaml GET /v1/reports/{id}","href":"/api/reports/operation/getReport"},{"title":"Refresh a report by re-running its analysis","openapi":"openapi.yaml POST /v1/reports/{id}/refresh","href":"/api/reports/operation/postReportRefresh"},{"title":"Update report metadata (title, description, visibility)","openapi":"openapi.yaml PUT /v1/reports/{id}/metadata","href":"/api/reports/operation/putReportMetadata"},{"title":"Update report analysis settings","openapi":"openapi.yaml PUT /v1/reports/{id}/settings","href":"/api/reports/operation/putReportSettings"}]},{"group":"SDK Connections","pages":[{"title":"Get all sdk connections","openapi":"openapi.yaml GET /v1/sdk-connections","href":"/api/sdk-connections/operation/listSdkConnections"},{"title":"Create a single sdk connection","openapi":"openapi.yaml POST /v1/sdk-connections","href":"/api/sdk-connections/operation/postSdkConnection"},{"title":"Get a single sdk connection","openapi":"openapi.yaml GET /v1/sdk-connections/{id}","href":"/api/sdk-connections/operation/getSdkConnection"},{"title":"Update a single sdk connection","openapi":"openapi.yaml PUT /v1/sdk-connections/{id}","href":"/api/sdk-connections/operation/putSdkConnection"},{"title":"Deletes a single SDK connection","openapi":"openapi.yaml DELETE /v1/sdk-connections/{id}","href":"/api/sdk-connections/operation/deleteSdkConnection"},{"title":"Find a single sdk connection by its key","openapi":"openapi.yaml GET /v1/sdk-connections/lookup/{key}","href":"/api/sdk-connections/operation/lookupSdkConnectionByKey"}]},{"group":"Visual Changesets","pages":[{"title":"Get all visual changesets","openapi":"openapi.yaml GET /v1/experiments/{id}/visual-changesets","href":"/api/visual-changesets/operation/listVisualChangesets"},{"title":"Create a visual changeset for an experiment","openapi":"openapi.yaml POST /v1/experiments/{id}/visual-changesets","href":"/api/visual-changesets/operation/postVisualChangesets"},{"title":"Get a single visual changeset","openapi":"openapi.yaml GET /v1/visual-changesets/{id}","href":"/api/visual-changesets/operation/getVisualChangeset"},{"title":"Update a visual changeset","openapi":"openapi.yaml PUT /v1/visual-changesets/{id}","href":"/api/visual-changesets/operation/putVisualChangeset"},{"title":"Create a visual change for a visual changeset","openapi":"openapi.yaml POST /v1/visual-changesets/{id}/visual-change","href":"/api/visual-changesets/operation/postVisualChange"},{"title":"Update a visual change for a visual changeset","openapi":"openapi.yaml PUT /v1/visual-changesets/{id}/visual-change/{visualChangeId}","href":"/api/visual-changesets/operation/putVisualChange"}]},{"group":"Saved Groups","pages":[{"title":"Get all saved group","openapi":"openapi.yaml GET /v1/saved-groups","href":"/api/saved-groups/operation/listSavedGroups"},{"title":"Create a single saved group","openapi":"openapi.yaml POST /v1/saved-groups","href":"/api/saved-groups/operation/postSavedGroup"},{"title":"Get a single saved group","openapi":"openapi.yaml GET /v1/saved-groups/{id}","href":"/api/saved-groups/operation/getSavedGroup"},{"title":"Partially update a single saved group","openapi":"openapi.yaml POST /v1/saved-groups/{id}","href":"/api/saved-groups/operation/updateSavedGroup"},{"title":"Deletes a single saved group","openapi":"openapi.yaml DELETE /v1/saved-groups/{id}","href":"/api/saved-groups/operation/deleteSavedGroup"},{"title":"Archive a single saved group","openapi":"openapi.yaml POST /v1/saved-groups/{id}/archive","href":"/api/saved-groups/operation/archiveSavedGroup"},{"title":"Unarchive a single saved group","openapi":"openapi.yaml POST /v1/saved-groups/{id}/unarchive","href":"/api/saved-groups/operation/unarchiveSavedGroup"},{"title":"Get features, experiments, and saved groups that reference this saved group","openapi":"openapi.yaml GET /v1/saved-groups/{id}/references","href":"/api/saved-groups/operation/getSavedGroupReferences"},{"title":"List the uploads of a remote saved group","openapi":"openapi.yaml GET /v1/saved-groups/{id}/uploads","href":"/api/saved-groups/operation/listSavedGroupUploads"},{"title":"Upload a new version of a remote saved group's IDs","openapi":"openapi.yaml POST /v1/saved-groups/{id}/uploads","href":"/api/saved-groups/operation/postSavedGroupUpload"},{"title":"Get a signed URL to upload a remote saved group CSV","openapi":"openapi.yaml POST /v1/saved-groups/{id}/upload-url","href":"/api/saved-groups/operation/postSavedGroupUploadUrl"},{"title":"Report loading a remote saved group upload into a data store","openapi":"openapi.yaml POST /v1/saved-groups/{id}/uploads/{version}/loads","href":"/api/saved-groups/operation/postSavedGroupUploadLoad"},{"title":"Get one upload of a remote saved group","openapi":"openapi.yaml GET /v1/saved-groups/{id}/uploads/{version}","href":"/api/saved-groups/operation/getSavedGroupUpload"},{"title":"Delete an upload of a remote saved group","openapi":"openapi.yaml DELETE /v1/saved-groups/{id}/uploads/{version}","href":"/api/saved-groups/operation/deleteSavedGroupUpload"}]},{"group":"Saved Group Revisions","pages":[{"title":"List saved-group revisions across the organization","openapi":"openapi.yaml GET /v1/saved-groups-revisions","href":"/api/saved-group-revisions/operation/listSavedGroupRevisions"},{"title":"List revisions for a saved group","openapi":"openapi.yaml GET /v1/saved-groups-revisions/{savedGroupId}","href":"/api/saved-group-revisions/operation/getSavedGroupRevisions"},{"title":"Create a draft revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}","href":"/api/saved-group-revisions/operation/postSavedGroupRevision"},{"title":"Get the most recent active draft revision","openapi":"openapi.yaml GET /v1/saved-groups-revisions/{savedGroupId}/latest","href":"/api/saved-group-revisions/operation/getSavedGroupRevisionLatest"},{"title":"Get a single saved group revision","openapi":"openapi.yaml GET /v1/saved-groups-revisions/{savedGroupId}/{version}","href":"/api/saved-group-revisions/operation/getSavedGroupRevision"},{"title":"Update saved group metadata in a draft revision","openapi":"openapi.yaml PUT /v1/saved-groups-revisions/{savedGroupId}/{version}/metadata","href":"/api/saved-group-revisions/operation/putSavedGroupRevisionMetadata"},{"title":"Update the condition of a condition saved group draft revision","openapi":"openapi.yaml PUT /v1/saved-groups-revisions/{savedGroupId}/{version}/condition","href":"/api/saved-group-revisions/operation/putSavedGroupRevisionCondition"},{"title":"Replace the values list in a list saved group draft revision","openapi":"openapi.yaml PUT /v1/saved-groups-revisions/{savedGroupId}/{version}/values","href":"/api/saved-group-revisions/operation/putSavedGroupRevisionValues"},{"title":"Set the upload a remote saved group draft revision uses","openapi":"openapi.yaml PUT /v1/saved-groups-revisions/{savedGroupId}/{version}/upload-version","href":"/api/saved-group-revisions/operation/putSavedGroupRevisionUploadVersion"},{"title":"Stage an archive/unarchive in a draft revision","openapi":"openapi.yaml PUT /v1/saved-groups-revisions/{savedGroupId}/{version}/archive","href":"/api/saved-group-revisions/operation/putSavedGroupRevisionArchive"},{"title":"Append items to a list saved group draft revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/items/add","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionItemsAdd"},{"title":"Remove items from a list saved group draft revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/items/remove","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionItemsRemove"},{"title":"Request review for a draft revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/request-review","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionRequestReview"},{"title":"Submit a review on a draft revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/submit-review","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionSubmitReview"},{"title":"Recall a review request","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/recall-review","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionRecallReview"},{"title":"Reopen a discarded revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/reopen","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionReopen"},{"title":"Schedule (or cancel) a deferred publish","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/schedule-publish","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionSchedulePublish"},{"title":"Retract your own review verdict","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/undo-review","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionUndoReview"},{"title":"Get merge status for a draft revision","openapi":"openapi.yaml GET /v1/saved-groups-revisions/{savedGroupId}/{version}/merge-status","href":"/api/saved-group-revisions/operation/getSavedGroupRevisionMergeStatus"},{"title":"Rebase a draft revision onto the current live saved group","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/rebase","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionRebase"},{"title":"Publish a draft revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/publish","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionPublish"},{"title":"Discard a draft revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/discard","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionDiscard"},{"title":"Revert the saved group to a prior revision","openapi":"openapi.yaml POST /v1/saved-groups-revisions/{savedGroupId}/{version}/revert","href":"/api/saved-group-revisions/operation/postSavedGroupRevisionRevert"}]},{"group":"Constants","tag":"BETA","pages":[{"title":"Get all constants","openapi":"openapi.yaml GET /v1/constants","href":"/api/constants/operation/listConstants"},{"title":"Create a single constant","openapi":"openapi.yaml POST /v1/constants","href":"/api/constants/operation/postConstant"},{"title":"Get features and constants that reference this constant","openapi":"openapi.yaml GET /v1/constants/{key}/references","href":"/api/constants/operation/getConstantReferences"},{"title":"Get a single constant","openapi":"openapi.yaml GET /v1/constants/{key}","href":"/api/constants/operation/getConstant"},{"title":"Partially update a single constant","openapi":"openapi.yaml POST /v1/constants/{key}","href":"/api/constants/operation/updateConstant"},{"title":"Delete a single constant","openapi":"openapi.yaml DELETE /v1/constants/{key}","href":"/api/constants/operation/deleteConstant"},{"title":"Archive a single constant","openapi":"openapi.yaml POST /v1/constants/{key}/archive","href":"/api/constants/operation/archiveConstant"},{"title":"Unarchive a single constant","openapi":"openapi.yaml POST /v1/constants/{key}/unarchive","href":"/api/constants/operation/unarchiveConstant"}]},{"group":"Constant Revisions","tag":"BETA","pages":[{"title":"List constant revisions across the organization","openapi":"openapi.yaml GET /v1/constants-revisions","href":"/api/constant-revisions/operation/listConstantRevisions"},{"title":"List revisions for a constant","openapi":"openapi.yaml GET /v1/constants-revisions/{key}","href":"/api/constant-revisions/operation/getConstantRevisions"},{"title":"Create a draft revision","openapi":"openapi.yaml POST /v1/constants-revisions/{key}","href":"/api/constant-revisions/operation/postConstantRevision"},{"title":"Get the most recent active draft revision","openapi":"openapi.yaml GET /v1/constants-revisions/{key}/latest","href":"/api/constant-revisions/operation/getConstantRevisionLatest"},{"title":"Get a single constant revision","openapi":"openapi.yaml GET /v1/constants-revisions/{key}/{version}","href":"/api/constant-revisions/operation/getConstantRevision"},{"title":"Update constant metadata in a draft revision","openapi":"openapi.yaml PUT /v1/constants-revisions/{key}/{version}/metadata","href":"/api/constant-revisions/operation/putConstantRevisionMetadata"},{"title":"Update the value of a constant draft revision","openapi":"openapi.yaml PUT /v1/constants-revisions/{key}/{version}/value","href":"/api/constant-revisions/operation/putConstantRevisionValue"},{"title":"Stage an archive/unarchive in a draft revision","openapi":"openapi.yaml PUT /v1/constants-revisions/{key}/{version}/archive","href":"/api/constant-revisions/operation/putConstantRevisionArchive"},{"title":"Request review for a draft revision","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/request-review","href":"/api/constant-revisions/operation/postConstantRevisionRequestReview"},{"title":"Submit a review on a draft revision","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/submit-review","href":"/api/constant-revisions/operation/postConstantRevisionSubmitReview"},{"title":"Recall a review request","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/recall-review","href":"/api/constant-revisions/operation/postConstantRevisionRecallReview"},{"title":"Reopen a discarded revision","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/reopen","href":"/api/constant-revisions/operation/postConstantRevisionReopen"},{"title":"Schedule (or cancel) a deferred publish","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/schedule-publish","href":"/api/constant-revisions/operation/postConstantRevisionSchedulePublish"},{"title":"Retract your own review verdict","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/undo-review","href":"/api/constant-revisions/operation/postConstantRevisionUndoReview"},{"title":"Get merge status for a draft revision","openapi":"openapi.yaml GET /v1/constants-revisions/{key}/{version}/merge-status","href":"/api/constant-revisions/operation/getConstantRevisionMergeStatus"},{"title":"Rebase a draft revision onto the current live constant","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/rebase","href":"/api/constant-revisions/operation/postConstantRevisionRebase"},{"title":"Publish a draft revision","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/publish","href":"/api/constant-revisions/operation/postConstantRevisionPublish"},{"title":"Discard a draft revision","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/discard","href":"/api/constant-revisions/operation/postConstantRevisionDiscard"},{"title":"Revert the constant to a prior revision","openapi":"openapi.yaml POST /v1/constants-revisions/{key}/{version}/revert","href":"/api/constant-revisions/operation/postConstantRevisionRevert"}]},{"group":"Configs","tag":"BETA","pages":[{"title":"Get all configs","openapi":"openapi.yaml GET /v1/configs","href":"/api/configs/operation/listConfigs"},{"title":"Create a single config","openapi":"openapi.yaml POST /v1/configs","href":"/api/configs/operation/postConfig"},{"title":"Get features and configs that reference this config","openapi":"openapi.yaml GET /v1/configs/{key}/references","href":"/api/configs/operation/getConfigReferences"},{"title":"Get the feature rules and default values implementing each key","openapi":"openapi.yaml GET /v1/configs/{key}/key-usage","href":"/api/configs/operation/getConfigKeyUsage"},{"title":"Get the full lineage (family tree) for a config","openapi":"openapi.yaml GET /v1/configs/{key}/lineage","href":"/api/configs/operation/getConfigLineage"},{"title":"Verify a config's schema against a source (drift check)","openapi":"openapi.yaml POST /v1/configs/{key}/schema/verify","href":"/api/configs/operation/verifyConfigSchema"},{"title":"Export a config's schema","openapi":"openapi.yaml GET /v1/configs/{key}/schema","href":"/api/configs/operation/getConfigSchema"},{"title":"Get a single config","openapi":"openapi.yaml GET /v1/configs/{key}","href":"/api/configs/operation/getConfig"},{"title":"Partially update a single config","openapi":"openapi.yaml POST /v1/configs/{key}","href":"/api/configs/operation/updateConfig"},{"title":"Delete a single config","openapi":"openapi.yaml DELETE /v1/configs/{key}","href":"/api/configs/operation/deleteConfig"},{"title":"Archive a single config","openapi":"openapi.yaml POST /v1/configs/{key}/archive","href":"/api/configs/operation/archiveConfig"},{"title":"Unarchive a single config","openapi":"openapi.yaml POST /v1/configs/{key}/unarchive","href":"/api/configs/operation/unarchiveConfig"},{"title":"Lock a config at its current published revision","openapi":"openapi.yaml POST /v1/configs/{key}/lock","href":"/api/configs/operation/lockConfig"},{"title":"Unlock a config","openapi":"openapi.yaml POST /v1/configs/{key}/unlock","href":"/api/configs/operation/unlockConfig"}]},{"group":"Config Revisions","tag":"BETA","pages":[{"title":"List config revisions across the organization","openapi":"openapi.yaml GET /v1/configs-revisions","href":"/api/config-revisions/operation/listConfigRevisions"},{"title":"List revisions for a config","openapi":"openapi.yaml GET /v1/configs-revisions/{key}","href":"/api/config-revisions/operation/getConfigRevisions"},{"title":"Create a draft revision","openapi":"openapi.yaml POST /v1/configs-revisions/{key}","href":"/api/config-revisions/operation/postConfigRevision"},{"title":"Get the most recent active draft revision","openapi":"openapi.yaml GET /v1/configs-revisions/{key}/latest","href":"/api/config-revisions/operation/getConfigRevisionLatest"},{"title":"Get a single config revision","openapi":"openapi.yaml GET /v1/configs-revisions/{key}/{version}","href":"/api/config-revisions/operation/getConfigRevision"},{"title":"Update config metadata in a draft revision","openapi":"openapi.yaml PUT /v1/configs-revisions/{key}/{version}/metadata","href":"/api/config-revisions/operation/putConfigRevisionMetadata"},{"title":"Update the value of a config draft revision","openapi":"openapi.yaml PUT /v1/configs-revisions/{key}/{version}/value","href":"/api/config-revisions/operation/putConfigRevisionValue"},{"title":"Set one property of a config draft revision's value","openapi":"openapi.yaml PUT /v1/configs-revisions/{key}/{version}/property","href":"/api/config-revisions/operation/putConfigRevisionProperty"},{"title":"Remove one property from a config draft revision's value","openapi":"openapi.yaml DELETE /v1/configs-revisions/{key}/{version}/property","href":"/api/config-revisions/operation/deleteConfigRevisionProperty"},{"title":"Update or import the schema of a config draft revision","openapi":"openapi.yaml PUT /v1/configs-revisions/{key}/{version}/schema","href":"/api/config-revisions/operation/putConfigRevisionSchema"},{"title":"Set (or update) a config's per-source render projection on a draft","openapi":"openapi.yaml PUT /v1/configs-revisions/{key}/{version}/projection","href":"/api/config-revisions/operation/putConfigRevisionProjection"},{"title":"Remove a config's per-source render projection on a draft","openapi":"openapi.yaml DELETE /v1/configs-revisions/{key}/{version}/projection","href":"/api/config-revisions/operation/deleteConfigRevisionProjection"},{"title":"Stage an archive/unarchive in a draft revision","openapi":"openapi.yaml PUT /v1/configs-revisions/{key}/{version}/archive","href":"/api/config-revisions/operation/putConfigRevisionArchive"},{"title":"Request review for a draft revision","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/request-review","href":"/api/config-revisions/operation/postConfigRevisionRequestReview"},{"title":"Submit a review on a draft revision","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/submit-review","href":"/api/config-revisions/operation/postConfigRevisionSubmitReview"},{"title":"Retract your own review verdict","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/undo-review","href":"/api/config-revisions/operation/postConfigRevisionUndoReview"},{"title":"Recall a review request","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/recall-review","href":"/api/config-revisions/operation/postConfigRevisionRecallReview"},{"title":"Reopen a discarded revision","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/reopen","href":"/api/config-revisions/operation/postConfigRevisionReopen"},{"title":"Schedule (or cancel) a deferred publish","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/schedule-publish","href":"/api/config-revisions/operation/postConfigRevisionSchedulePublish"},{"title":"Get merge status for a draft revision","openapi":"openapi.yaml GET /v1/configs-revisions/{key}/{version}/merge-status","href":"/api/config-revisions/operation/getConfigRevisionMergeStatus"},{"title":"Rebase a draft revision onto the current live config","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/rebase","href":"/api/config-revisions/operation/postConfigRevisionRebase"},{"title":"Publish a draft revision","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/publish","href":"/api/config-revisions/operation/postConfigRevisionPublish"},{"title":"Discard a draft revision","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/discard","href":"/api/config-revisions/operation/postConfigRevisionDiscard"},{"title":"Revert the config to a prior revision","openapi":"openapi.yaml POST /v1/configs-revisions/{key}/{version}/revert","href":"/api/config-revisions/operation/postConfigRevisionRevert"}]},{"group":"Releases","tag":"BETA","pages":[{"title":"Atomically publish revisions across multiple entities","openapi":"openapi.yaml POST /v1/releases/publish-revisions","href":"/api/releases/operation/postReleasePublishRevisions"}]},{"group":"Custom Hooks","pages":[{"title":"Get all custom hooks","openapi":"openapi.yaml GET /v1/custom-hooks","href":"/api/custom-hooks/operation/listCustomHooks"},{"title":"Create a single custom hook","openapi":"openapi.yaml POST /v1/custom-hooks","href":"/api/custom-hooks/operation/postCustomHook"},{"title":"Dry-run hook code in the sandbox","openapi":"openapi.yaml POST /v1/custom-hooks/test","href":"/api/custom-hooks/operation/testCustomHook"},{"title":"Get a single custom hook","openapi":"openapi.yaml GET /v1/custom-hooks/{id}","href":"/api/custom-hooks/operation/getCustomHook"},{"title":"Partially update a single custom hook","openapi":"openapi.yaml POST /v1/custom-hooks/{id}","href":"/api/custom-hooks/operation/updateCustomHook"},{"title":"Delete a single custom hook","openapi":"openapi.yaml DELETE /v1/custom-hooks/{id}","href":"/api/custom-hooks/operation/deleteCustomHook"},{"title":"List a custom hook's version history","openapi":"openapi.yaml GET /v1/custom-hooks/{id}/history","href":"/api/custom-hooks/operation/listCustomHookHistory"},{"title":"Revert a custom hook to a previous version","openapi":"openapi.yaml POST /v1/custom-hooks/{id}/revert","href":"/api/custom-hooks/operation/revertCustomHook"}]},{"group":"Organizations","pages":[{"title":"Get all organizations (only for super admins on multi-org Enterprise Plan only)","openapi":"openapi.yaml GET /v1/organizations","href":"/api/organizations/operation/listOrganizations"},{"title":"Create a single organization (only for super admins on multi-org Enterprise Plan only)","openapi":"openapi.yaml POST /v1/organizations","href":"/api/organizations/operation/postOrganization"},{"title":"Edit a single organization (only for super admins on multi-org Enterprise Plan only)","openapi":"openapi.yaml PUT /v1/organizations/{id}","href":"/api/organizations/operation/putOrganization"}]},{"group":"Members","pages":[{"title":"Get all organization members","openapi":"openapi.yaml GET /v1/members","href":"/api/members/operation/listMembers"},{"title":"Update a member's role","openapi":"openapi.yaml POST /v1/members/{id}/role","href":"/api/members/operation/updateMemberRole"},{"title":"Removes a single user from an organization","openapi":"openapi.yaml DELETE /v1/members/{id}","href":"/api/members/operation/deleteMember"}]},{"group":"Code References","pages":[{"title":"Get list of all code references for the current organization","openapi":"openapi.yaml GET /v1/code-refs","href":"/api/code-references/operation/listCodeRefs"},{"title":"Submit list of code references","openapi":"openapi.yaml POST /v1/code-refs","href":"/api/code-references/operation/postCodeRefs"},{"title":"Get list of code references for a single feature id","openapi":"openapi.yaml GET /v1/code-refs/{id}","href":"/api/code-references/operation/getCodeRefs"}]},{"group":"Archetypes","pages":[{"title":"Get the organization's archetypes","openapi":"openapi.yaml GET /v1/archetypes","href":"/api/archetypes/operation/listArchetypes"},{"title":"Create a single archetype","openapi":"openapi.yaml POST /v1/archetypes","href":"/api/archetypes/operation/postArchetype"},{"title":"Get a single archetype","openapi":"openapi.yaml GET /v1/archetypes/{id}","href":"/api/archetypes/operation/getArchetype"},{"title":"Update a single archetype","openapi":"openapi.yaml PUT /v1/archetypes/{id}","href":"/api/archetypes/operation/putArchetype"},{"title":"Deletes a single archetype","openapi":"openapi.yaml DELETE /v1/archetypes/{id}","href":"/api/archetypes/operation/deleteArchetype"}]},{"group":"Queries","pages":[{"title":"Get a single query","openapi":"openapi.yaml GET /v1/queries/{id}","href":"/api/queries/operation/getQuery"}]},{"group":"Settings","pages":[{"title":"Get organization settings","openapi":"openapi.yaml GET /v1/settings","href":"/api/settings/operation/getSettings"},{"title":"Update approval settings","openapi":"openapi.yaml PUT /v1/settings/approvals","href":"/api/settings/operation/putApprovalSettings"}]},{"group":"Attributes","pages":[{"title":"Get the organization's attributes","openapi":"openapi.yaml GET /v1/attributes","href":"/api/attributes/operation/listAttributes"},{"title":"Create a new attribute","openapi":"openapi.yaml POST /v1/attributes","href":"/api/attributes/operation/postAttribute"},{"title":"Update an attribute","openapi":"openapi.yaml PUT /v1/attributes/{property}","href":"/api/attributes/operation/putAttribute"},{"title":"Deletes a single attribute","openapi":"openapi.yaml DELETE /v1/attributes/{property}","href":"/api/attributes/operation/deleteAttribute"}]},{"group":"Usage","pages":[{"title":"Get metric usage across experiments","openapi":"openapi.yaml GET /v1/usage/metrics","href":"/api/usage/operation/getMetricUsage"}]},{"group":"Meta","pages":[{"title":"Get the GrowthBook server version and build info","openapi":"openapi.yaml GET /v1/version","href":"/api/meta/operation/getVersion"},{"title":"Get a confirmation","openapi":"openapi.yaml GET /v1/confirmations/{id}","href":"/api/meta/operation/getConfirmation"}]},{"group":"Contextual Bandits","tag":"BETA","pages":[{"title":"Get current Contextual Bandit leaf weights and latest event","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/current","href":"/api/ContextualBandits/operation/getContextualBanditCurrentWeights"},{"title":"List Contextual Bandit snapshots","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/snapshots","href":"/api/ContextualBandits/operation/listContextualBanditSnapshots"},{"title":"Get a single Contextual Bandit snapshot","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/snapshots/{snapshotId}","href":"/api/ContextualBandits/operation/getContextualBanditSnapshot"},{"title":"List Contextual Bandit weight-update events","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/events","href":"/api/ContextualBandits/operation/listContextualBanditEvents"},{"title":"Get a single Contextual Bandit weight-update event","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/events/{eventId}","href":"/api/ContextualBandits/operation/getContextualBanditEvent"},{"title":"Get latest Contextual Bandit results","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/results","href":"/api/ContextualBandits/operation/getContextualBanditResults"},{"title":"Get Contextual Bandit run status","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/status","href":"/api/ContextualBandits/operation/getContextualBanditStatus"},{"title":"Get features linked to a Contextual Bandit","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/linked-features","href":"/api/ContextualBandits/operation/getContextualBanditLinkedFeatures"},{"title":"Link a feature to a Contextual Bandit","openapi":"openapi.yaml POST /v1/contextual-bandits/{id}/linked-feature/{featureId}","href":"/api/ContextualBandits/operation/addContextualBanditLinkedFeature"},{"title":"Replace a Contextual Bandit's rule on a linked feature","openapi":"openapi.yaml PUT /v1/contextual-bandits/{id}/linked-feature/{featureId}","href":"/api/ContextualBandits/operation/updateContextualBanditLinkedFeature"},{"title":"Unlink a feature from a Contextual Bandit","openapi":"openapi.yaml DELETE /v1/contextual-bandits/{id}/linked-feature/{featureId}","href":"/api/ContextualBandits/operation/deleteContextualBanditLinkedFeature"},{"title":"Get a single contextualBandit","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}","href":"/api/ContextualBandits/operation/getContextualBandit"},{"title":"Update a single contextualBandit","openapi":"openapi.yaml PUT /v1/contextual-bandits/{id}","href":"/api/ContextualBandits/operation/updateContextualBandit"},{"title":"Delete a single contextualBandit","openapi":"openapi.yaml DELETE /v1/contextual-bandits/{id}","href":"/api/ContextualBandits/operation/deleteContextualBandit"},{"title":"Get all contextualBandits","openapi":"openapi.yaml GET /v1/contextual-bandits","href":"/api/ContextualBandits/operation/listContextualBandits"},{"title":"Create a single contextualBandit","openapi":"openapi.yaml POST /v1/contextual-bandits","href":"/api/ContextualBandits/operation/createContextualBandit"},{"title":"Start a Contextual Bandit","openapi":"openapi.yaml POST /v1/contextual-bandits/{id}/start","href":"/api/ContextualBandits/operation/startContextualBandit"},{"title":"Stop a Contextual Bandit","openapi":"openapi.yaml POST /v1/contextual-bandits/{id}/stop","href":"/api/ContextualBandits/operation/stopContextualBandit"},{"title":"Trigger a Contextual Bandit snapshot refresh","openapi":"openapi.yaml POST /v1/contextual-bandits/{id}/refresh","href":"/api/ContextualBandits/operation/refreshContextualBandit"},{"title":"Add or remove Contextual Bandit variations","openapi":"openapi.yaml POST /v1/contextual-bandits/{id}/variations","href":"/api/ContextualBandits/operation/updateContextualBanditVariations"},{"title":"Cancel a running Contextual Bandit snapshot refresh","openapi":"openapi.yaml POST /v1/contextual-bandits/{id}/cancel","href":"/api/ContextualBandits/operation/cancelContextualBandit"},{"title":"List visual changesets for a Contextual Bandit","openapi":"openapi.yaml GET /v1/contextual-bandits/{id}/visual-changesets","href":"/api/ContextualBandits/operation/listContextualBanditVisualChangesets"},{"title":"Create a visual changeset for a Contextual Bandit","openapi":"openapi.yaml POST /v1/contextual-bandits/{id}/visual-changesets","href":"/api/ContextualBandits/operation/postContextualBanditVisualChangesets"}]},{"group":"Dashboards","pages":[{"title":"Get a single dashboard","openapi":"openapi.yaml GET /v1/dashboards/{id}","href":"/api/Dashboards/operation/getDashboard"},{"title":"Update a single dashboard","openapi":"openapi.yaml PUT /v1/dashboards/{id}","href":"/api/Dashboards/operation/updateDashboard"},{"title":"Delete a single dashboard","openapi":"openapi.yaml DELETE /v1/dashboards/{id}","href":"/api/Dashboards/operation/deleteDashboard"},{"title":"Get all dashboards","openapi":"openapi.yaml GET /v1/dashboards","href":"/api/Dashboards/operation/listDashboards"},{"title":"Create a single dashboard","openapi":"openapi.yaml POST /v1/dashboards","href":"/api/Dashboards/operation/createDashboard"},{"title":"Create a single dashboard","openapi":"openapi.yaml POST /v2/dashboards","href":"/api/Dashboards/operation/createDashboardV2"},{"title":"Get all dashboards for an experiment","openapi":"openapi.yaml GET /v1/dashboards/by-experiment/{experimentId}","href":"/api/Dashboards/operation/getDashboardsForExperiment"}]},{"group":"Contextual Bandit Queries","tag":"BETA","pages":[{"title":"Get a single contextualBanditQuery","openapi":"openapi.yaml GET /v1/contextual-bandit-queries/{id}","href":"/api/ContextualBanditQueries/operation/getContextualBanditQuery"},{"title":"Update a single contextualBanditQuery","openapi":"openapi.yaml PUT /v1/contextual-bandit-queries/{id}","href":"/api/ContextualBanditQueries/operation/updateContextualBanditQuery"},{"title":"Delete a single contextualBanditQuery","openapi":"openapi.yaml DELETE /v1/contextual-bandit-queries/{id}","href":"/api/ContextualBanditQueries/operation/deleteContextualBanditQuery"},{"title":"Get all contextualBanditQueries","openapi":"openapi.yaml GET /v1/contextual-bandit-queries","href":"/api/ContextualBanditQueries/operation/listContextualBanditQueries"},{"title":"Create a single contextualBanditQuery","openapi":"openapi.yaml POST /v1/contextual-bandit-queries","href":"/api/ContextualBanditQueries/operation/createContextualBanditQuery"}]},{"group":"Interleaving Exposure Queries","pages":[{"title":"Get a single interleavingExposureQuery","openapi":"openapi.yaml GET /v1/interleaving-exposure-queries/{id}","href":"/api/InterleavingExposureQueries/operation/getInterleavingExposureQuery"},{"title":"Update a single interleavingExposureQuery","openapi":"openapi.yaml PUT /v1/interleaving-exposure-queries/{id}","href":"/api/InterleavingExposureQueries/operation/updateInterleavingExposureQuery"},{"title":"Delete a single interleavingExposureQuery","openapi":"openapi.yaml DELETE /v1/interleaving-exposure-queries/{id}","href":"/api/InterleavingExposureQueries/operation/deleteInterleavingExposureQuery"},{"title":"Get all interleavingExposureQueries","openapi":"openapi.yaml GET /v1/interleaving-exposure-queries","href":"/api/InterleavingExposureQueries/operation/listInterleavingExposureQueries"},{"title":"Create a single interleavingExposureQuery","openapi":"openapi.yaml POST /v1/interleaving-exposure-queries","href":"/api/InterleavingExposureQueries/operation/createInterleavingExposureQuery"}]},{"group":"Interleaving Experiments","pages":[{"title":"Get a single interleaving","openapi":"openapi.yaml GET /v1/interleavings/{id}","href":"/api/Interleavings/operation/getInterleaving"},{"title":"Update a single interleaving","openapi":"openapi.yaml PUT /v1/interleavings/{id}","href":"/api/Interleavings/operation/updateInterleaving"},{"title":"Delete a single interleaving","openapi":"openapi.yaml DELETE /v1/interleavings/{id}","href":"/api/Interleavings/operation/deleteInterleaving"},{"title":"Get all interleavings","openapi":"openapi.yaml GET /v1/interleavings","href":"/api/Interleavings/operation/listInterleavings"},{"title":"Create a single interleaving","openapi":"openapi.yaml POST /v1/interleavings","href":"/api/Interleavings/operation/createInterleaving"},{"title":"Start an interleaving experiment","openapi":"openapi.yaml POST /v1/interleavings/{id}/start","href":"/api/Interleavings/operation/startInterleaving"},{"title":"Stop an interleaving experiment","openapi":"openapi.yaml POST /v1/interleavings/{id}/stop","href":"/api/Interleavings/operation/stopInterleaving"},{"title":"Refresh interleaving experiment results","openapi":"openapi.yaml POST /v1/interleavings/{id}/refresh","href":"/api/Interleavings/operation/refreshInterleaving"},{"title":"Get the latest interleaving experiment results","openapi":"openapi.yaml GET /v1/interleavings/{id}/results","href":"/api/Interleavings/operation/getInterleavingResults"},{"title":"Get interleaving experiment run status","openapi":"openapi.yaml GET /v1/interleavings/{id}/status","href":"/api/Interleavings/operation/getInterleavingStatus"},{"title":"List interleaving experiment results snapshots","openapi":"openapi.yaml GET /v1/interleavings/{id}/snapshots","href":"/api/Interleavings/operation/listInterleavingSnapshots"},{"title":"Get an interleaving experiment results snapshot","openapi":"openapi.yaml GET /v1/interleavings/{id}/snapshots/{snapshotId}","href":"/api/Interleavings/operation/getInterleavingSnapshot"}]},{"group":"Custom Fields","pages":[{"title":"Get all custom fields","openapi":"openapi.yaml GET /v1/custom-fields","href":"/api/CustomFields/operation/listCustomFields"},{"title":"Create a single customField","openapi":"openapi.yaml POST /v1/custom-fields","href":"/api/CustomFields/operation/createCustomField"},{"title":"Get a single customField","openapi":"openapi.yaml GET /v1/custom-fields/{id}","href":"/api/CustomFields/operation/getCustomField"},{"title":"Update a single customField","openapi":"openapi.yaml PUT /v1/custom-fields/{id}","href":"/api/CustomFields/operation/updateCustomField"},{"title":"Delete a single customField","openapi":"openapi.yaml DELETE /v1/custom-fields/{id}","href":"/api/CustomFields/operation/deleteCustomField"}]},{"group":"Metric Groups","pages":[{"title":"Get a single metricGroup","openapi":"openapi.yaml GET /v1/metric-groups/{id}","href":"/api/MetricGroups/operation/getMetricGroup"},{"title":"Update a single metricGroup","openapi":"openapi.yaml PUT /v1/metric-groups/{id}","href":"/api/MetricGroups/operation/updateMetricGroup"},{"title":"Delete a single metricGroup","openapi":"openapi.yaml DELETE /v1/metric-groups/{id}","href":"/api/MetricGroups/operation/deleteMetricGroup"},{"title":"Get all metricGroups","openapi":"openapi.yaml GET /v1/metric-groups","href":"/api/MetricGroups/operation/listMetricGroups"},{"title":"Create a single metricGroup","openapi":"openapi.yaml POST /v1/metric-groups","href":"/api/MetricGroups/operation/createMetricGroup"}]},{"group":"Teams","pages":[{"title":"Get a single team","openapi":"openapi.yaml GET /v1/teams/{id}","href":"/api/Teams/operation/getTeam"},{"title":"Update a single team","openapi":"openapi.yaml PUT /v1/teams/{id}","href":"/api/Teams/operation/updateTeam"},{"title":"Delete a single team","openapi":"openapi.yaml DELETE /v1/teams/{id}","href":"/api/Teams/operation/deleteTeam"},{"title":"Get all teams","openapi":"openapi.yaml GET /v1/teams","href":"/api/Teams/operation/listTeams"},{"title":"Create a single team","openapi":"openapi.yaml POST /v1/teams","href":"/api/Teams/operation/createTeam"},{"title":"Add members to team","openapi":"openapi.yaml POST /v1/teams/{id}/members","href":"/api/Teams/operation/addTeamMembers"},{"title":"Remove members from team","openapi":"openapi.yaml DELETE /v1/teams/{id}/members","href":"/api/Teams/operation/removeTeamMember"}]},{"group":"Experiment Templates","pages":[{"title":"Get a single experimentTemplate","openapi":"openapi.yaml GET /v1/experiment-templates/{id}","href":"/api/ExperimentTemplates/operation/getExperimentTemplate"},{"title":"Update a single experimentTemplate","openapi":"openapi.yaml PUT /v1/experiment-templates/{id}","href":"/api/ExperimentTemplates/operation/updateExperimentTemplate"},{"title":"Delete a single experimentTemplate","openapi":"openapi.yaml DELETE /v1/experiment-templates/{id}","href":"/api/ExperimentTemplates/operation/deleteExperimentTemplate"},{"title":"Get all experimentTemplates","openapi":"openapi.yaml GET /v1/experiment-templates","href":"/api/ExperimentTemplates/operation/listExperimentTemplates"},{"title":"Create a single experimentTemplate","openapi":"openapi.yaml POST /v1/experiment-templates","href":"/api/ExperimentTemplates/operation/createExperimentTemplate"},{"title":"Bulk create or update experiment templates","openapi":"openapi.yaml POST /v1/experiment-templates/bulk-import","href":"/api/ExperimentTemplates/operation/bulkImportExperimentTemplates"}]},{"group":"Analytics Explorations","pages":[{"title":"Create a Metric based visualization","openapi":"openapi.yaml POST /v1/product-analytics/metric-exploration","href":"/api/AnalyticsExplorations/operation/postMetricExploration"},{"title":"Run a Fact Table based visualization","openapi":"openapi.yaml POST /v1/product-analytics/fact-table-exploration","href":"/api/AnalyticsExplorations/operation/postFactTableExploration"},{"title":"Create a Data Source based visualization","openapi":"openapi.yaml POST /v1/product-analytics/data-source-exploration","href":"/api/AnalyticsExplorations/operation/postDataSourceExploration"},{"title":"Create a SQL based visualization","openapi":"openapi.yaml POST /v1/product-analytics/sql-exploration","href":"/api/AnalyticsExplorations/operation/postSqlExploration"},{"title":"Run a Funnel based visualization","openapi":"openapi.yaml POST /v1/product-analytics/funnel-exploration","href":"/api/AnalyticsExplorations/operation/postFunnelExploration"},{"title":"Run a User Journey based visualization","openapi":"openapi.yaml POST /v1/product-analytics/journey-exploration","href":"/api/AnalyticsExplorations/operation/postJourneyExploration"},{"title":"Search Product Analytics resources","openapi":"openapi.yaml GET /v1/product-analytics/search","href":"/api/AnalyticsExplorations/operation/searchProductAnalyticsResources"},{"title":"List columns available to a Product Analytics exploration","openapi":"openapi.yaml GET /v1/product-analytics/columns","href":"/api/AnalyticsExplorations/operation/getProductAnalyticsColumns"},{"title":"Fetch values for Product Analytics string columns","openapi":"openapi.yaml POST /v1/product-analytics/column-values","href":"/api/AnalyticsExplorations/operation/getProductAnalyticsColumnValues"},{"title":"Get a Product Analytics exploration","openapi":"openapi.yaml GET /v1/product-analytics/explorations/{id}","href":"/api/AnalyticsExplorations/operation/getProductAnalyticsExploration"}]},{"group":"Ramp Schedule Templates","pages":[{"title":"Get a single rampScheduleTemplate","openapi":"openapi.yaml GET /v1/ramp-schedule-templates/{id}","href":"/api/RampScheduleTemplates/operation/getRampScheduleTemplate"},{"title":"Update a single rampScheduleTemplate","openapi":"openapi.yaml PUT /v1/ramp-schedule-templates/{id}","href":"/api/RampScheduleTemplates/operation/updateRampScheduleTemplate"},{"title":"Delete a single rampScheduleTemplate","openapi":"openapi.yaml DELETE /v1/ramp-schedule-templates/{id}","href":"/api/RampScheduleTemplates/operation/deleteRampScheduleTemplate"},{"title":"Get all rampScheduleTemplates","openapi":"openapi.yaml GET /v1/ramp-schedule-templates","href":"/api/RampScheduleTemplates/operation/listRampScheduleTemplates"},{"title":"Create a single rampScheduleTemplate","openapi":"openapi.yaml POST /v1/ramp-schedule-templates","href":"/api/RampScheduleTemplates/operation/createRampScheduleTemplate"}]},{"group":"Learnings","pages":[{"title":"Get a single learning","openapi":"openapi.yaml GET /v1/learnings/{id}","href":"/api/Learnings/operation/getLearning"},{"title":"Update a single learning","openapi":"openapi.yaml PUT /v1/learnings/{id}","href":"/api/Learnings/operation/updateLearning"},{"title":"Delete a single learning","openapi":"openapi.yaml DELETE /v1/learnings/{id}","href":"/api/Learnings/operation/deleteLearning"},{"title":"Get all learnings","openapi":"openapi.yaml GET /v1/learnings","href":"/api/Learnings/operation/listLearnings"},{"title":"Create a single learning","openapi":"openapi.yaml POST /v1/learnings","href":"/api/Learnings/operation/createLearning"},{"title":"Search saved Learnings by meaning rather than keyword","openapi":"openapi.yaml POST /v1/learnings/search","href":"/api/Learnings/operation/searchLearnings"}]},{"group":"Holdouts","pages":[{"title":"Get a single holdout","openapi":"openapi.yaml GET /v1/holdouts/{id}","href":"/api/Holdouts/operation/getHoldout"},{"title":"Update a single holdout","openapi":"openapi.yaml PUT /v1/holdouts/{id}","href":"/api/Holdouts/operation/updateHoldout"},{"title":"Get all holdouts","openapi":"openapi.yaml GET /v1/holdouts","href":"/api/Holdouts/operation/listHoldouts"},{"title":"Create a single holdout","openapi":"openapi.yaml POST /v1/holdouts","href":"/api/Holdouts/operation/createHoldout"},{"title":"Start the Holdout's Active Period","openapi":"openapi.yaml POST /v1/holdouts/{id}/start","href":"/api/Holdouts/operation/startHoldout"},{"title":"Start the Holdout's Analysis Period","openapi":"openapi.yaml POST /v1/holdouts/{id}/start-analysis","href":"/api/Holdouts/operation/startHoldoutAnalysis"},{"title":"Stop a Holdout","openapi":"openapi.yaml POST /v1/holdouts/{id}/stop","href":"/api/Holdouts/operation/stopHoldout"}]},{"group":"Auto Runs","pages":[{"title":"Get all autoRuns","openapi":"openapi.yaml GET /v1/auto-runs","href":"/api/AutoRuns/operation/listAutoRuns"},{"title":"Create a single autoRun","openapi":"openapi.yaml POST /v1/auto-runs","href":"/api/AutoRuns/operation/createAutoRun"},{"title":"Get a single autoRun","openapi":"openapi.yaml GET /v1/auto-runs/{id}","href":"/api/AutoRuns/operation/getAutoRun"},{"title":"Update a single autoRun","openapi":"openapi.yaml PUT /v1/auto-runs/{id}","href":"/api/AutoRuns/operation/updateAutoRun"},{"title":"Record something an auto run created","openapi":"openapi.yaml POST /v1/auto-runs/{id}/artifacts","href":"/api/AutoRuns/operation/appendAutoRunArtifact"}]},{"group":"Populations","tag":"BETA","pages":[{"title":"Get all populations","openapi":"openapi.yaml GET /v1/populations","href":"/api/Populations/operation/listPopulations"},{"title":"Create a single population","openapi":"openapi.yaml POST /v1/populations","href":"/api/Populations/operation/createPopulation"},{"title":"Get a single population","openapi":"openapi.yaml GET /v1/populations/{id}","href":"/api/Populations/operation/getPopulation"},{"title":"Update a single population","openapi":"openapi.yaml PUT /v1/populations/{id}","href":"/api/Populations/operation/updatePopulation"},{"title":"Delete a single population","openapi":"openapi.yaml DELETE /v1/populations/{id}","href":"/api/Populations/operation/deletePopulation"}]}]},{"group":"Models","pages":[{"title":"Aggregated Fact Table","href":"/api/AggregatedFactTable_model"},{"title":"Analytics Exploration","href":"/api/AnalyticsExploration_model"},{"title":"Archetype","href":"/api/Archetype_model"},{"title":"Attribute","href":"/api/Attribute_model"},{"title":"Auto Run","href":"/api/AutoRun_model"},{"title":"Code Ref","href":"/api/CodeRef_model"},{"title":"Config","href":"/api/Config_model"},{"title":"Config Key Usage","href":"/api/ConfigKeyUsage_model"},{"title":"Config Lineage","href":"/api/ConfigLineage_model"},{"title":"Config References","href":"/api/ConfigReferences_model"},{"title":"Config Revision","href":"/api/ConfigRevision_model"},{"title":"Config Revision Activity Log Entry","href":"/api/ConfigRevisionActivityLogEntry_model"},{"title":"Config Revision Ref","href":"/api/ConfigRevisionRef_model"},{"title":"Config Revision Review","href":"/api/ConfigRevisionReview_model"},{"title":"Config Schema Export","href":"/api/ConfigSchemaExport_model"},{"title":"Config Schema Source","href":"/api/ConfigSchemaSource_model"},{"title":"Config Schema Verify","href":"/api/ConfigSchemaVerify_model"},{"title":"Config Schema Warning","href":"/api/ConfigSchemaWarning_model"},{"title":"Confirmation","href":"/api/Confirmation_model"},{"title":"Confirmation Held","href":"/api/ConfirmationHeld_model"},{"title":"Constant","href":"/api/Constant_model"},{"title":"Constant References","href":"/api/ConstantReferences_model"},{"title":"Constant Revision","href":"/api/ConstantRevision_model"},{"title":"Constant Revision Activity Log Entry","href":"/api/ConstantRevisionActivityLogEntry_model"},{"title":"Constant Revision Ref","href":"/api/ConstantRevisionRef_model"},{"title":"Constant Revision Review","href":"/api/ConstantRevisionReview_model"},{"title":"Contextual Bandit","href":"/api/ContextualBandit_model"},{"title":"Contextual Bandit Query","href":"/api/ContextualBanditQuery_model"},{"title":"Custom Field","href":"/api/CustomField_model"},{"title":"Custom Hook","href":"/api/CustomHook_model"},{"title":"Dashboard","href":"/api/Dashboard_model"},{"title":"Data Source","href":"/api/DataSource_model"},{"title":"Dimension","href":"/api/Dimension_model"},{"title":"Environment","href":"/api/Environment_model"},{"title":"Event User","href":"/api/EventUser_model"},{"title":"Experiment","href":"/api/Experiment_model"},{"title":"Experiment Rule","href":"/api/Experiment Rule_model"},{"title":"Experiment Analysis Settings","href":"/api/ExperimentAnalysisSettings_model"},{"title":"Experiment Decision Framework Settings","href":"/api/ExperimentDecisionFrameworkSettings_model"},{"title":"Experiment Metric","href":"/api/ExperimentMetric_model"},{"title":"Experiment Metric Override Entry","href":"/api/ExperimentMetricOverrideEntry_model"},{"title":"Experiment Results","href":"/api/ExperimentResults_model"},{"title":"Experiment Snapshot","href":"/api/ExperimentSnapshot_model"},{"title":"Experiment Template","href":"/api/ExperimentTemplate_model"},{"title":"Experiment With Enhanced Status","href":"/api/ExperimentWithEnhancedStatus_model"},{"title":"Fact Metric","href":"/api/FactMetric_model"},{"title":"Fact Table","href":"/api/FactTable_model"},{"title":"Fact Table Column","href":"/api/FactTableColumn_model"},{"title":"Fact Table Filter","href":"/api/FactTableFilter_model"},{"title":"Feature Base Rule","href":"/api/FeatureBaseRule_model"},{"title":"Feature Contextual Bandit Ref Rule","href":"/api/FeatureContextualBanditRefRule_model"},{"title":"Feature Definition","href":"/api/FeatureDefinition_model"},{"title":"Feature Environment V1","href":"/api/FeatureEnvironmentV1_model"},{"title":"Feature Environment V2","href":"/api/FeatureEnvironmentV2_model"},{"title":"Feature Experiment Ref Rule","href":"/api/FeatureExperimentRefRule_model"},{"title":"Feature Experiment Rule","href":"/api/FeatureExperimentRule_model"},{"title":"Feature Force Rule","href":"/api/FeatureForceRule_model"},{"title":"Feature Revision Ref","href":"/api/FeatureRevisionRef_model"},{"title":"Feature Revision Summary","href":"/api/FeatureRevisionSummary_model"},{"title":"Feature Revision V1","href":"/api/FeatureRevisionV1_model"},{"title":"Feature Revision V2","href":"/api/FeatureRevisionV2_model"},{"title":"Feature Rollout Rule","href":"/api/FeatureRolloutRule_model"},{"title":"Feature Rule V1","href":"/api/FeatureRuleV1_model"},{"title":"Feature Rule V2","href":"/api/FeatureRuleV2_model"},{"title":"Feature Safe Rollout Rule","href":"/api/FeatureSafeRolloutRule_model"},{"title":"Feature V1","href":"/api/FeatureV1_model"},{"title":"Feature V2","href":"/api/FeatureV2_model"},{"title":"Feature With Revisions V1","href":"/api/FeatureWithRevisionsV1_model"},{"title":"Feature With Revisions V2","href":"/api/FeatureWithRevisionsV2_model"},{"title":"Holdout","href":"/api/Holdout_model"},{"title":"Information Schema","href":"/api/InformationSchema_model"},{"title":"Information Schema Table","href":"/api/InformationSchemaTable_model"},{"title":"Interleaving","href":"/api/Interleaving_model"},{"title":"Interleaving Exposure Query","href":"/api/InterleavingExposureQuery_model"},{"title":"Interleaving Snapshot","href":"/api/InterleavingSnapshot_model"},{"title":"Interleaving Snapshot Status","href":"/api/InterleavingSnapshotStatus_model"},{"title":"Learning","href":"/api/Learning_model"},{"title":"Lookback Override","href":"/api/LookbackOverride_model"},{"title":"Member","href":"/api/Member_model"},{"title":"Metric","href":"/api/Metric_model"},{"title":"Metric Analysis","href":"/api/MetricAnalysis_model"},{"title":"Metric Group","href":"/api/MetricGroup_model"},{"title":"Metric Usage","href":"/api/MetricUsage_model"},{"title":"Namespace","href":"/api/Namespace_model"},{"title":"Namespace Experiment Member","href":"/api/NamespaceExperimentMember_model"},{"title":"Organization","href":"/api/Organization_model"},{"title":"Pagination Fields","href":"/api/PaginationFields_model"},{"title":"Population","href":"/api/Population_model"},{"title":"Project","href":"/api/Project_model"},{"title":"Query","href":"/api/Query_model"},{"title":"Ramp Schedule","href":"/api/RampSchedule_model"},{"title":"Ramp Schedule Template","href":"/api/RampScheduleTemplate_model"},{"title":"Report","href":"/api/Report_model"},{"title":"Require Review Rule","href":"/api/RequireReviewRule_model"},{"title":"Require Review Rule Input","href":"/api/RequireReviewRuleInput_model"},{"title":"Revision Id Ref","href":"/api/RevisionIdRef_model"},{"title":"Safe Rollout Rule","href":"/api/Safe Rollout Rule_model"},{"title":"Saved Group","href":"/api/SavedGroup_model"},{"title":"Saved Group Approval Rule","href":"/api/SavedGroupApprovalRule_model"},{"title":"Saved Group Reference Resource","href":"/api/SavedGroupReferenceResource_model"},{"title":"Saved Group References","href":"/api/SavedGroupReferences_model"},{"title":"Saved Group Revision","href":"/api/SavedGroupRevision_model"},{"title":"Saved Group Revision Activity Log Entry","href":"/api/SavedGroupRevisionActivityLogEntry_model"},{"title":"Saved Group Revision Ref","href":"/api/SavedGroupRevisionRef_model"},{"title":"Saved Group Revision Review","href":"/api/SavedGroupRevisionReview_model"},{"title":"Saved Group Upload","href":"/api/SavedGroupUpload_model"},{"title":"Schedule Rule","href":"/api/ScheduleRule_model"},{"title":"Scheduled Stop Plan","href":"/api/ScheduledStopPlan_model"},{"title":"Sdk Connection","href":"/api/SdkConnection_model"},{"title":"Segment","href":"/api/Segment_model"},{"title":"Settings","href":"/api/Settings_model"},{"title":"Targeting Rule","href":"/api/Targeting Rule_model"},{"title":"Targeting Review Rule","href":"/api/TargetingReviewRule_model"},{"title":"Team","href":"/api/Team_model"},{"title":"Visual Change","href":"/api/VisualChange_model"},{"title":"Visual Changeset","href":"/api/VisualChangeset_model"},{"title":"Visual Editor Cb Experiment Stub","href":"/api/VisualEditorCbExperimentStub_model"}]}]}]},"basePath":"","title":"Create a ramp schedule - GrowthBook Documentation","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-DV-WToSZ.js","dist-CBUH0-zX.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-CR-RHrVC.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-C945cI-W.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","AssistantPageLink-BmARFYNC.js"]}