Internal

Set a feature flag's global default (platform admin)

Upserts the flag's #DEFAULT row on the config table, the fast no-deploy on/off toggle layered over the registry's compile-time default. Rejected with 400 for a key the registry does not know. The durable default stays the Go registry constant (a cold or errored resolver falls back to it); this row only flips the live value on top of it. reason is recorded in the admin audit log.

put/v1/admin/feature-flags/{key}

Path parameters

keystring required

Request body

enabledboolean required
reasonstring required

Why the change is made; recorded in the admin audit log, never on the row

Response

Applied

codeDefaultboolean required

Registry Default: the outage/cold floor. false for an orphaned key (its zero value).

dashboardboolean required

Surfaced to the customer dashboard (the /v1/me flags map)

descriptionstring

Operator-facing copy from the registry; empty for an orphaned key

effectiveDefaultboolean required

storedDefault when set, else codeDefault: what a subject with no override resolves to

keystring required

Stable flag key (uppercase-with-underscores)

orphanedboolean required

Stored rows exist for a key the registry does not know; it resolves to false at runtime and is cleaned up out of band, never toggled here

scope'global' | 'org' | 'node' required

Which override rows the flag may carry: a global flag has only a default, an org/node flag also takes per-subject overrides. For an orphaned key this is inferred from the subject types of its stored rows.

storedDefaultboolean

The stored #DEFAULT row's value, when one exists; omitted when only the code default applies

storedDefaultUpdatedAtstring

When the #DEFAULT row was last written (RFC3339)

storedDefaultUpdatedBystring

Who last wrote the #DEFAULT row

Changes

Changed in 1 of the 20 revisions of this API.1