@cfxlabsinc/b2b-services
    Preparing search index...

    Type Alias AdminProductRoute

    AdminProductRoute: Omit<SelectProductRoute, "id" | "productId" | "vendorId"> & Pick<
        SelectProductRouteVersion,
        | "matcher"
        | "label"
        | "data"
        | "fixedFeeAmount"
        | "variableFeeBps"
        | "feeVisible"
        | "limitTransactionMinUsd"
        | "limitTransactionMaxUsd"
        | "limit24hMaxUsd"
        | "limit24hMaxCount"
        | "limit7dMaxUsd"
        | "limit7dMaxCount"
        | "limit30dMaxUsd"
        | "limit30dMaxCount",
    > & {
        id: string;
        matcherReferences: MatcherReferences;
        name: string;
        productId: ProductName;
        productName: string;
        vendorId: Vendor;
        vendorMandatoryMatcher: Matcher;
        vendorName: string;
    }

    Admin-tier view of a route = identity columns + the routing fields from the current version (matcher + label + per-route fee and limit ceilings)

    • the pinned vendor's slug. id is the identity row's external id.

    Vendor metadata (bank linkage) is NOT surfaced here — it belongs to the vendor domain. Consumers that need it fetch the vendor separately via ProductVendorAdminService.get({ id: route.vendor }). Keeping the route surface free of vendor identity ensures a vendor edit doesn't silently change the shape of every route.

    Type Declaration

    • id: string
    • matcherReferences: MatcherReferences

      Display names for the external ids referenced by this route's matcher AND the vendor matcher above — both render together, so both resolve into one map. See matcherReferencesSql.

    • name: string

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

    • productId: ProductName
    • productName: string

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

    • vendorId: Vendor
    • vendorMandatoryMatcher: Matcher

      The vendor's system-owned physics matcher, AND-ed with this route's own matcher at resolve time. "ALWAYS" when the vendor is unconstrained. Projected here so admin surfaces can render it without a second query — the same reason vendorName rides along.

    • vendorName: string

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