@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 — plus the vendor's per-route terms (fee + limit ceilings). The vendor row carries identity only.

    Soft-delete is the terminal signal.

    Hierarchy

    Index
    • Parameters

      • __namedParameters: {
            db: B2bDatabase;
            internalEventPublisher: InternalEventPublisher | null;
            valkeyClient: ValkeyClient | null;
        }
        • db: B2bDatabase
        • internalEventPublisher: InternalEventPublisher | null

          Publishes product.route.*; null publishes nothing (scripts, tests).

        • valkeyClient: ValkeyClient | null

      Returns ProductRouteAdminService

    cache: ServiceCache<CachedSearchPage<AdminProductRoute>>
    db: B2bDatabase
    instance: (...args: []) => ProductRouteAdminService = ...

    The process default: built from each dependency's own instance().

    • Parameters

      • input: {
            bankAccountId?: string | null;
            data?: ProductRouteVersionData;
            effectiveFrom?: Instant;
            feeVisible?: boolean | null;
            fixedFeeAmount?: BigNumber | null;
            label?: string | null;
            limit24hMaxCount?: BigNumber | null;
            limit24hMaxUsd?: BigNumber | null;
            limit30dMaxCount?: BigNumber | null;
            limit30dMaxUsd?: BigNumber | null;
            limit7dMaxCount?: BigNumber | null;
            limit7dMaxUsd?: BigNumber | null;
            limitTransactionMaxUsd?: BigNumber | null;
            limitTransactionMinUsd?: BigNumber | null;
            matcher?: Matcher;
            productId: string;
            programId?: string | null;
            variableFeeBps?: BigNumber | null;
            vendor: Vendor;
        }
        • OptionalbankAccountId?: string | null

          The account the route moves money through (register external_id). Its program is derived from it.

        • Optionaldata?: ProductRouteVersionData

          Per-route operational knobs (timezone, quote TTL, ...). Persisted to product_route_version.data. Defaults to {} when omitted. cutoffTimezone must be an IANA Area/Location name — see invalidCutoffTimezone.

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

        • OptionalfeeVisible?: boolean | null
        • OptionalfixedFeeAmount?: BigNumber | null

          Vendor fee for THIS route (CFX-to-vendor cost). Persisted on the version row; omitted fields default to null (no fee).

        • Optionallabel?: string | null
        • Optionallimit24hMaxCount?: BigNumber | null
        • Optionallimit24hMaxUsd?: BigNumber | null
        • Optionallimit30dMaxCount?: BigNumber | null
        • Optionallimit30dMaxUsd?: BigNumber | null
        • Optionallimit7dMaxCount?: BigNumber | null
        • Optionallimit7dMaxUsd?: BigNumber | null
        • OptionallimitTransactionMaxUsd?: BigNumber | null
        • OptionallimitTransactionMinUsd?: BigNumber | null

          Vendor limit ceilings for THIS route. Persisted on the version row; omitted fields default to null (no ceiling).

        • Optionalmatcher?: Matcher
        • productId: string
        • OptionalprogramId?: string | null

          The program of a sub-account provider's route (prog_…). A vendor with a live program needs this or an account.

        • OptionalvariableFeeBps?: BigNumber | null
        • vendor: Vendor

      Returns RouteWriteResult<
          | "DUPLICATE_MATCHER"
          | "MATCHER_FIELD_NOT_ALLOWED"
          | "MATCHER_OPERATOR_NOT_ALLOWED",
      >

    • Clear each customer's membership tag and each record tag wherever cached, and always this namespace's collection tag. keys are exact deletes in this instance's key space: the only bust a null client honours.

      Parameters

      • __namedParameters: {
            customerIds: readonly string[];
            keys?: readonly CacheKey[];
            records?: readonly string[];
        }

      Returns Promise<void>

    • Parameters

      • input: {
            bankIds?: string[];
            createdAt?: DbTimestampCriteria<Instant>;
            ids?: string[];
            orderBy?: DbOrderByCriterion<
                Omit<
                    PgTableWithColumns<
                        {
                            columns: {
                                createdAt: PgBuildColumn<
                                    "product_route",
                                    SetHasDefault<SetNotNull<(...)>>,
                                    {
                                        data: Instant;
                                        dataType: "custom";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                currentVersionId: PgBuildColumn<
                                    "product_route",
                                    SetNotNull<PgIntegerBuilder>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                deletedAt: PgBuildColumn<
                                    "product_route",
                                    PgCustomColumnBuilder<{ data: ...; dataType: ...; driverParam: ... }>,
                                    {
                                        data: Instant;
                                        dataType: "custom";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "product_route";
                                    },
                                >;
                                externalId: PgBuildColumn<
                                    "product_route",
                                    SetHasRuntimeDefault<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                id: PgBuildColumn<
                                    "product_route",
                                    HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: "byDefault";
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                matcherHash: PgBuildColumn<
                                    "product_route",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                priority: PgBuildColumn<
                                    "product_route",
                                    SetHasDefault<SetNotNull<(...)>>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                productExternalId: PgBuildColumn<
                                    "product_route",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                productId: PgBuildColumn<
                                    "product_route",
                                    SetNotNull<PgIntegerBuilder>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                programExternalId: PgBuildColumn<
                                    "product_route",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "product_route";
                                    },
                                >;
                                programId: PgBuildColumn<
                                    "product_route",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "product_route";
                                    },
                                >;
                                searchDocument: PgBuildColumn<
                                    "product_route",
                                    SetHasGenerated<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: true;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                status: PgBuildColumn<
                                    "product_route",
                                    SetHasDefault<Set$Type<(...), (...)>>,
                                    {
                                        data: (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                updatedAt: PgBuildColumn<
                                    "product_route",
                                    SetHasDefault<SetHasDefault<(...)>>,
                                    {
                                        data: Instant;
                                        dataType: "custom";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                vendorExternalId: PgBuildColumn<
                                    "product_route",
                                    Set$Type<SetNotNull<(...)>, Vendor>,
                                    {
                                        data: Vendor;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                                vendorId: PgBuildColumn<
                                    "product_route",
                                    SetNotNull<PgIntegerBuilder>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "product_route";
                                    },
                                >;
                            };
                            dialect: "pg";
                            isAlias: false;
                            name: "product_route";
                            schema: "b2b";
                        },
                    >,
                    "enableRLS",
                >,
                "createdAt"
                | "updatedAt"
                | "priority",
            >[];
            page?: number;
            pageSize?: number;
            productIds?: string[];
            q?: string;
            updatedAt?: DbTimestampCriteria<Instant>;
            vendors?: Vendor[];
        }
        • OptionalbankIds?: string[]
        • OptionalcreatedAt?: DbTimestampCriteria<Instant>
        • Optionalids?: string[]
        • OptionalorderBy?: DbOrderByCriterion<
              Omit<
                  PgTableWithColumns<
                      {
                          columns: {
                              createdAt: PgBuildColumn<
                                  "product_route",
                                  SetHasDefault<SetNotNull<(...)>>,
                                  {
                                      data: Instant;
                                      dataType: "custom";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              currentVersionId: PgBuildColumn<
                                  "product_route",
                                  SetNotNull<PgIntegerBuilder>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              deletedAt: PgBuildColumn<
                                  "product_route",
                                  PgCustomColumnBuilder<{ data: ...; dataType: ...; driverParam: ... }>,
                                  {
                                      data: Instant;
                                      dataType: "custom";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "product_route";
                                  },
                              >;
                              externalId: PgBuildColumn<
                                  "product_route",
                                  SetHasRuntimeDefault<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              id: PgBuildColumn<
                                  "product_route",
                                  HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: "byDefault";
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              matcherHash: PgBuildColumn<
                                  "product_route",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              priority: PgBuildColumn<
                                  "product_route",
                                  SetHasDefault<SetNotNull<(...)>>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              productExternalId: PgBuildColumn<
                                  "product_route",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              productId: PgBuildColumn<
                                  "product_route",
                                  SetNotNull<PgIntegerBuilder>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              programExternalId: PgBuildColumn<
                                  "product_route",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "product_route";
                                  },
                              >;
                              programId: PgBuildColumn<
                                  "product_route",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "product_route";
                                  },
                              >;
                              searchDocument: PgBuildColumn<
                                  "product_route",
                                  SetHasGenerated<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: true;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              status: PgBuildColumn<
                                  "product_route",
                                  SetHasDefault<Set$Type<(...), (...)>>,
                                  {
                                      data: (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              updatedAt: PgBuildColumn<
                                  "product_route",
                                  SetHasDefault<SetHasDefault<(...)>>,
                                  {
                                      data: Instant;
                                      dataType: "custom";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              vendorExternalId: PgBuildColumn<
                                  "product_route",
                                  Set$Type<SetNotNull<(...)>, Vendor>,
                                  {
                                      data: Vendor;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                              vendorId: PgBuildColumn<
                                  "product_route",
                                  SetNotNull<PgIntegerBuilder>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "product_route";
                                  },
                              >;
                          };
                          dialect: "pg";
                          isAlias: false;
                          name: "product_route";
                          schema: "b2b";
                      },
                  >,
                  "enableRLS",
              >,
              "createdAt"
              | "updatedAt"
              | "priority",
          >[]
        • Optionalpage?: number
        • OptionalpageSize?: number
        • OptionalproductIds?: string[]
        • Optionalq?: string

          Free-text match over the route external id, product name, vendor name, and route label — the selector search box (searchRoutes) feeds this.

        • OptionalupdatedAt?: DbTimestampCriteria<Instant>
        • Optionalvendors?: Vendor[]

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

    • Tags for a page: the scope its query searched (each customer's membership tag, else the collection tag), so an empty page is bustable too, plus the records it projects and the fields that chose or ordered its rows.

      Parameters

      • __namedParameters: {
            customerIds: readonly string[] | undefined;
            fields?: readonly string[];
            records?: readonly string[];
        }

      Returns string[]

    • Update a route. priority and status edits update the identity row in place; matcher/vendor/label/fee edits insert a new version and flip the pointer. Both can happen in the same transaction. productId is part of identity and not editable. Untouched fee fields carry forward from the previous version. Per-vendor limit ceilings 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 RouteWriteResult<
          | "DUPLICATE_MATCHER"
          | "MATCHER_FIELD_NOT_ALLOWED"
          | "MATCHER_OPERATOR_NOT_ALLOWED"
          | "ROUTE_NOT_FOUND",
      >