Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
156 changes: 78 additions & 78 deletions .speakeasy/gen.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .speakeasy/gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ generation:
generateNewTests: true
skipResponseBodyAssertions: false
cli:
version: 2.0.0
version: 2.0.1
additionalDependencies: {}
cliName: growthbook
distribution:
Expand Down
49 changes: 2 additions & 47 deletions .speakeasy/out.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5939,9 +5939,7 @@ paths:
}

```
parameters:
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
parameters: []
requestBody:
required: true
content:
Expand Down Expand Up @@ -6559,8 +6557,6 @@ paths:
Other top-level fields are patch-merged: omit a field to leave it unchanged. The `rules` field, when supplied, replaces the entire `rules` array in one operation. To preserve existing rules, fetch the Feature Flag, update the returned `rules` array, and send the complete array back. Safe-rollout rules round-trip through `safeRolloutId`; use `POST /v2/features/:id/revisions/:version/rules` to create new ones.
parameters:
- $ref: '#/components/parameters/id'
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -8062,8 +8058,6 @@ paths:
schema:
type: string
description: Revision version number, or "new" to auto-create a draft (only where supported).
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -8437,8 +8431,6 @@ paths:
schema:
type: string
description: Revision version number, or "new" to auto-create a draft (only where supported).
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -8915,8 +8907,6 @@ paths:
type: string
description: Revision version number, or "new" to auto-create a draft (only where supported).
- $ref: '#/components/parameters/ruleId'
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -10929,8 +10919,6 @@ paths:
schema:
type: string
- $ref: '#/components/parameters/version'
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -20243,9 +20231,7 @@ paths:
summary: Create a single config
tags:
- configs
parameters:
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
parameters: []
requestBody:
required: true
content:
Expand Down Expand Up @@ -20839,8 +20825,6 @@ paths:
schema:
description: The key of the config
type: string
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -21046,7 +21030,6 @@ paths:
schema:
description: The key of the config
type: string
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -21472,8 +21455,6 @@ paths:
schema:
type: string
description: Revision version number, or "new" to auto-create a draft (only where supported).
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -21574,8 +21555,6 @@ paths:
schema:
type: string
description: Revision version number, or "new" to auto-create a draft (only where supported).
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -21666,8 +21645,6 @@ paths:
schema:
type: string
description: Revision version number, or "new" to auto-create a draft (only where supported).
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -21749,8 +21726,6 @@ paths:
schema:
type: string
description: Revision version number, or "new" to auto-create a draft (only where supported).
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -22415,8 +22390,6 @@ paths:
schema:
type: string
- $ref: '#/components/parameters/version'
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -22533,8 +22506,6 @@ paths:
schema:
type: string
- $ref: '#/components/parameters/version'
- $ref: '#/components/parameters/skipSchemaValidation'
- $ref: '#/components/parameters/ignoreWarnings'
requestBody:
required: true
content:
Expand Down Expand Up @@ -45048,22 +45019,6 @@ components:
description: >-
Whether to include archived features. Defaults to `false` (non-archived only). Pass `true` to include archived features alongside non-archived ones.
type: boolean
skipSchemaValidation:
name: skipSchemaValidation
in: query
description: Deprecated — pass `skipSchemaValidation` in the request body instead.
schema:
description: Deprecated — pass `skipSchemaValidation` in the request body instead.
deprecated: true
type: boolean
ignoreWarnings:
name: ignoreWarnings
in: query
description: Deprecated — pass `ignoreWarnings` in the request body instead.
schema:
description: Deprecated — pass `ignoreWarnings` in the request body instead.
deprecated: true
type: boolean
format:
name: format
in: query
Expand Down
18 changes: 18 additions & 0 deletions .speakeasy/overlay.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1031,3 +1031,21 @@ actions:
update: { required: false }
- target: $..[?(@.operationId=="postConfigRevisionReopen")].requestBody
update: { required: false }
# 5. Drop the deprecated `ignoreWarnings` / `skipSchemaValidation` QUERY params.
#
# The back-end moved both into the request body (growthbook#6397) and kept the
# query params only for back-compat — the spec marks them `deprecated: true`
# and says "pass ... in the request body instead". But keeping them collides
# with the identically-named body fields, and Speakeasy resolves that collision
# by prefixing the ENTIRE body with `--body-param.` — so two deprecated params
# renamed 142 flags across 15 commands in 2.0.0, including `--description` and
# `--tags`, which never collided with anything.
#
# Removing them lets the body flatten again and restores the 1.x flag names.
# Scripts passing `--ignore-warnings` keep working: the flat body field claims
# that name and lands on the API's intended path. (Their schemas are also
# anyOf-const unions, which degrade to value-swallowing string flags — cli#52.)
- target: $..[?(@['$ref']=="#/components/parameters/ignoreWarnings")]
remove: true
- target: $..[?(@['$ref']=="#/components/parameters/skipSchemaValidation")]
remove: true
8 changes: 4 additions & 4 deletions .speakeasy/workflow.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ speakeasyVersion: 1.794.0
sources:
GrowthBook REST API:
sourceNamespace: growth-book-rest-api
sourceRevisionDigest: sha256:c6ffe05e6a78c0734a58a2913f9f6cf725193d807011cd048b2cb343868071ce
sourceBlobDigest: sha256:15761cd6e3508863b8b118183085efffe5aea2a6dc6d346e6cbf03a3e8455133
sourceRevisionDigest: sha256:0713a3a0f47db12cdaa85784b4be0bf3e70da4a9923ce5dab19ea981ce545d1b
sourceBlobDigest: sha256:4af49337b620c29eaa9baceb5d0b3f7f76da936b8e94013bdaacd5c9d88c84de
tags:
- latest
- 5.0.0
targets:
growthbook:
source: GrowthBook REST API
sourceNamespace: growth-book-rest-api
sourceRevisionDigest: sha256:c6ffe05e6a78c0734a58a2913f9f6cf725193d807011cd048b2cb343868071ce
sourceBlobDigest: sha256:15761cd6e3508863b8b118183085efffe5aea2a6dc6d346e6cbf03a3e8455133
sourceRevisionDigest: sha256:0713a3a0f47db12cdaa85784b4be0bf3e70da4a9923ce5dab19ea981ce545d1b
sourceBlobDigest: sha256:4af49337b620c29eaa9baceb5d0b3f7f76da936b8e94013bdaacd5c9d88c84de
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.794.0
Expand Down
57 changes: 53 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,39 @@

## [Unreleased]

## [2.0.1] - 2026-08-17

A narrow fix: 2.0.0 unintentionally renamed the request-body flags, and this restores their
original names. **It does not undo anything else in 2.0.0** — the removals and command renames in
that release still apply, so read the 2.0.0 notes below when upgrading from 1.x.

If you have not already migrated scripts to `--body-param.*`, this release needs no action from
you.

### Fixed

- **`--body-param.` prefixes are gone; request-body flags use their plain names again**
(`--body-param.description` is `--description` once more). 2.0.0 renamed 142 flags across 15
commands as an unintended side effect: the API deprecated the `ignoreWarnings` and
`skipSchemaValidation` *query* parameters in favour of body fields of the same name, and that
name collision made the generator prefix the entire request body. Dropping the deprecated query
parameters removes the collision.

`--ignore-warnings` and `--skip-schema-validation` still work on the same commands — they now
set the body field, which is where the API wants them.

If you already migrated to `--body-param.*`, revert to the plain names.

## [2.0.0] - 2026-08-17

Upgrading from 1.x requires two changes: drop `--merge-now`, and update any renamed
`contextual-bandits` / `contextual-bandit-queries` commands. Both fail loudly (unknown
flag / unknown command) rather than silently misbehaving, so a dry run of your scripts
will surface everything that needs attention.
Upgrading from 1.x: drop `--merge-now`, and update any renamed `contextual-bandits` /
`contextual-bandit-queries` commands. Both fail loudly — unknown flag or unknown command —
rather than silently misbehaving, so a dry run of your scripts will surface what needs
attention.

> **Upgrading to 2.0.1 or later?** Skip the `--body-param.` rename described under "Changed"
> below — it was an unintended side effect and 2.0.1 reverts it. Keep using the plain flag
> names. The rest of this release still applies.

### Removed

Expand All @@ -17,8 +44,30 @@ will surface everything that needs attention.
supports it as part of publish hardening. Scripts passing it will fail with an unknown-flag
error rather than silently not merging.

- **`contextual-bandits start` / `stop` / `refresh` no longer accept a request body** — the
`--body` and `--body-param` flags are gone. These commands now take only `--id`.

### Changed

- **Request-body flags are now prefixed `--body-param.`** on the commands that take a
structured body. For example `growthbook configs update --description X` becomes
`growthbook configs update --body-param.description X`.

> **Reverted in 2.0.1** — this was an unintended side effect, not a deliberate change.
> Upgrade to 2.0.1 and keep using the plain flag names.

Affected commands:

`features create`, `features update`, `configs create`, `configs update`,
`configs archive`, `config-revisions publish`, `config-revisions revert`,
`config-revisions set-metadata`, `config-revisions set-projection`,
`config-revisions set-schema`, `config-revisions set-value`,
`feature-revisions add-rule`, `feature-revisions update-rule`,
`feature-revisions publish`, `feature-revisions set-default-value`.

Passing raw JSON via `--body` is unaffected, and remains the most stable way to script
these commands.

- **`contextual-bandits` and `contextual-bandit-queries` commands renamed** to drop the redundant
group name from every subcommand. These groups were missed by the 1.0.0 naming cleanup; this
finishes it.
Expand Down
18 changes: 8 additions & 10 deletions docs/growthbook_config-revisions_publish.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,14 @@ growthbook config-revisions publish [flags]
### Options

```
--body string Request body as JSON (alternative to individual flags). Can also be provided via stdin.
--body-param.bypass-approval Deprecated and ignored. Approval is bypassed automatically when the caller has Bypass draft approvals access for this resource or when the organization enables the REST API approval bypass. Otherwise, the revision must be approved before it can be published.
--body-param.ignore-warnings Set to true to acknowledge the warnings listed in a blocked response and continue. This covers experiment guards, locked dependents, and references affected by an archive. When the organization treats schema failures as warnings, it also covers schema and invariant warnings. It never bypasses a rejected Custom Hook. On revision publish endpoints, it can also force-publish an out-of-date draft when the caller has Bypass draft approvals access.
--body-param.skip-hooks skipSchemaValidation Set to true to publish despite a Custom Hook rejection. This does not bypass schema validation; use skipSchemaValidation for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.
--body-param.skip-schema-validation skipHooks Set to true to publish despite schema validation errors, failed invariants, or schema changes that invalidate dependent resources. This does not bypass a rejected Custom Hook; use skipHooks for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.
-h, --help help for publish
-i, --ignore-warnings ignoreWarnings Deprecated — pass ignoreWarnings in the request body instead.
-k, --key string [required]
-s, --skip-schema-validation skipSchemaValidation Deprecated — pass skipSchemaValidation in the request body instead.
-v, --version-param string [required]
--body string Request body as JSON (alternative to individual flags). Can also be provided via stdin.
-b, --bypass-approval Deprecated and ignored. Approval is bypassed automatically when the caller has Bypass draft approvals access for this resource or when the organization enables the REST API approval bypass. Otherwise, the revision must be approved before it can be published.
-h, --help help for publish
-i, --ignore-warnings Set to true to acknowledge the warnings listed in a blocked response and continue. This covers experiment guards, locked dependents, and references affected by an archive. When the organization treats schema failures as warnings, it also covers schema and invariant warnings. It never bypasses a rejected Custom Hook. On revision publish endpoints, it can also force-publish an out-of-date draft when the caller has Bypass draft approvals access.
-k, --key string [required]
--skip-hooks skipSchemaValidation Set to true to publish despite a Custom Hook rejection. This does not bypass schema validation; use skipSchemaValidation for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.
--skip-schema-validation skipHooks Set to true to publish despite schema validation errors, failed invariants, or schema changes that invalidate dependent resources. This does not bypass a rejected Custom Hook; use skipHooks for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.
-v, --version-param string [required]
```

### Options inherited from parent commands
Expand Down
Loading