@cfxlabsinc/b2b-services
    Preparing search index...
    AdminProductRoute: Omit<SelectProductRoute, "id" | "productId"> & Pick<
        SelectProductRouteVersion,
        "matcher"
        | "label"
        | "data",
    > & { id: string; productName: ProductName; vendor: Vendor }

    Admin-tier view of a route = identity columns + the routing fields from the current version (matcher + label) + the pinned vendor's slug. id is the identity row's external id.

    Vendor metadata + per-vendor deal terms (fees, limits, bank linkage) are NOT surfaced here — they belong to the vendor domain. Consumers that need those fetch the vendor separately via ProductVendorAdminService.get({ id: route.vendor }). Keeping the route surface free of vendor terms ensures a vendor edit doesn't silently change the shape of every route.