The Feature Management Service defines feature flags and typed configuration values that products expose to plans and subscriptions. Features are global and reusable across products once explicitly associated, and they always participate in the resolution hierarchy: subscription override → plan value → feature default.
Feature keys are immutable and globally unique.
valueType determines how defaults, plan values, and overrides are validated (toggle, numeric, text).
Features cannot be deleted while referenced by products, plan feature values, or subscription overrides.
UpdateFeatureDto: Same fields, all optional; valueType and defaultValue must remain compatible when both provided.
Property
Type
Required
Constraints
Key
string
Yes
1–255 chars, lowercase alphanumeric plus -.
DisplayName
string
Yes
1–255 chars.
Description
string
No
≤1000 chars.
ValueType
string
Yes
toggle, numeric, or text.
DefaultValue
string
Yes
Must match ValueType.
GroupName
string
No
≤255 chars.
Validator
Dictionary<string, object?>
No
Custom validation metadata.
Metadata
Dictionary<string, object?>
No
JSON-safe metadata.
UpdateFeatureDto: Same fields, all optional.
FeatureDto
Field
Type
Description
key
string
Immutable key.
displayName
string
Human-readable name.
description
string \| null
Optional description.
valueType
string
toggle, numeric, or text.
defaultValue
string
Stored default value.
groupName
string \| null
Group label.
status
string
active or archived.
validator
Record<string, unknown> \| null
Validator metadata.
metadata
Record<string, unknown> \| null
Arbitrary metadata.
createdAt
string
ISO timestamp.
updatedAt
string
ISO timestamp.
Property
Type
Description
Key
string
Immutable key.
DisplayName
string
Human-readable name.
Description
string?
Optional description.
ValueType
string
toggle, numeric, or text.
DefaultValue
string
Stored default value.
GroupName
string?
Group label.
Status
string
active or archived.
Validator
Dictionary<string, object?>?
Validator metadata.
Metadata
Dictionary<string, object?>?
Arbitrary metadata.
CreatedAt
string
ISO timestamp.
UpdatedAt
string
ISO timestamp.
FeatureFilterDto
Field
Type
Description
status
'active' \| 'archived'
Lifecycle filter.
valueType
'toggle' \| 'numeric' \| 'text'
Type filter.
groupName
string
Group filter.
search
string
Text search term.
limit
number
1–100 (default 50).
offset
number
≥0 (default 0).
sortBy
'displayName' \| 'createdAt'
Sort column.
sortOrder
'asc' \| 'desc'
Sort direction.
Property
Type
Description
Status
string
active or archived.
ValueType
string
toggle, numeric, or text.
GroupName
string
Group filter.
Search
string
Text search term.
Limit
int
1–100 (default 50).
Offset
int
≥0 (default 0).
SortBy
string
displayName or createdAt.
SortOrder
string
asc or desc; default asc.
Related Workflows
Products must associate features before plans can set values (ProductManagementService.associateFeature).
Plan-level values (PlanManagementService.setFeatureValue) override defaults but are superseded by subscription overrides.
Subscription overrides (SubscriptionManagementService.addFeatureOverride) take precedence in the feature resolution hierarchy enforced by FeatureCheckerService.