This API provides comprehensive menu management capabilities for Keeta platform integration, including menu synchronization, product status management, and real-time notifications.
- Modify the available and unavailable status(in batch)
Keeta Menu Management API (v.1.0.0)
https://open.mykeeta.com/api/open/
Request
- Mostly like 3.3.3.
- 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.
- As for Sku, if the Sku.id is filled, please make sure the Sku.id is belongs to this Spu. If Sku.id is not filled, we will treat it as a new one.
Rate limit: 10 QPS by appId dimension.
Spu data model
Unique SPU ID generated by Keeta. Not required in OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs. See "Menu Development Guide" for details.
Language code for name field (refer to Menu Integration Guide)
Language code for nameTranslation (required if translation exists), please refer to Menu API Integration Guide
Source of name translation. When the value equals 1, it indicates that the name translation was provided by the merchant.
Product availability status:
Enum Value | Description |
---|---|
0 | indicates the SPU is unavailable |
1 | indicates the SPU is available |
Language code for description (required if description exists), please refer to Menu API Integration Guide
Language code for descriptionTranslation (required if translation exists), please refer to Menu API Integration Guide
Source of description translation. When the value equals 1, it indicates that the description translation was provided by the merchant.
Menu categories this SPU belongs to. The 'id' field is required when not using menuSync API. For all interfaces using this struct except menuSync, the id field in ShopCategory struct is required to associate SPUs with category.
SPU specifications (e.g., "Size" options for pizza)
A list includes all SKUs under this SPU
Unique SKU ID generated by Keeta system. Not required in OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs. For details, see "Menu Development Guide" for details.
Specification name (optional for single-spec products)
Language code for name field (refer to Menu Integration Guide)
Language code for specTranslation (required if translation exists), please refer to Menu API Integration Guide
Source of spec translation. When the value equals 1, it indicates that the spec translation was provided by the merchant.
Delivery price (supports 3 decimal places, e.g. "12.33")
Currency code (refer to "Currency Symbols" enum). Defaults to merchant's currency if empty.
List of ChoiceGroups associated with this SKU. Not used for menuSync API.
Developer-provided SKU identifier. Mandatory and unique in OpenItemCode-based APIs. Optional for Keeta-based ID APIs.
OpenItemCodes of associated ChoiceGroups. Required for menuSync API.
Nutritional components (refer to "Nutritional Elements" enum)
Selling time slots for this product
Selling time type indicator:
Enum Value | Description |
---|---|
0 | indicates all-day availability |
1 | indicates weekly schedule |
2 | indicates specific date ranges |
Required when code=1. Contains 7 strings representing daily time slots (Sunday to Saturday). Empty string means unavailable.
Signature dish indicator:
Enum Value | Description |
---|---|
0 | indicates a regular item |
1 | indicates a signature dish |
Developer-provided SPU identifier. Mandatory and unique in OpenItemCode-based APIs.
This field contains the OpenItemCodes that correspond to menu categories in Keeta's system. When calling the menu synchronization (menuSync) API, this field becomes mandatory. The OpenItemCodes are provided by developers and maintain a one-to-one relationship with Keeta's internal menu category IDs. The Keeta platform will verify whether these OpenItemCodes actually exist in the merchant's store.
This field specifies the supported order fulfillment modes, with case-sensitive values. By default, all products support "delivery" mode. To enable "pickup" mode, the following conditions must be satisfied: First, every SKU in the skuList must have a valid pickPrice value specified. Second, all options within every choice group associated with these SKUs must also have pickPrice values defined. The system recognizes two mode values: "delivery" for standard food delivery services "pickup" for customer self-collection scenarios
https://open.mykeeta.com/api/open/product/spu/batchupdate
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://open.mykeeta.com/api/open/product/spu/batchupdate \
-H 'Content-Type: application/json' \
-d '{
"shopId": 25381,
"spuList": [
{
"id": 12345,
"name": "Spicy Chicken Burger",
"sourceLanguageType": "en",
"nameTranslation": "辣雞腿漢堡",
"targetLanguageType": "zh-HK",
"nameTranslateType": 1,
"status": 1,
"description": "Spicy Chicken Burger description",
"descSourceLanguageType": "en",
"descriptionTranslation": "辣雞腿漢堡描述",
"descTargetLanguageType": "zh-HK",
"descriptionTranslateType": 1,
"shopCategoryList": [
{
"id": 12345,
"name": "Happy Meal",
"sourceLanguageType": "en",
"nameTranslation": "開心樂園餐",
"targetLanguageType": "zh-HK",
"nameTranslateType": 1,
"type": 0,
"description": "Happy Meal description",
"descSourceLanguageType": "en",
"descriptionTranslation": "開心樂園餐描述",
"descTargetLanguageType": "zh-HK",
"descriptionTranslateType": 1,
"openItemCode": "SHOP_CATEGORY#10001",
"availableTime": {
"code": 0,
"values": [
"string"
],
"available": [
{}
]
}
}
],
"pictureList": [
{
"url": "string"
}
],
"propertyList": [
{
"propertyId": 9999,
"propertyName": "",
"propertyType": 1,
"minValueNumber": 0,
"maxValueNumber": 0,
"customizable": 0,
"propertyValueList": [
{
"valueId": 9999,
"valueName": ""
}
]
}
],
"skuList": [
{
"id": 12345,
"spec": "Large",
"sourceLanguageType": "en",
"specTranslation": "大份",
"targetLanguageType": "zh-HK",
"specTranslateType": "1",
"price": "28.0",
"pickPrice": "28.0",
"canteenPrice": "28.0",
"currency": "HKD",
"choiceGroupList": [
{
"id": 0,
"name": "Sauces",
"sourceLanguageType": "en",
"nameTranslation": "選擇醬料",
"targetLanguageType": "zh-HK",
"nameTranslateType": 1,
"minNumber": 0,
"maxNumber": 3,
"choiceGroupSkuList": [
null
],
"openItemCode": "GROUP#10001",
"repeatable": 0
}
],
"openItemCode": "SKU#10001",
"choiceGroupOpenItemCodeList": [
"string"
],
"nutritionalInfo": {
"property1": 0,
"property2": 0
},
"allergens": [
"string"
]
}
],
"availableTime": {
"code": 0,
"values": [
"string"
],
"available": [
{
"startTimestamp": 1735660800000,
"endTimestamp": 1736956799000
}
]
},
"isSpecialty": 0,
"openItemCode": "SPU#10001",
"shopCategoryOpenItemCodeList": [
"2$33419",
"3$34747"
],
"userGetModeList": [
"delivery",
"pickup"
]
}
]
}'
Batch update result.
A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.
Enum Value | Description |
---|---|
0 | The request was executed successfully. |
Non-zero value | The request execution failed. Specific error details can be viewed in the message field. |
Text description corresponding to the status code, explaining the operation result or error cause to users.
{ "code": 0, "message": "Success", "data": [ { … } ], "errorList": [ { … } ] }
Request
- Product data that can be transmitted in one batch should not exceed 200. If there are more products, please create them in batches.
- The interface supports partial synchronization success and partial synchronization failure. However, if there is a parameter format error, all will fail.
- If there is no available product in a ShopCategory, the ShopCategory will disapear at user APP.
- If needLinkage=1, this API will also modify the status linked to the ChoiceGroupSkus (the same name with Spu). But if the ChoiceGroupSku status violates the rule of ChoiceGroup, it wouldn't be modified.
Rate limit: 10 QPS by appId dimension.
https://open.mykeeta.com/api/open/product/spustatus/batchupdate
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://open.mykeeta.com/api/open/product/spustatus/batchupdate \
-H 'Content-Type: application/json' \
-d '{
"shopId": 25381,
"spuIdList": [
1,
2,
3
],
"status": 1,
"needLinkage": 1
}'
Batch status update result.
A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.
Enum Value | Description |
---|---|
0 | The request was executed successfully. |
Non-zero value | The request execution failed. Specific error details can be viewed in the message field. |
Text description corresponding to the status code, explaining the operation result or error cause to users.
{ "code": 0, "message": "Success", "data": [ { … } ], "errorList": [ { … } ] }
https://open.mykeeta.com/api/open/product/spu/batchcheck
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://open.mykeeta.com/api/open/product/spu/batchcheck \
-H 'Content-Type: application/json' \
-d '{
"shopId": 25381,
"spuIdList": [
1,
2,
3
]
}'
Conflict check result.
A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.
Enum Value | Description |
---|---|
0 | The request was executed successfully. |
Non-zero value | The request execution failed. Specific error details can be viewed in the message field. |
Text description corresponding to the status code, explaining the operation result or error cause to users.
{ "code": 0, "message": "Success", "data": [ { … } ], "errorList": [ { … } ] }