# Keeta Menu Management API

This API provides comprehensive menu management capabilities for Keeta platform integration, including menu synchronization, product status management, and real-time notifications.


Version: v.1.0.0

## Servers

```
https://open.mykeeta.com/api/open
```

## Download OpenAPI description

 - [Keeta Menu Management API](https://api-docs.mykeeta.com/_bundle/apis/@standard/menu.yaml)

## OpenItemCode-Based

 - [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. **Rate Li
 - [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. **Rate Limiting** App-level throttling: **QPS ≤ 10** **Notes** - The openItemCode field is mandatory with SPU e
 - [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. **Rate Limiting** App-level throttling: **QPS ≤ 10** **Notes** - When developers call this endp
 - [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. **Rate Limiting** App-level throttling: **QPS ≤ 10** **Notes** - Existing partners that h
## Webhooks

 - [POST PictureBindTaskCompletionNotification](https://api-docs.mykeeta.com/apis/standard/menu/webhooks/picturebindtaskcompletionnotification.md): **Item's Picture Bind Task** operates asynchronously. When Keeta's platform receives a MenuSync request, it creates two separate internal tasks, one for syncing the menu and another for uploading item
 - [POST menuSynchronizationTaskCompletionWebhook](https://api-docs.mykeeta.com/apis/standard/menu/webhooks/menusynchronizationtaskcompletionnotification.md): The **Menu Synchronization** API operates asynchronously. When Keeta's platform receives a synchronization request, it creates an internal task for processing. Upon task completion (success or failure
## KeetaID-Based

 - [POST /product/shopcategory/list](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/queryshopcategorylist.md): Query the list of ShopCategory information in store. **Rate limit:** 50 QPS by appId dimension.
 - [POST /product/shopcategory/create](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/createshopcategory.md): - Only for creating in-store ShopCategory. - The names of ShopCategory in a store are not allowed to be repeated. - The maximum "mandatory" ShopCategory number for each store is 1. - When there is no
 - [POST /product/shopcategory/update](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/updateshopcategory.md): - To update a ShopCategory information, will keep its original ID - Please ensure that each parameter is the value you want to update. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/shopcategory/batchdel](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/deleteshopcategories.md): 1. You can only delete ShopCategory that doesn't contain any product. 2. Please make sure the ShopCategory.id is in-store. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/shopcategory/updatesequence](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/updateshopcategorysequence.md): - Adjust one specific ShopCategory's order, the sequence need to be greater than 0 and less than the number of ShopCategories. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/shopcategory/batchupdatesequence](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/batchupdateshopcategorysequence.md): - Adjust all ShopCategories' sequence in store. - Please make sure openShopCategorySequenceDTOList contains all shopCategory in store, otherwise the interface invoke will be rejected. **Rate limit:**
 - [POST /product/categoryproperty/list](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/querycategorypropertylist.md): 1. Get the category attribute list based on the final category ID, which is used for operations such as creating products. 2. Since there is no backend category field for this period, the categoryId c
 - [POST /product/spu/list](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/queryproductslist.md): 1. Get all valid products in store. **Rate limit:** 50 QPS by appId dimension.
 - [POST /product/spu/detail](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/queryproductdetail.md): 1. Get a specific product info through ID, this is far more fast comparing to query products list. **Rate limit:** 100 QPS by appId dimension.
 - [POST /product/spu/batchcreate](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/createproducts.md): 1. Product data that can be transmitted in one batch should not exceed 200. If there are more products, please create them in batches. 2. The interface supports partial synchronization success and par
 - [POST /product/spu/batchupdate](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/updateproducts.md): 1. Mostly like 3.3.3. 2. Through this interface, you can update Spu with its ID unchanged, **this is very important for Promotion activities, which are based on Spu.id and Sku.id**. 3. As for Sku, if
 - [POST /product/spustatus/batchupdate](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/updateproductsstatus.md): 1. Product data that can be transmitted in one batch should not exceed 200. If there are more products, please create them in batches. 2. The interface supports partial synchronization success and par
 - [POST /product/spu/batchcheck](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/checkproductsconflict.md): 1. Query if there is any rule-violated ChoiceGroup when unavailable a Spu with linkage. **Rate limit:** 50 QPS by appId dimension.
 - [POST /product/spu/batchdel](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/deleteproducts.md): 1. Product data that can be transmitted in one batch should not exceed 200. If there are more products, please delete them in batches. 2. The interface supports partial synchronization success and par
 - [POST /product/spu/updatesequence](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/updateproductsequence.md): 1. Adjust a product's sequence in a specific ShopCategory. 2. 0 < sequence <= number of spus. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/spu/batchupdatesequence](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/batchupdateproductsequence.md): 1. Adjust all products' sequence in a specific ShopCategory. 2. 0 < sequence <= number of spus. 3. Please make sure spuSequenceDTOList contains all Spu in the ShopCategory, otherwise it will fail. **
 - [POST /product/spu/batchupdateallsequence](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/batchupdateallproductsequence.md): 1. Mostly like 3.3.9 but support multiple ShopCategories. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/spupicture/batchbind](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/batchbindproductpictures.md): 1. Noticed this is an Asynchronous API, if you want to subscribe error messages, please configure webhook with 「eventId=1201」; 2. Make sure all spuIds are belong to shopId; 3. Image requirements: 1.
 - [POST /product/choicegroup/list](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/querychoicegrouplist.md): 1. Query all ChoiceGroups in store. **Rate limit:** 50 QPS by appId dimension.
 - [POST /product/choicegroup/batchcreate](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/createchoicegroups.md): 1. if the ChoiceGroupSku.name is the same as Spu.name, normally they will bound. 2. ChoiceGroup.maxNumber should greater than or equals to ChoiceGroup.minNumber and ChoiceGroup.maxNumber should greate
 - [POST /product/choicegroup/batchupdate](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/updatechoicegroups.md): 1. Mostly like 3.4.2 but ChoiceGroup.id is required. 2. Please make sure the ChoiceGroup data object is complete. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/choicegroup/listappliedspu](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/querychoicegroupappliedspu.md): 1. Query ChoiceGroup's applied products. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/choicegroup/batchdel](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/deletechoicegroups.md): 1. Batch delete ChoiceGroups and related ChoiceGroupSkus. **Rate limit:** 10 QPS by appId dimension.
 - [POST /product/choicegroupskustatus/batchupdate](https://api-docs.mykeeta.com/apis/standard/menu/keetaid-based/updatechoicegroupskustatus.md): 1. Notice that the available ChoiceGroupSkus should greater than or equals to minNumber. **Rate limit:** 10 QPS by appId dimension.
## Product Picture

 - [POST /base/image/upload](https://api-docs.mykeeta.com/apis/standard/menu/product-picture/uploadimage.md): This endpoint allows merchants to upload images to the Keeta platform. The returned image URL can be used during menu synchronization. **Rate Limiting:** App-level throttling: **QPS ≤ 50** **Implement
