# Modify ChoiceGroups(in batch) 1. Mostly like 3.4.2 but ChoiceGroup.id is required. 2. Please make sure the ChoiceGroup data object is complete. 10 QPS by appId dimension. Endpoint: POST /product/choicegroup/batchupdate Version: v.1.0.0 ## Request fields (application/json): - `shopId` (integer, required) store id in KeeTa Example: 25381 - `choiceGroupList` (array, required) ChoiceGroup data model - `choiceGroupList.id` (integer) Unique ChoiceGroup ID generated by Keeta system. Not required in OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs. - `choiceGroupList.name` (string, required) Display name of the ChoiceGroup Example: "Sauces" - `choiceGroupList.sourceLanguageType` (string, required) Language code for name field (refer to Menu Integration Guide) Example: "en" - `choiceGroupList.nameTranslation` (string) Localized name translation Example: "選擇醬料" - `choiceGroupList.targetLanguageType` (string) Language code for nameTranslation (required if translation exists), please refer to [Menu API Integration Guide](./docs/menuIntegrationGuide.md) Example: "zh-HK" - `choiceGroupList.nameTranslateType` (integer) Source of name translation. When the value equals 1, it indicates that the name translation was provided by the merchant. Example: 1 - `choiceGroupList.minNumber` (integer, required) Minimum number of ChoiceGroupSkus that must be selected - `choiceGroupList.maxNumber` (integer, required) Maximum number of ChoiceGroupSkus that can be selected Example: 3 - `choiceGroupList.choiceGroupSkuList` (array, required) List of available ChoiceGroupSkus in this ChoiceGroup - `choiceGroupList.choiceGroupSkuList.id` (integer) Primary key for ChoiceGroupSku, mainly used for order API alignment. Changes when names are modified. Not required in OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs. - `choiceGroupList.choiceGroupSkuList.name` (string, required) Display name of the ChoiceGroupSku. Should match SPU name when representing the same product for internal correlation. Example: "Ketchup" - `choiceGroupList.choiceGroupSkuList.price` (string) Delivery price (supports 2 decimal places) Example: "12.33" - `choiceGroupList.choiceGroupSkuList.pickPrice` (string) Pickup price (supports 2 decimal places) Example: "12.33" - `choiceGroupList.choiceGroupSkuList.canteenPrice` (string) Dine-in price (supports 2 decimal places) Example: "12.33" - `choiceGroupList.choiceGroupSkuList.currency` (string) Currency code (refer to "Currency Symbols" enum). Defaults to merchant's currency. Example: "HKD" - `choiceGroupList.choiceGroupSkuList.status` (integer, required) Availability status: > 0: indicates the ChoiceGroupSku is unavailable / > 1: indicates ChoiceGroupSku is available Example: 1 - `choiceGroupList.choiceGroupSkuList.openItemCode` (string, required) Third-party ChoiceGroupSku identifier. Mandatory and unique in OpenItemCode-based APIs. Example: "CHOICE#10001" - `choiceGroupList.choiceGroupSkuList.nutritionalInfo` (object) Nutritional components (refer to "Nutritional Elements" enum) - `choiceGroupList.choiceGroupSkuList.allergens` (array) Allergen information (refer to "Allergens" enum) - `choiceGroupList.choiceGroupSkuList.pictureList` (array) ChoiceGroupSku image URLs - `choiceGroupList.choiceGroupSkuList.pictureList.url` (string, required) ChoiceGroupSku image URLs Example: "https://img-ap-hongkong.mykeeta.net/sailorproduct/9c760595674b395e330cf94b0e5068b09999.jpg" - `choiceGroupList.choiceGroupSkuList.relatedSpuOpenItemCode` (string) Third-party SPU identifier this ChoiceGroupSku should bind to. Using this to explicitly bind the ChoiceGroupSku to the given SPU. - `choiceGroupList.choiceGroupSkuList.relatedSkuOpenItemCode` (string) Third-party SKU identifier this ChoiceGroupSku should bind to. Using this to explicitly bind the ChoiceGroupSku to the given SKU. When a ChoiceGroupSku bind to a SKU, it will use the bounded SKU's ChoiceGroups to form a multi-layer ChoiceGroup structure. - `choiceGroupList.openItemCode` (string, required) Developer-provided ChoiceGroup identifier. Mandatory and unique in OpenItemCode-based APIs. Example: "GROUP#10001" - `choiceGroupList.repeatable` (integer) Multiple selection flag: ## Response 200 fields (application/json): - `code` (integer, required) A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully. - `message` (string, required) Text description corresponding to the status code, explaining the operation result or error cause to users. Example: "Success" - `data` (array) Successful ChoiceGroup data model - `data.id` (integer) Unique ChoiceGroup ID generated by Keeta system. Not required in OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs. - `data.name` (string, required) Display name of the ChoiceGroup Example: "Sauces" - `data.sourceLanguageType` (string, required) Language code for name field (refer to Menu Integration Guide) Example: "en" - `data.nameTranslation` (string) Localized name translation Example: "選擇醬料" - `data.targetLanguageType` (string) Language code for nameTranslation (required if translation exists), please refer to [Menu API Integration Guide](./docs/menuIntegrationGuide.md) Example: "zh-HK" - `data.nameTranslateType` (integer) Source of name translation. When the value equals 1, it indicates that the name translation was provided by the merchant. Example: 1 - `data.minNumber` (integer, required) Minimum number of ChoiceGroupSkus that must be selected - `data.maxNumber` (integer, required) Maximum number of ChoiceGroupSkus that can be selected Example: 3 - `data.choiceGroupSkuList` (array, required) List of available ChoiceGroupSkus in this ChoiceGroup - `data.choiceGroupSkuList.id` (integer) Primary key for ChoiceGroupSku, mainly used for order API alignment. Changes when names are modified. Not required in OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs. - `data.choiceGroupSkuList.name` (string, required) Display name of the ChoiceGroupSku. Should match SPU name when representing the same product for internal correlation. Example: "Ketchup" - `data.choiceGroupSkuList.price` (string) Delivery price (supports 2 decimal places) Example: "12.33" - `data.choiceGroupSkuList.pickPrice` (string) Pickup price (supports 2 decimal places) Example: "12.33" - `data.choiceGroupSkuList.canteenPrice` (string) Dine-in price (supports 2 decimal places) Example: "12.33" - `data.choiceGroupSkuList.currency` (string) Currency code (refer to "Currency Symbols" enum). Defaults to merchant's currency. Example: "HKD" - `data.choiceGroupSkuList.status` (integer, required) Availability status: > 0: indicates the ChoiceGroupSku is unavailable / > 1: indicates ChoiceGroupSku is available Example: 1 - `data.choiceGroupSkuList.openItemCode` (string, required) Third-party ChoiceGroupSku identifier. Mandatory and unique in OpenItemCode-based APIs. Example: "CHOICE#10001" - `data.choiceGroupSkuList.nutritionalInfo` (object) Nutritional components (refer to "Nutritional Elements" enum) - `data.choiceGroupSkuList.allergens` (array) Allergen information (refer to "Allergens" enum) - `data.choiceGroupSkuList.pictureList` (array) ChoiceGroupSku image URLs - `data.choiceGroupSkuList.pictureList.url` (string, required) ChoiceGroupSku image URLs Example: "https://img-ap-hongkong.mykeeta.net/sailorproduct/9c760595674b395e330cf94b0e5068b09999.jpg" - `data.choiceGroupSkuList.relatedSpuOpenItemCode` (string) Third-party SPU identifier this ChoiceGroupSku should bind to. Using this to explicitly bind the ChoiceGroupSku to the given SPU. - `data.choiceGroupSkuList.relatedSkuOpenItemCode` (string) Third-party SKU identifier this ChoiceGroupSku should bind to. Using this to explicitly bind the ChoiceGroupSku to the given SKU. When a ChoiceGroupSku bind to a SKU, it will use the bounded SKU's ChoiceGroups to form a multi-layer ChoiceGroup structure. - `data.openItemCode` (string, required) Developer-provided ChoiceGroup identifier. Mandatory and unique in OpenItemCode-based APIs. Example: "GROUP#10001" - `data.repeatable` (integer) Multiple selection flag: - `errorList` (array) Failed ChoiceGroup informations - `errorList.id` (integer) Unique identifier for the Choicegroup (Standard Product Unit), generated by Keeta's system Example: 45676543 - `errorList.name` (string) Display name of the Choicegroup - `errorList.openItemCode` (string) Developer-provided external identifier that maintains a one-to-one mapping with Keeta's internal Choicegroup ID. Refer to the "Menu Development Guide" for implementation details. Example: "SET-11001000005-3" - `errorList.code` (integer) A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully. indicates that . indicates that . can be viewed in the field. Example: 107000104