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

    A row of b2b.greendot_retailer, which the hourly syncGreendotRetailersWorkflow keeps in step with Green Dot's list. Green Dot ids repeat in that table, so each row is its own item. Timestamps are ISO strings so an item survives the cache and the RSC boundary unchanged.

    type CashDepositRetailer = {
        configuration: {
            enabled: boolean;
            enabledForTesting: boolean;
            logo: { png: string; webp: string };
            name: string;
            slug: string;
        };
        delistedAt: string
        | null;
        greendot: GreendotRetailer;
        id: GreendotRetailer["retailerId"];
        lastSyncedAt: string | null;
        purchaseFee: { amount: BigNumber; currency: "USD" } | null;
        rowId: number;
    }
    Index
    configuration: {
        enabled: boolean;
        enabledForTesting: boolean;
        logo: { png: string; webp: string };
        name: string;
        slug: string;
    }
    delistedAt: string | null

    Set once Green Dot stops listing the id; cleared if it lists it again.

    lastSyncedAt: string | null

    When a sync last found this id in Green Dot's list.

    purchaseFee: { amount: BigNumber; currency: "USD" } | null

    greendot.purchaseFee parsed; null when absent or not a non-negative decimal.

    rowId: number

    The row's own key: Green Dot ids repeat, so writes address a row by this.