Feature Access
Which CRS features a channel / account / user can see.
📄️ List rules
Every filter is optional and narrows independently. Omit all of them for the whole configuration.
📄️ Create or update a rule
Upsert keyed by (featureKey, channelId, agentGroupId, userId) — resending the same combination flips its `enabled` rather than adding a row. Leave a scope field out to mean 'any'. A rule with no channel, agent group or user cannot be disabled: a feature with no rules is already denied, and storing a global off would shadow every narrower grant.
📄️ The configurable features
Every feature key the CRS understands, with its display label and the axis it is normally configured on (CHANNEL_AGENT_GROUP or USER). The scope is advisory — a channel-scoped feature can still carry a user rule, which is how you revoke it for one person.
📄️ What a user actually resolves to
The feature list the CRS would report for this user, each with the rule that decided it and the caller's channels and accounts. Use it to answer 'why can't they see this?' — a feature missing from `decisions` entirely has no matching rule at all.
📄️ Delete a rule
The next tier down decides the feature afterwards.