Optionaldata?: ProductRouteVersionDataPer-route operational knobs (timezone, quote TTL, ...). Persisted
to product_route_version.data. Defaults to {} when omitted.
OptionaleffectiveFrom?: InstantWhen this version becomes effective. Defaults to now() at the DB
layer when omitted. Pass a future Temporal.Instant to schedule a
route change.
Optionallabel?: string | nullOptionalmatcher?: MatcherSoft-delete a route. Rules attached to the route persist until removed.
Read the full append-only version history for a route, newest first.
Returns null when the route doesn't exist (or is soft-deleted).
Update a route. priority and status edits update the identity row in
place; matcher/vendor/label edits insert a new version and flip the
pointer. Both can happen in the same transaction. productName is part
of identity and not editable. Per-vendor fee/limit terms aren't editable
here — those live on product_vendor (use the vendor admin service).
Admin-tier CRUD over
product_route.Identity / version split:
product_routeis the lifecycle row (status, priority, deletedAt).product_route_versioncarries the routing decision: which vendor + which matcher. Per-vendor fee/limit deal terms live onproduct_vendorand are shared across every route pinned to that vendor; edit those through the vendor admin service.Soft-delete is the terminal signal.