Protected ReadonlydbStaticinstanceThe process default: built from each dependency's own instance().
Optionaldescription?: stringOptionaleffectiveFrom?: InstantWhen this version becomes effective. Defaults to now() at the DB
layer when omitted. Pass a future Temporal.Instant to schedule a
change.
Optionallabel?: stringOptionalmatcher?: MatcherReturns activation rules visible to this customer:
customerId IS NULL)type='ADMIN', customerId=input.customerId)type='CUSTOMER', customerId=input.customerId)Pass types: ["CUSTOMER"] from a controller to restrict to the customer's
own writable slice. Write paths (create/update/delete) always operate
on the CUSTOMER slice regardless of this filter.
Customer-tier CRUD over
product_activation_rule. Always operates on thetype='CUSTOMER'slice. Customer rules can only opt the customer OUT of routes (value: "DENY") — opting back in is reserved for admin tier (CUSTOMER_CANNOT_ACTIVATEon bothcreate()andupdate()).Identity / version split: see ProductActivationRuleAdminService for the full description.
Route rules only. A cross-route rule is ADMIN-only: a customer cannot write one (
product_activation_rule_cross_route_adminrefuses a CUSTOMER row with no route), andsearch/evaluateinner-join the route, so they never surface one.Internal admins must use
ProductActivationRuleAdminServiceinstead.