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

    Admin-tier CRUD over product_route.

    Identity / version split: product_route is the lifecycle row (status, priority, deletedAt). product_route_version carries the routing decision: which vendor + which matcher. Per-vendor fee/limit deal terms live on product_vendor and are shared across every route pinned to that vendor; edit those through the vendor admin service.

    Soft-delete is the terminal signal.

    Index

    Constructors

    Properties

    Methods

    Constructors

    Properties

    Methods

    • Parameters

      • input: {
            data?: ProductRouteVersionData;
            effectiveFrom?: Instant;
            label?: string | null;
            matcher?: Matcher;
            productName:
                | "organization.v1"
                | "identity.v1"
                | "card.physical_card.v1"
                | "card.virtual_card.v1"
                | "deposit.us_cash.v1"
                | "deposit.rtp.v1"
                | "deposit.us_bank_ach.v1"
                | "deposit.ach_credit.v1"
                | "deposit.us_wire.v1"
                | "deposit.swift_wire.v1"
                | "transfer.redemption.v1"
                | "swap.v1"
                | "withdraw.blockchain.v1"
                | "withdraw.ke_bank.v1"
                | "withdraw.ke_momo.v1"
                | "withdraw.mx_bank_spei.v1"
                | "withdraw.swift_wire.v1"
                | "withdraw.tg_momo.v1"
                | "withdraw.us_bank_ach.v1"
                | "withdraw.us_instant.v1"
                | "withdraw.us_wire.v1"
                | "withdraw.ach_pull.v1"
                | "withdraw.us_wire_drawdown.v1"
                | "account.virtual-account.v1"
                | "deposit.*"
                | "withdraw.*";
            vendor: Vendor;
        }
        • Optionaldata?: ProductRouteVersionData

          Per-route operational knobs (timezone, quote TTL, ...). Persisted to product_route_version.data. Defaults to {} when omitted.

        • OptionaleffectiveFrom?: Instant

          When 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 | null
        • Optionalmatcher?: Matcher
        • productName:
              | "organization.v1"
              | "identity.v1"
              | "card.physical_card.v1"
              | "card.virtual_card.v1"
              | "deposit.us_cash.v1"
              | "deposit.rtp.v1"
              | "deposit.us_bank_ach.v1"
              | "deposit.ach_credit.v1"
              | "deposit.us_wire.v1"
              | "deposit.swift_wire.v1"
              | "transfer.redemption.v1"
              | "swap.v1"
              | "withdraw.blockchain.v1"
              | "withdraw.ke_bank.v1"
              | "withdraw.ke_momo.v1"
              | "withdraw.mx_bank_spei.v1"
              | "withdraw.swift_wire.v1"
              | "withdraw.tg_momo.v1"
              | "withdraw.us_bank_ach.v1"
              | "withdraw.us_instant.v1"
              | "withdraw.us_wire.v1"
              | "withdraw.ach_pull.v1"
              | "withdraw.us_wire_drawdown.v1"
              | "account.virtual-account.v1"
              | "deposit.*"
              | "withdraw.*"
        • vendor: Vendor

      Returns Promise<
          | { ok: true; value: AdminProductRoute }
          | { error: ServiceError; ok: false },
      >

    • Parameters

      • input: {
            bankIds?: string[];
            createdAt?: DbTimestampCriteria<Instant>;
            ids?: string[];
            orderBy?: "createdAt" | "updatedAt";
            page?: number;
            pageSize?: number;
            productNames?: (
                | "organization.v1"
                | "identity.v1"
                | "card.physical_card.v1"
                | "card.virtual_card.v1"
                | "deposit.us_cash.v1"
                | "deposit.rtp.v1"
                | "deposit.us_bank_ach.v1"
                | "deposit.ach_credit.v1"
                | "deposit.us_wire.v1"
                | "deposit.swift_wire.v1"
                | "transfer.redemption.v1"
                | "swap.v1"
                | "withdraw.blockchain.v1"
                | "withdraw.ke_bank.v1"
                | "withdraw.ke_momo.v1"
                | "withdraw.mx_bank_spei.v1"
                | "withdraw.swift_wire.v1"
                | "withdraw.tg_momo.v1"
                | "withdraw.us_bank_ach.v1"
                | "withdraw.us_instant.v1"
                | "withdraw.us_wire.v1"
                | "withdraw.ach_pull.v1"
                | "withdraw.us_wire_drawdown.v1"
                | "account.virtual-account.v1"
                | "deposit.*"
                | "withdraw.*"
            )[];
            updatedAt?: DbTimestampCriteria<Instant>;
            vendors?: Vendor[];
        }

      Returns Promise<{ ok: true; value: { hasNext: boolean; items: AdminProductRoute[] } }>

    • 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).

      Parameters

      • input: {
            data: {
                effectiveFrom?: Instant;
                priority?: number;
                status?: "ACTIVE" | "DISABLED";
            } & RouteVersionFields;
            id: string;
        }

      Returns Promise<
          | { ok: true; value: AdminProductRoute }
          | { error: ServiceError; ok: false },
      >