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

    Type Alias AdminProductRoute

    AdminProductRoute: Omit<
        SelectProductRoute,
        | "id"
        | "productId"
        | "productExternalId"
        | "vendorId"
        | "vendorExternalId"
        | "programId"
        | "programExternalId"
        | "currentVersionId",
    > & Pick<
        SelectProductRouteVersion,
        | "matcher"
        | "label"
        | "data"
        | "fixedFeeAmount"
        | "variableFeeBps"
        | "feeVisible"
        | "limitTransactionMinUsd"
        | "limitTransactionMaxUsd"
        | "limit24hMaxUsd"
        | "limit24hMaxCount"
        | "limit7dMaxUsd"
        | "limit7dMaxCount"
        | "limit30dMaxUsd"
        | "limit30dMaxCount",
    > & {
        bankAccountId: string
        | null;
        id: string;
        matcherReferences: MatcherReferences;
        name: string;
        productId: Product["id"];
        productName: Product["name"];
        programId: string | null;
        scheduledVersion: ScheduledRouteVersion | null;
        statusDescription: string;
        vendorId: Vendor;
        vendorName: string;
    }

    Admin-tier view of a route = identity columns + the routing fields from the version in effect (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

    • bankAccountId: string | null

      The account the route moves money through (register external_id).

    • id: string
    • matcherReferences: MatcherReferences

      Display names for the external ids this route's matcher references. See matcherReferencesSql.

    • name: string

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

    • productId: Product["id"]
    • productName: Product["name"]

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

    • programId: string | null

      The program the route belongs to (prog_…): the account's, or the one a sub-account provider's route names.

    • scheduledVersion: ScheduledRouteVersion | null

      The next version to take effect, when one is scheduled. Every version field above is the one in effect now, which is what the resolver reads.

    • statusDescription: string
    • vendorId: Vendor
    • vendorName: string

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