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

    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.

    Type Declaration

    • id: string
    • name: string

      Composed route display name: ${productName} · ${vendorName}.

    • productId: ProductName
    • productName: string

      Human display name from product.name (NOT NULL).

    • vendorId: Vendor
    • vendorName: string

      Human display name from product_vendor.name (NOT NULL).