{ "opencollection": "1.0.0", "info": { "name": "GrowthBook REST AnalyticsExplorations feature-revisions API", "version": "1.0.0" }, "request": { "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "items": [ { "info": { "name": "feature-revisions", "type": "folder" }, "items": [ { "info": { "name": "List feature revisions", "type": "http" }, "http": { "method": "GET", "url": "https://api.growthbook.io/api/v1/revisions", "params": [ { "name": "limit", "value": "", "type": "query", "description": "The number of items to return" }, { "name": "offset", "value": "", "type": "query", "description": "How many items to skip (use in conjunction with limit for pagination)" }, { "name": "skipPagination", "value": "", "type": "query", "description": "If true, return all matching items and ignore limit/offset.\nSelf-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1." }, { "name": "featureId", "value": "", "type": "query" }, { "name": "status", "value": "", "type": "query" }, { "name": "author", "value": "", "type": "query" }, { "name": "mine", "value": "", "type": "query", "description": "If true, return only revisions authored by or contributed to by the calling user. Requires a user-scoped API key. Mutually exclusive with `author`." } ] }, "docs": "**Deprecated.** Use [GET /v2/revisions](#operation/listRevisionsV2) instead.\n\nReturns a paginated list of feature revisions across all features in the organization. Optionally filtered by feature, status, author, and/or the calling user's involvement. Results are sorted newest-first." }, { "info": { "name": "List revisions for a feature", "type": "http" }, "http": { "method": "GET", "url": "https://api.growthbook.io/api/v1/features/:id/revisions", "params": [ { "name": "id", "value": "", "type": "path", "description": "The id of the requested resource" }, { "name": "limit", "value": "", "type": "query", "description": "The number of items to return" }, { "name": "offset", "value": "", "type": "query", "description": "How many items to skip (use in conjunction with limit for pagination)" }, { "name": "skipPagination", "value": "", "type": "query", "description": "If true, return all matching items and ignore limit/offset.\nSelf-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1." }, { "name": "status", "value": "", "type": "query" }, { "name": "author", "value": "", "type": "query" } ] }, "docs": "**Deprecated.** Use [GET /v2/features/:id/revisions](#operation/getFeatureRevisionsV2) instead.\n\nReturns a paginated list of revisions for this feature, sorted newest-first. Optionally filtered by status and/or author." }, { "info": { "name": "Create a draft revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions", "params": [ { "name": "id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions](#operation/postFeatureRevisionV2) instead.\n\nCreates a new draft revision branched from the current live revision. A feature can have multiple concurrent drafts; use this to start an isolated line of edits." }, { "info": { "name": "Get the most recent active draft revision", "type": "http" }, "http": { "method": "GET", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/latest", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "mine", "value": "", "type": "query", "description": "If true, return only the most recent active draft authored by or contributed to by the calling user. Requires a user-scoped API key." } ] }, "docs": "**Deprecated.** Use [GET /v2/features/:id/revisions/latest](#operation/getFeatureRevisionLatestV2) instead.\n\nReturns the most recently updated draft revision for the feature. Returns 404 if there is no active draft. Pass `mine=true` to return the most recent draft authored by or contributed to by the calling user (requires a user-scoped API key)." }, { "info": { "name": "Get a single feature revision", "type": "http" }, "http": { "method": "GET", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ] }, "docs": "**Deprecated.** Use [GET /v2/features/:id/revisions/:version](#operation/getFeatureRevisionV2) instead.\n\nReturns the revision at the specified version for this feature. Use `GET /features/{id}/revisions/latest` for the most recent active draft." }, { "info": { "name": "Update revision metadata (comment, title, feature metadata)", "type": "http" }, "http": { "method": "PUT", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/metadata", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [PUT /v2/features/:id/revisions/:version/metadata](#operation/putFeatureRevisionMetadataV2) instead.\n\nUpdates draft-level metadata (`comment`, `title`) and/or feature-level metadata (owner, project, tags, customFields, jsonSchema, etc.). Merge semantics: omitted fields are left unchanged; any provided field replaces the current value (pass an empty string/array/object to clear). Feature metadata changes are staged on the revision and applied to the feature on publish. Changin" }, { "info": { "name": "Set the default value in a draft revision", "type": "http" }, "http": { "method": "PUT", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/default-value", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [PUT /v2/features/:id/revisions/:version/default-value](#operation/putFeatureRevisionDefaultValueV2) instead.\n\nReplaces the feature's default value for this revision. The value must be a string representation matching the feature's value type (e.g. `\"true\"` for booleans, `42` for numbers, a JSON string for JSON features)." }, { "info": { "name": "Set feature-level prerequisites in a draft revision", "type": "http" }, "http": { "method": "PUT", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/prerequisites", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [PUT /v2/features/:id/revisions/:version/prerequisites](#operation/putFeatureRevisionPrerequisitesV2) instead.\n\nReplaces the feature's prerequisite list for this revision. Each prerequisite condition is evaluated against `{ value: }` at SDK eval time — use `value` as the condition key." }, { "info": { "name": "Set holdout in a draft revision", "type": "http" }, "http": { "method": "PUT", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/holdout", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [PUT /v2/features/:id/revisions/:version/holdout](#operation/putFeatureRevisionHoldoutV2) instead.\n\nSets (or clears, via `holdout: null`) the holdout experiment bound to the feature. Holdout linkage side-effects (updating the holdout's linked feature list) are applied on publish." }, { "info": { "name": "Set archived state in a draft revision", "type": "http" }, "http": { "method": "PUT", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/archive", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [PUT /v2/features/:id/revisions/:version/archive](#operation/putFeatureRevisionArchiveV2) instead.\n\nSets whether the feature is archived. Archived features are excluded from SDK payloads on publish." }, { "info": { "name": "Toggle an environment on/off in a draft revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/toggle", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/toggle](#operation/postFeatureRevisionToggleV2) instead.\n\nSets whether the feature is enabled in the given environment as part of the draft. Takes effect on publish." }, { "info": { "name": "Add a rule to a draft revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/rules", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/rules](#operation/postFeatureRevisionRuleAddV2) instead, which accepts rules with unified `allEnvironments`/`environments` scope fields instead of a per-environment `environment` parameter.\n\nAppends a new rule to the end of the rule list for the given environment. A `rule.type` of `force`, `rollout`, `experiment-ref`, or `safe-rollout` determines the accepted shape. Use `rampSchedule` for ramp configuration or `schedule` for a simple " }, { "info": { "name": "Update a rule in a draft revision", "type": "http" }, "http": { "method": "PUT", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/rules/:ruleId", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" }, { "name": "ruleId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [PUT /v2/features/:id/revisions/:version/rules/:ruleId](#operation/putFeatureRevisionRuleV2) instead, which locates rules by `ruleId` in the flat array without an `environment` parameter.\n\nPatches fields on an existing rule. The rule `type` cannot be changed — to convert types, delete and re-add. Fields that don't apply to the current rule type are rejected." }, { "info": { "name": "Delete a rule from a draft revision", "type": "http" }, "http": { "method": "DELETE", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/rules/:ruleId", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" }, { "name": "ruleId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [DELETE /v2/features/:id/revisions/:version/rules/:ruleId](#operation/deleteFeatureRevisionRuleV2) instead, which removes the rule from the flat array without an `environment` parameter.\n\nRemoves the rule from the specified environment. Any pending ramp actions on the draft for this rule are also cleared." }, { "info": { "name": "Reorder rules in an environment", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/rules/reorder", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/rules/reorder](#operation/postFeatureRevisionRulesReorderV2) instead, which reorders the global flat rule array without an `environment` parameter.\n\nReplaces the rule order for the environment. `ruleIds` must contain **exactly** the set of existing rule IDs in that environment — no additions, omissions, or duplicates." }, { "info": { "name": "Set ramp schedule for a rule", "type": "http" }, "http": { "method": "PUT", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/rules/:ruleId/ramp-schedule", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" }, { "name": "ruleId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [PUT /v2/features/:id/revisions/:version/rules/:ruleId/ramp-schedule](#operation/putFeatureRevisionRuleRampScheduleV2) instead.\n\nAttaches (or replaces) a ramp schedule for the rule. Rejects if the rule already has a live ramp schedule — update that directly via PUT /ramp-schedules/{id}. The schedule is created at publish time." }, { "info": { "name": "Remove ramp schedule from a rule", "type": "http" }, "http": { "method": "DELETE", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/rules/:ruleId/ramp-schedule", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" }, { "name": "ruleId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [DELETE /v2/features/:id/revisions/:version/rules/:ruleId/ramp-schedule](#operation/deleteFeatureRevisionRuleRampScheduleV2) instead.\n\nRemoves a pending ramp schedule attached by the draft. If the rule currently has a live ramp schedule, a detach action is queued and applied at publish time." }, { "info": { "name": "Request review for a draft revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/request-review", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/request-review](#operation/postFeatureRevisionRequestReviewV2) instead.\n\nMoves the draft into the `pending-review` state and notifies reviewers." }, { "info": { "name": "Submit a review on a draft revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/submit-review", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/submit-review](#operation/postFeatureRevisionSubmitReviewV2) instead.\n\nSubmits an `approve`, `request-changes`, or `comment` review on the draft. Contributors cannot approve their own drafts, but may submit comments or request changes." }, { "info": { "name": "Get merge status for a draft revision", "type": "http" }, "http": { "method": "GET", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/merge-status", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ] }, "docs": "**Deprecated.** Use [GET /v2/features/:id/revisions/:version/merge-status](#operation/getFeatureRevisionMergeStatusV2) instead.\n\nRuns a dry-run merge of the draft against the current live revision and returns any conflicts. Use this before publishing to preview changes and detect conflicting edits." }, { "info": { "name": "Rebase a draft revision onto the current live version", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/rebase", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/rebase](#operation/postFeatureRevisionRebaseV2) instead.\n\nUpdates the draft's base revision to match the currently-live revision, applying the draft's changes on top. Supply `conflictResolutions` to resolve any conflicting fields.\n\n**Conflict key format changed for v1 clients.** Rules now merge as a single flat array, so the per-rule `envName.ruleId` keys used by older clients are no longer recognized. Valid keys: `defaultValue`, `rul" }, { "info": { "name": "Publish a draft revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/publish", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/publish](#operation/postFeatureRevisionPublishV2) instead.\n\nImmediately publishes a draft revision, making it the live version of the feature. Blocked if the org requires approvals and `bypassApprovalChecks` is off." }, { "info": { "name": "Discard a draft revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/discard", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/discard](#operation/postFeatureRevisionDiscardV2) instead.\n\nPermanently discards a draft revision. Only drafts (never published revisions) can be discarded. Any pending ramp actions staged on the draft are dropped." }, { "info": { "name": "Revert the feature to a prior revision", "type": "http" }, "http": { "method": "POST", "url": "https://api.growthbook.io/api/v1/features/:id/revisions/:version/revert", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "version", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "**Deprecated.** Use [POST /v2/features/:id/revisions/:version/revert](#operation/postFeatureRevisionRevertV2) instead.\n\nCreates a new draft (or immediately publishes) whose content matches the specified historical revision." } ] } ], "bundled": true }