Features¶
A feature is a single capability key in your catalog. Each has a kind that never changes after create.
| Kind | Meaning | Check result |
|---|---|---|
flag |
On/off capability (sso, csv_export) |
allowed: true \| false |
limit |
Numeric entitlement (seats, storage_gb) |
limit: N \| null (null = unlimited) |
config |
A value per plan (support_tier, export_timeout) |
value of the feature's value_type, or null when nothing sets it |
- One feature = one gate. Don’t overload a key to mean three product behaviors.
- Keys are an API contract with your app — rename means a code change.
- Prefer a limit when the product question is “how many,” not “yes/no.”
- Use a config when the question is “which one” or “what setting”: a support tier, a region, a timeout, a model name.
- e10s does not track usage against limits — only the entitled value. You own the count, the period, and the reset (periodic quotas).
Config value types¶
A config feature's value_type is set at create and never changes, like kind.
value_type |
Values | Example |
|---|---|---|
string |
Any text up to 2,000 characters, "" included |
"#0a84ff" |
number |
Any finite number | 30.5 |
boolean |
true or false |
false |
enum |
One of the feature's options |
"priority" |
json |
Any JSON except null, up to 8 KB |
{ "name": "fast", "max_tokens": 4096 } |
- No default. A config feature that isn't on the subscriber's plan (and has no override) checks as
value: nullwithsource: "none". Your app picks the fallback. To give every subscriber a value, put the feature on every plan. nullis never a value you set. To unset one, remove the grant or override.- A
booleanconfig differs from aflagonly when nothing sets it: a flag isallowed: false, a boolean config isnull. Use a flag for access; use a boolean config for a setting. enumoptions can be added or reordered any time. Removing an option that a plan grant or live override still uses is refused with409 OPTION_IN_USE, naming where it's used. Removing an unused option is allowed, but check your code first: it may still compare against that value. Fields and endpoints: Features API.