# OpenItemCode-Based ## Menu Synchronization - [POST /product/menu/sync](https://api-docs.mykeeta.com/apis/standard/menu/openitemcode-based/menusync.md): This endpoint enables menu synchronization for stores on Keeta. The system performs full-menu updates based on the provided data, implementing entity matching through the openItemCode field. App-level throttling: 1. The system identifies entities as follows: - : When matching openItemCode values exist in the store's current menu - : When no matching openItemCode values are found - : All existing entities with openItemCode values not present in the request A successful response only confirms successful submission of the synchronization task. Certain items may still fail during processing due to validation rules, requiring manual verification and resubmission by the caller. The endpoints supports standard HTTP/HTTPS (ports 80/443) external image URLs, which must comply with platform specifications regarding size, format, and accessibility. : | | | | --- | --- | | | - The openItemCode field is mandatory and must maintain uniqueness across entities- Each store cannot exceed 100 menu categories- Category names must be unique within a single store- Only one mandatory category is permitted per store- Categories become hidden when all contained products are delisted, and are repositioned when products become temporarily unavailable | | | - The openItemCode field is mandatory with entity-level uniqueness- Maximum 2,000 option groups per store- Maximum 10,000 options per store- Use the relatedSpuOpenItemCode to explicitly bind the ChoiceGroupSku to an existing SPU entity- Use the relatedSkuOpenItemCode to explicitly bind the ChoiceGroupSku to an existing SKU entity. When the ChoiceGroupSku binds to a SKU, it will use the bounded SKU''s ChoiceGroups to form a multi-layer ChoiceGroup structure.- When both relatedSkuOpenItemCode and relatedSpuOpenItemCode are declared, there will be a association check to ensure the SKU belongs to the declared SPU.- If both relatedSpuOpenItemCode and relatedSkuOpenItemCode are not specified, automatic binding occurs when the ChoiceGroupSku name matches a SPU name, enabling coordinated SPUs and ChoiceGroupSku status management(Note: If multiple SPUs share identical names, the system randomly selects one for binding, which may lead to unintended synchronization.)- External image URLs are supported in the pictureList field | | | - The openItemCode field is mandatory with entity-level uniqueness- Maximum 2,000 SPUs per store- Maximum 15 featured products per store- Tobacco/alcohol products must have corresponding attributes marked as "Yes"- External image URLs are supported in the pictureList field- Time-limited availability slots cannot overlap and are limited to 30 time periods- The shopCategoryOpenItemCodeList request should include the menu category openItemCode which exists in the specific store- The choiceGroupOpenItemCodeList request should include the choicegroup openItemCode which exists in the specific store | | | - Optional field that defaults to upload sequence when empty- Requires complete sorting data for all products across all categories when provided | ## Batch Update SPU Status - [POST /product/spustatus/batchupdatebycode](https://api-docs.mykeeta.com/apis/standard/menu/openitemcode-based/batchupdatespustatus.md): This endpoint allows the bulk updating of product statuses using their SPU OpenItemCode. App-level throttling: - The openItemCode field is mandatory with SPU entity-level uniqueness. - This endpoint supports partial successful updates when processing multiple SPUs in a single request. However, if the entire request contains fundamental structural errors the system will reject the complete batch with a fail response. - When the needLinkage parameter is set to 1, this endpoint facilitates the comprehensive synchronization of status changes not only for the specified SPUs but also for all associated ChoiceGroupSkus. This advanced functionality ensures cohesive inventory and product display management across related product options. - Each request cannot exceed 200 SPUs. ## Batch Update ChoiceGroupSku Status - [POST /product/choicegroupskustatus/batchupdatebycode](https://api-docs.mykeeta.com/apis/standard/menu/openitemcode-based/batchupdatechoicegroupskustatus.md): This endpoint allows users to efficiently modify the status of ChoicegroupSkus using their OpenItemCode. App-level throttling: - When developers call this endpoint to update the status of multiple options on the Keeta platform, it's essential to understand that the API processes each option independently. This can result in partial success, where some options are successfully updated while others encounter errors. ## Batch Bind OpenItemCode - [POST /product/mapping/batchupdatebyname](https://api-docs.mykeeta.com/apis/standard/menu/openitemcode-based/batchbindopenitemcode.md): The endpoints allows developers setting the OpenItemCode mapping relationship using store ID and product name. App-level throttling: - Existing partners that have already integrated via Keeta ID-based APIs must complete OpenItemCode binding for their existing products through this API before switching to OpenItemCode-based APIs, if they have previously created marketing campaigns on the Keeta platform.