Publishes product.activationRule.*; null publishes nothing (scripts, tests).
Protected ReadonlycacheProtected ReadonlydbStaticinstanceThe process default: built from each dependency's own instance().
ProtectedbustAfter a committed write: the folded-get keys (a tag bust no-ops without
Valkey), then every page through the collection tag.
ProtectedcachedServes input's page from the cache, else runs query and caches it.
OptionalcustomerId?: stringExternal id; required when type='CUSTOMER'. On a cross-route rule
it is a scope column: the rule applies to this customer only.
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 (e.g. Reg E 30-day notice).
Optionallabel?: stringOptionalmatcher?: Matcher | undefinedOptionaltype?: "CUSTOMER" | "ADMIN"Clear each customer's membership tag and each record tag wherever cached,
and always this namespace's collection tag. keys are exact deletes in this
instance's key space: the only bust a null client honours.
OptionalcreatedAt?: DbTimestampCriteria<Instant>OptionalcustomerIds?: string[]Optionalids?: string[]OptionalorderBy?: RuleOrderByCriterion[]Optionalpage?: numberOptionalpageSize?: numberOptionalproductCategories?: ProductCategory[]Matches cross-route rules scoped to these categories.
OptionalproductIds?: string[]A route rule's route product, or a cross-route rule's scope product.
OptionalrouteIds?: string[]Matches route rules only.
Optionalscopes?: ("ROUTE" | "CROSS_ROUTE")[]ROUTE rules have a route; CROSS_ROUTE rules do not.
Optionalstatuses?: ("ACTIVE" | "DISABLED")[]Optionaltypes?: ("CUSTOMER" | "ADMIN")[]OptionalupdatedAt?: DbTimestampCriteria<Instant>OptionalvendorIds?: Vendor[]A route rule's route vendor, or a cross-route rule's scope vendor.
ProtectedsearchTags for a page: the scope its query searched (each customer's membership
tag, else the collection tag), so an empty page is bustable too, plus the
records it projects and the fields that chose or ordered its rows.
The rule's scope (route, or category / vendor / product / customer) is fixed at create; a cross-route rule stays DENY.
Admin-tier CRUD over
product_activation_rule: any tier on a route, and ADMIN DENY-only cross-route rules. The scope is fixed at create; see docs/PRODUCT_SERVICES.md § Cross-route activation rules.