Sample code for 30+ languages & platforms
Java

Square API - Batch Upsert Catalog Objects

See more Square Examples

Creates or updates up to 10,000 target objects based on the provided list of objects. The target objects are grouped into batches and each batch is inserted/updated in an all-or-nothing manner.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example assumes the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Http http = new Http();

        // Use this online tool to generate code from sample JSON:
        // Generate Code to Create JSON

        // The following JSON is sent in the request body.

        // {
        //   "idempotency_key": "789ff020-f723-43a9-b4b5-43b5dc1fa3dc",
        //   "batches": [
        //     {
        //       "objects": [
        //         {
        //           "type": "ITEM",
        //           "id": "#Tea",
        //           "present_at_all_locations": true,
        //           "item_data": {
        //             "name": "Tea",
        //             "description": "Hot Leaf Juice",
        //             "category_id": "#Beverages",
        //             "tax_ids": [
        //               "#SalesTax"
        //             ],
        //             "variations": [
        //               {
        //                 "type": "ITEM_VARIATION",
        //                 "id": "#Tea_Mug",
        //                 "present_at_all_locations": true,
        //                 "item_variation_data": {
        //                   "item_id": "#Tea",
        //                   "name": "Mug",
        //                   "pricing_type": "FIXED_PRICING",
        //                   "price_money": {
        //                     "amount": 150,
        //                     "currency": "USD"
        //                   }
        //                 }
        //               }
        //             ]
        //           }
        //         },
        //         {
        //           "type": "ITEM",
        //           "id": "#Coffee",
        //           "present_at_all_locations": true,
        //           "item_data": {
        //             "name": "Coffee",
        //             "description": "Hot Bean Juice",
        //             "category_id": "#Beverages",
        //             "tax_ids": [
        //               "#SalesTax"
        //             ],
        //             "variations": [
        //               {
        //                 "type": "ITEM_VARIATION",
        //                 "id": "#Coffee_Regular",
        //                 "present_at_all_locations": true,
        //                 "item_variation_data": {
        //                   "item_id": "#Coffee",
        //                   "name": "Regular",
        //                   "pricing_type": "FIXED_PRICING",
        //                   "price_money": {
        //                     "amount": 250,
        //                     "currency": "USD"
        //                   }
        //                 }
        //               },
        //               {
        //                 "type": "ITEM_VARIATION",
        //                 "id": "#Coffee_Large",
        //                 "present_at_all_locations": true,
        //                 "item_variation_data": {
        //                   "item_id": "#Coffee",
        //                   "name": "Large",
        //                   "pricing_type": "FIXED_PRICING",
        //                   "price_money": {
        //                     "amount": 350,
        //                     "currency": "USD"
        //                   }
        //                 }
        //               }
        //             ]
        //           }
        //         },
        //         {
        //           "type": "CATEGORY",
        //           "id": "#Beverages",
        //           "present_at_all_locations": true,
        //           "category_data": {
        //             "name": "Beverages"
        //           }
        //         },
        //         {
        //           "type": "TAX",
        //           "id": "#SalesTax",
        //           "present_at_all_locations": true,
        //           "tax_data": {
        //             "name": "Sales Tax",
        //             "calculation_phase": "TAX_SUBTOTAL_PHASE",
        //             "inclusion_type": "ADDITIVE",
        //             "percentage": "5.0",
        //             "applies_to_custom_amounts": true,
        //             "enabled": true
        //           }
        //         }
        //       ]
        //     }
        //   ]
        // }

        JsonObject json = new JsonObject();
        json.updateString("idempotency_key", "789ff020-f723-43a9-b4b5-43b5dc1fa3dc");
        int i = 0;
        json.setI(i);
        int j = 0;
        json.setJ(j);
        json.updateString("batches[i].objects[j].type", "ITEM");
        json.updateString("batches[i].objects[j].id", "#Tea");
        json.updateBool("batches[i].objects[j].present_at_all_locations", true);
        json.updateString("batches[i].objects[j].item_data.name", "Tea");
        json.updateString("batches[i].objects[j].item_data.description", "Hot Leaf Juice");
        json.updateString("batches[i].objects[j].item_data.category_id", "#Beverages");
        json.updateString("batches[i].objects[j].item_data.tax_ids[0]", "#SalesTax");
        json.updateString("batches[i].objects[j].item_data.variations[0].type", "ITEM_VARIATION");
        json.updateString("batches[i].objects[j].item_data.variations[0].id", "#Tea_Mug");
        json.updateBool("batches[i].objects[j].item_data.variations[0].present_at_all_locations", true);
        json.updateString("batches[i].objects[j].item_data.variations[0].item_variation_data.item_id", "#Tea");
        json.updateString("batches[i].objects[j].item_data.variations[0].item_variation_data.name", "Mug");
        json.updateString("batches[i].objects[j].item_data.variations[0].item_variation_data.pricing_type", "FIXED_PRICING");
        json.updateInt("batches[i].objects[j].item_data.variations[0].item_variation_data.price_money.amount", 150);
        json.updateString("batches[i].objects[j].item_data.variations[0].item_variation_data.price_money.currency", "USD");
        j = j + 1;
        json.setJ(j);
        json.updateString("batches[i].objects[j].type", "ITEM");
        json.updateString("batches[i].objects[j].id", "#Coffee");
        json.updateBool("batches[i].objects[j].present_at_all_locations", true);
        json.updateString("batches[i].objects[j].item_data.name", "Coffee");
        json.updateString("batches[i].objects[j].item_data.description", "Hot Bean Juice");
        json.updateString("batches[i].objects[j].item_data.category_id", "#Beverages");
        json.updateString("batches[i].objects[j].item_data.tax_ids[0]", "#SalesTax");
        int k = 0;
        json.setK(k);
        json.updateString("batches[i].objects[j].item_data.variations[k].type", "ITEM_VARIATION");
        json.updateString("batches[i].objects[j].item_data.variations[k].id", "#Coffee_Regular");
        json.updateBool("batches[i].objects[j].item_data.variations[k].present_at_all_locations", true);
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.item_id", "#Coffee");
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.name", "Regular");
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.pricing_type", "FIXED_PRICING");
        json.updateInt("batches[i].objects[j].item_data.variations[k].item_variation_data.price_money.amount", 250);
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.price_money.currency", "USD");
        k = k + 1;
        json.setK(k);
        json.updateString("batches[i].objects[j].item_data.variations[k].type", "ITEM_VARIATION");
        json.updateString("batches[i].objects[j].item_data.variations[k].id", "#Coffee_Large");
        json.updateBool("batches[i].objects[j].item_data.variations[k].present_at_all_locations", true);
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.item_id", "#Coffee");
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.name", "Large");
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.pricing_type", "FIXED_PRICING");
        json.updateInt("batches[i].objects[j].item_data.variations[k].item_variation_data.price_money.amount", 350);
        json.updateString("batches[i].objects[j].item_data.variations[k].item_variation_data.price_money.currency", "USD");
        j = j + 1;
        json.setJ(j);
        json.updateString("batches[i].objects[j].type", "CATEGORY");
        json.updateString("batches[i].objects[j].id", "#Beverages");
        json.updateBool("batches[i].objects[j].present_at_all_locations", true);
        json.updateString("batches[i].objects[j].category_data.name", "Beverages");
        j = j + 1;
        json.setJ(j);
        json.updateString("batches[i].objects[j].type", "TAX");
        json.updateString("batches[i].objects[j].id", "#SalesTax");
        json.updateBool("batches[i].objects[j].present_at_all_locations", true);
        json.updateString("batches[i].objects[j].tax_data.name", "Sales Tax");
        json.updateString("batches[i].objects[j].tax_data.calculation_phase", "TAX_SUBTOTAL_PHASE");
        json.updateString("batches[i].objects[j].tax_data.inclusion_type", "ADDITIVE");
        json.updateString("batches[i].objects[j].tax_data.percentage", "5.0");
        json.updateBool("batches[i].objects[j].tax_data.applies_to_custom_amounts", true);
        json.updateBool("batches[i].objects[j].tax_data.enabled", true);

        // Adds the "Authorization: Bearer ACCESS_TOKEN" header.
        http.setAuthToken("ACCESS_TOKEN");
        http.setRequestHeader("Square-Version", "2020-07-22");

        // This example uses the sandbox: connect.squareupsandbox.com
        // Production should use connect.squareup.com
        HttpResponse resp = new HttpResponse();
        try {
            http.httpJson("POST", "https://connect.squareupsandbox.com/v2/catalog/batch-upsert", json, "application/json", resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        StringBuilder sbResponseBody = new StringBuilder();
        resp.getBodySb(sbResponseBody);
        JsonObject jResp = new JsonObject();
        jResp.loadSb(sbResponseBody);
        jResp.setEmitCompact(false);

        System.out.println("Response Body:");
        System.out.println(jResp.emit());

        int respStatusCode = resp.getStatusCode();
        System.out.println("Response Status Code = " + respStatusCode);
        if (respStatusCode >= 400) {
            System.out.println("Response Header:");
            System.out.println(resp.getHeader());
            System.out.println("Failed.");
            return;
        }

        // Sample JSON response:
        // (Sample code for parsing the JSON response is shown below)

        // {
        //   "objects": [
        //     {
        //       "type": "ITEM",
        //       "id": "ZSDZN34NAXDLC6D5ZQMNSOUM",
        //       "updated_at": "2017-05-10T18:48:39.798Z",
        //       "version": 1494442119798,
        //       "is_deleted": false,
        //       "present_at_all_locations": true,
        //       "item_data": {
        //         "name": "Tea",
        //         "description": "Hot Leaf Juice",
        //         "category_id": "LYT72K3WGJFFCIMB63XARP3I",
        //         "tax_ids": [
        //           "XHSHLHNWSI3HVI4BW5ZUZXI3"
        //         ],
        //         "variations": [
        //           {
        //             "type": "ITEM_VARIATION",
        //             "id": "NAYHET5R52MIYCEF34ZMAHFM",
        //             "updated_at": "2017-05-10T18:48:39.798Z",
        //             "version": 1494442119798,
        //             "is_deleted": false,
        //             "present_at_all_locations": true,
        //             "item_variation_data": {
        //               "item_id": "ZSDZN34NAXDLC6D5ZQMNSOUM",
        //               "name": "Mug",
        //               "ordinal": 0,
        //               "pricing_type": "FIXED_PRICING",
        //               "price_money": {
        //                 "amount": 150,
        //                 "currency": "USD"
        //               }
        //             }
        //           }
        //         ]
        //       }
        //     },
        //     {
        //       "type": "ITEM",
        //       "id": "PJMCEBHHUS3OKDB6PYUHLCPP",
        //       "updated_at": "2017-05-10T18:48:39.798Z",
        //       "version": 1494442119798,
        //       "is_deleted": false,
        //       "present_at_all_locations": true,
        //       "item_data": {
        //         "name": "Coffee",
        //         "description": "Hot Bean Juice",
        //         "category_id": "LYT72K3WGJFFCIMB63XARP3I",
        //         "tax_ids": [
        //           "XHSHLHNWSI3HVI4BW5ZUZXI3"
        //         ],
        //         "variations": [
        //           {
        //             "type": "ITEM_VARIATION",
        //             "id": "OTYDX45SPG7LJQUVCBZI4INH",
        //             "updated_at": "2017-05-10T18:48:39.798Z",
        //             "version": 1494442119798,
        //             "is_deleted": false,
        //             "present_at_all_locations": true,
        //             "item_variation_data": {
        //               "item_id": "PJMCEBHHUS3OKDB6PYUHLCPP",
        //               "name": "Regular",
        //               "ordinal": 0,
        //               "pricing_type": "FIXED_PRICING",
        //               "price_money": {
        //                 "amount": 250,
        //                 "currency": "USD"
        //               }
        //             }
        //           },
        //           {
        //             "type": "ITEM_VARIATION",
        //             "id": "GZDA3JB37FYVOPI4AOEBOITI",
        //             "updated_at": "2017-05-10T18:48:39.798Z",
        //             "version": 1494442119798,
        //             "is_deleted": false,
        //             "present_at_all_locations": true,
        //             "item_variation_data": {
        //               "item_id": "PJMCEBHHUS3OKDB6PYUHLCPP",
        //               "name": "Large",
        //               "ordinal": 1,
        //               "pricing_type": "FIXED_PRICING",
        //               "price_money": {
        //                 "amount": 350,
        //                 "currency": "USD"
        //               }
        //             }
        //           }
        //         ]
        //       }
        //     },
        //     {
        //       "type": "CATEGORY",
        //       "id": "LYT72K3WGJFFCIMB63XARP3I",
        //       "updated_at": "2017-05-10T18:48:39.798Z",
        //       "version": 1494442119798,
        //       "is_deleted": false,
        //       "present_at_all_locations": true,
        //       "category_data": {
        //         "name": "Beverages"
        //       }
        //     },
        //     {
        //       "type": "TAX",
        //       "id": "XHSHLHNWSI3HVI4BW5ZUZXI3",
        //       "updated_at": "2017-05-10T18:48:39.798Z",
        //       "version": 1494442119798,
        //       "is_deleted": false,
        //       "present_at_all_locations": true,
        //       "tax_data": {
        //         "name": "Sales Tax",
        //         "calculation_phase": "TAX_SUBTOTAL_PHASE",
        //         "inclusion_type": "ADDITIVE",
        //         "percentage": "5.0",
        //         "applies_to_custom_amounts": true,
        //         "enabled": true
        //       }
        //     }
        //   ],
        //   "id_mappings": [
        //     {
        //       "client_object_id": "#Tea",
        //       "object_id": "ZSDZN34NAXDLC6D5ZQMNSOUM"
        //     },
        //     {
        //       "client_object_id": "#Coffee",
        //       "object_id": "PJMCEBHHUS3OKDB6PYUHLCPP"
        //     },
        //     {
        //       "client_object_id": "#Beverages",
        //       "object_id": "LYT72K3WGJFFCIMB63XARP3I"
        //     },
        //     {
        //       "client_object_id": "#SalesTax",
        //       "object_id": "XHSHLHNWSI3HVI4BW5ZUZXI3"
        //     },
        //     {
        //       "client_object_id": "#Tea_Mug",
        //       "object_id": "NAYHET5R52MIYCEF34ZMAHFM"
        //     },
        //     {
        //       "client_object_id": "#Coffee_Regular",
        //       "object_id": "OTYDX45SPG7LJQUVCBZI4INH"
        //     },
        //     {
        //       "client_object_id": "#Coffee_Large",
        //       "object_id": "GZDA3JB37FYVOPI4AOEBOITI"
        //     }
        //   ]
        // }

        // Sample code for parsing the JSON response...
        // Use the following online tool to generate parsing code from sample JSON:
        // Generate Parsing Code from JSON

        String v_type = "";
        String id = "";
        String updated_at = "";
        int version = 0;
        boolean is_deleted = false;
        boolean present_at_all_locations = false;
        String item_dataName = "";
        String item_dataDescription = "";
        String item_dataCategory_id = "";
        String category_dataName = "";
        String tax_dataName = "";
        String tax_dataCalculation_phase = "";
        String tax_dataInclusion_type = "";
        String tax_dataPercentage = "";
        boolean tax_dataApplies_to_custom_amounts = false;
        boolean tax_dataEnabled = false;
        int count_j = 0;
        String strVal = "";
        String item_variation_dataItem_id = "";
        String item_variation_dataName = "";
        int item_variation_dataOrdinal = 0;
        String item_variation_dataPricing_type = "";
        int item_variation_dataPrice_moneyAmount = 0;
        String item_variation_dataPrice_moneyCurrency = "";
        String client_object_id = "";
        String object_id = "";

        i = 0;
        int count_i = jResp.sizeOfArray("objects");
        while (i < count_i) {
            jResp.setI(i);
            v_type = jResp.stringOf("objects[i].type");
            id = jResp.stringOf("objects[i].id");
            updated_at = jResp.stringOf("objects[i].updated_at");
            version = jResp.intOf("objects[i].version");
            is_deleted = jResp.boolOf("objects[i].is_deleted");
            present_at_all_locations = jResp.boolOf("objects[i].present_at_all_locations");
            item_dataName = jResp.stringOf("objects[i].item_data.name");
            item_dataDescription = jResp.stringOf("objects[i].item_data.description");
            item_dataCategory_id = jResp.stringOf("objects[i].item_data.category_id");
            category_dataName = jResp.stringOf("objects[i].category_data.name");
            tax_dataName = jResp.stringOf("objects[i].tax_data.name");
            tax_dataCalculation_phase = jResp.stringOf("objects[i].tax_data.calculation_phase");
            tax_dataInclusion_type = jResp.stringOf("objects[i].tax_data.inclusion_type");
            tax_dataPercentage = jResp.stringOf("objects[i].tax_data.percentage");
            tax_dataApplies_to_custom_amounts = jResp.boolOf("objects[i].tax_data.applies_to_custom_amounts");
            tax_dataEnabled = jResp.boolOf("objects[i].tax_data.enabled");
            j = 0;
            count_j = jResp.sizeOfArray("objects[i].item_data.tax_ids");
            while (j < count_j) {
                jResp.setJ(j);
                strVal = jResp.stringOf("objects[i].item_data.tax_ids[j]");
                j = j + 1;
            }

            j = 0;
            count_j = jResp.sizeOfArray("objects[i].item_data.variations");
            while (j < count_j) {
                jResp.setJ(j);
                v_type = jResp.stringOf("objects[i].item_data.variations[j].type");
                id = jResp.stringOf("objects[i].item_data.variations[j].id");
                updated_at = jResp.stringOf("objects[i].item_data.variations[j].updated_at");
                version = jResp.intOf("objects[i].item_data.variations[j].version");
                is_deleted = jResp.boolOf("objects[i].item_data.variations[j].is_deleted");
                present_at_all_locations = jResp.boolOf("objects[i].item_data.variations[j].present_at_all_locations");
                item_variation_dataItem_id = jResp.stringOf("objects[i].item_data.variations[j].item_variation_data.item_id");
                item_variation_dataName = jResp.stringOf("objects[i].item_data.variations[j].item_variation_data.name");
                item_variation_dataOrdinal = jResp.intOf("objects[i].item_data.variations[j].item_variation_data.ordinal");
                item_variation_dataPricing_type = jResp.stringOf("objects[i].item_data.variations[j].item_variation_data.pricing_type");
                item_variation_dataPrice_moneyAmount = jResp.intOf("objects[i].item_data.variations[j].item_variation_data.price_money.amount");
                item_variation_dataPrice_moneyCurrency = jResp.stringOf("objects[i].item_data.variations[j].item_variation_data.price_money.currency");
                j = j + 1;
            }

            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("id_mappings");
        while (i < count_i) {
            jResp.setI(i);
            client_object_id = jResp.stringOf("id_mappings[i].client_object_id");
            object_id = jResp.stringOf("id_mappings[i].object_id");
            i = i + 1;
        }
    }
}