Edits history of script submission #20792 for ' SearchCustomers (square)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Square = {
      token: string;
    };
    /**
     * SearchCustomers
     * Searches the customer profiles associated with a Square account using one or more supported query filters.
     */
    export async function main(
      auth: Square,
      body: {
        cursor?: string;
        limit?: number;
        query?: {
          filter?: {
            creation_source?: {
              values?:
                | "OTHER"
                | "APPOINTMENTS"
                | "COUPON"
                | "DELETION_RECOVERY"
                | "DIRECTORY"
                | "EGIFTING"
                | "EMAIL_COLLECTION"
                | "FEEDBACK"
                | "IMPORT"
                | "INVOICES"
                | "LOYALTY"
                | "MARKETING"
                | "MERGE"
                | "ONLINE_STORE"
                | "INSTANT_PROFILE"
                | "TERMINAL"
                | "THIRD_PARTY"
                | "THIRD_PARTY_IMPORT"
                | "UNMERGE_RECOVERY"[];
              rule?: "INCLUDE" | "EXCLUDE";
            };
            created_at?: { start_at?: string; end_at?: string };
            updated_at?: { start_at?: string; end_at?: string };
            email_address?: { exact?: string; fuzzy?: string };
            phone_number?: { exact?: string; fuzzy?: string };
            reference_id?: { exact?: string; fuzzy?: string };
            group_ids?: { all?: string[]; any?: string[]; none?: string[] };
            custom_attribute?: {
              filters?: {
                key: string;
                filter?: {
                  email?: { exact?: string; fuzzy?: string };
                  phone?: { exact?: string; fuzzy?: string };
                  text?: { exact?: string; fuzzy?: string };
                  selection?: { all?: string[]; any?: string[]; none?: string[] };
                  date?: { start_at?: string; end_at?: string };
                  number?: { start_at?: string; end_at?: string };
                  boolean?: false | true;
                  address?: {
                    postal_code?: { exact?: string; fuzzy?: string };
                    country?:
                      | "ZZ"
                      | "AD"
                      | "AE"
                      | "AF"
                      | "AG"
                      | "AI"
                      | "AL"
                      | "AM"
                      | "AO"
                      | "AQ"
                      | "AR"
                      | "AS"
                      | "AT"
                      | "AU"
                      | "AW"
                      | "AX"
                      | "AZ"
                      | "BA"
                      | "BB"
                      | "BD"
                      | "BE"
                      | "BF"
                      | "BG"
                      | "BH"
                      | "BI"
                      | "BJ"
                      | "BL"
                      | "BM"
                      | "BN"
                      | "BO"
                      | "BQ"
                      | "BR"
                      | "BS"
                      | "BT"
                      | "BV"
                      | "BW"
                      | "BY"
                      | "BZ"
                      | "CA"
                      | "CC"
                      | "CD"
                      | "CF"
                      | "CG"
                      | "CH"
                      | "CI"
                      | "CK"
                      | "CL"
                      | "CM"
                      | "CN"
                      | "CO"
                      | "CR"
                      | "CU"
                      | "CV"
                      | "CW"
                      | "CX"
                      | "CY"
                      | "CZ"
                      | "DE"
                      | "DJ"
                      | "DK"
                      | "DM"
                      | "DO"
                      | "DZ"
                      | "EC"
                      | "EE"
                      | "EG"
                      | "EH"
                      | "ER"
                      | "ES"
                      | "ET"
                      | "FI"
                      | "FJ"
                      | "FK"
                      | "FM"
                      | "FO"
                      | "FR"
                      | "GA"
                      | "GB"
                      | "GD"
                      | "GE"
                      | "GF"
                      | "GG"
                      | "GH"
                      | "GI"
                      | "GL"
                      | "GM"
                      | "GN"
                      | "GP"
                      | "GQ"
                      | "GR"
                      | "GS"
                      | "GT"
                      | "GU"
                      | "GW"
                      | "GY"
                      | "HK"
                      | "HM"
                      | "HN"
                      | "HR"
                      | "HT"
                      | "HU"
                      | "ID"
                      | "IE"
                      | "IL"
                      | "IM"
                      | "IN"
                      | "IO"
                      | "IQ"
                      | "IR"
                      | "IS"
                      | "IT"
                      | "JE"
                      | "JM"
                      | "JO"
                      | "JP"
                      | "KE"
                      | "KG"
                      | "KH"
                      | "KI"
                      | "KM"
                      | "KN"
                      | "KP"
                      | "KR"
                      | "KW"
                      | "KY"
                      | "KZ"
                      | "LA"
                      | "LB"
                      | "LC"
                      | "LI"
                      | "LK"
                      | "LR"
                      | "LS"
                      | "LT"
                      | "LU"
                      | "LV"
                      | "LY"
                      | "MA"
                      | "MC"
                      | "MD"
                      | "ME"
                      | "MF"
                      | "MG"
                      | "MH"
                      | "MK"
                      | "ML"
                      | "MM"
                      | "MN"
                      | "MO"
                      | "MP"
                      | "MQ"
                      | "MR"
                      | "MS"
                      | "MT"
                      | "MU"
                      | "MV"
                      | "MW"
                      | "MX"
                      | "MY"
                      | "MZ"
                      | "NA"
                      | "NC"
                      | "NE"
                      | "NF"
                      | "NG"
                      | "NI"
                      | "NL"
                      | "NO"
                      | "NP"
                      | "NR"
                      | "NU"
                      | "NZ"
                      | "OM"
                      | "PA"
                      | "PE"
                      | "PF"
                      | "PG"
                      | "PH"
                      | "PK"
                      | "PL"
                      | "PM"
                      | "PN"
                      | "PR"
                      | "PS"
                      | "PT"
                      | "PW"
                      | "PY"
                      | "QA"
                      | "RE"
                      | "RO"
                      | "RS"
                      | "RU"
                      | "RW"
                      | "SA"
                      | "SB"
                      | "SC"
                      | "SD"
                      | "SE"
                      | "SG"
                      | "SH"
                      | "SI"
                      | "SJ"
                      | "SK"
                      | "SL"
                      | "SM"
                      | "SN"
                      | "SO"
                      | "SR"
                      | "SS"
                      | "ST"
                      | "SV"
                      | "SX"
                      | "SY"
                      | "SZ"
                      | "TC"
                      | "TD"
                      | "TF"
                      | "TG"
                      | "TH"
                      | "TJ"
                      | "TK"
                      | "TL"
                      | "TM"
                      | "TN"
                      | "TO"
                      | "TR"
                      | "TT"
                      | "TV"
                      | "TW"
                      | "TZ"
                      | "UA"
                      | "UG"
                      | "UM"
                      | "US"
                      | "UY"
                      | "UZ"
                      | "VA"
                      | "VC"
                      | "VE"
                      | "VG"
                      | "VI"
                      | "VN"
                      | "VU"
                      | "WF"
                      | "WS"
                      | "YE"
                      | "YT"
                      | "ZA"
                      | "ZM"
                      | "ZW";
                  };
                };
                updated_at?: { start_at?: string; end_at?: string };
              }[];
            };
            segment_ids?: { all?: string[]; any?: string[]; none?: string[] };
          };
          sort?: { field?: "DEFAULT" | "CREATED_AT"; order?: "DESC" | "ASC" };
        };
        count?: false | true;
      },
    ) {
      const url = new URL(`https://connect.squareup.com/v2/customers/search`);
    
      const response = await fetch(url, {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: "Bearer " + auth.token,
        },
        body: JSON.stringify(body),
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 235 days ago