Skip to content

Keeta Menu Management API (v.1.0.0)

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

Download OpenAPI description
Overview
Keeta Developer Website

https://developers.mykeeta.com/

Languages
Servers

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

Operations

Request

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 Limiting App-level throttling: QPS ≤ 50

Notes

  1. Entity Matching Logic The system identifies entities as follows:
  • Update: When matching openItemCode values exist in the store's current menu
  • Addition: When no matching openItemCode values are found
  • Deletion: All existing entities with openItemCode values not present in the request

2. Execution Semantics 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.

3. Image Handling The endpoints supports standard HTTP/HTTPS (ports 80/443) external image URLs, which must comply with platform specifications regarding size, format, and accessibility.

4. Validation Requirements:

TypeRequirements
Category- 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
Choicegroup- 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
Product (SPU)- 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
Product Sorting- Optional field that defaults to upload sequence when empty
- Requires complete sorting data for all products across all categories when provided
Bodyapplication/jsonrequired
shopIdinteger(int64)required

Unique identifier of the Keeta store.

Example: 12345
shopCategoryListArray of objects(ShopCategory)required

Please send all the menu category info of the specific store to this field.

shopCategoryList[].​idinteger(int64)

Keeta's menu category ID. Not required for OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs.

Example: 12345
shopCategoryList[].​namestringrequired

Name of the category in a menu

Example: "Happy Meal"
shopCategoryList[].​sourceLanguageTypestringrequired

Language type of the name field. Supported language enums can be found in Menu Integration Guide

Example: "en"
shopCategoryList[].​nameTranslationstring

Translated text for the name field

Example: "開心樂園餐"
shopCategoryList[].​targetLanguageTypestring

Language type of nameTranslation. Required when nameTranslation is provided.

Example: "zh-HK"
shopCategoryList[].​nameTranslateTypeinteger

Source of name translation. When the value equals 1, it indicates that the name translation was provided by the merchant.

Example: 1
shopCategoryList[].​typeintegerrequired

Indicates the menu category type:

Enum ValueDescription
0

indicates a regular optional category (customers may skip)

1

indicates a required category (customers must select at least one item)

Example: 0
shopCategoryList[].​descriptionstring

Brief description of the category in a menu

Example: "Happy Meal description"
shopCategoryList[].​descSourceLanguageTypestring

Language type of description. Required if description exists.

Example: "en"
shopCategoryList[].​descriptionTranslationstring

Translated text for description

Example: "開心樂園餐描述"
shopCategoryList[].​descTargetLanguageTypestring

Language type of descriptionTranslation. Required when descriptionTranslation exists.

Example: "zh-HK"
shopCategoryList[].​descriptionTranslateTypeinteger

Source of description translation. When the value equals 1, it indicates that the description translation was provided by the merchant.

Example: 1
shopCategoryList[].​openItemCodestringrequired

Third-party category ID. Mandatory and must be unique in OpenItemCode-based APIs. Optional in Keeta ID-based APIs.

Example: "SHOP_CATEGORY#10001"
shopCategoryList[].​availableTimeobject

Selling time slots for this category. Categories are unavailable outside these times.

choiceGroupListArray of objects(ChoiceGroup)required

Please send all the choicegroup info of the specific store to this field.

choiceGroupList[].​idinteger(int64)

Unique ChoiceGroup ID generated by Keeta system. Not required in OpenItemCode-based APIs. Required for updates in Keeta ID-based APIs.

Example: 0
choiceGroupList[].​namestringrequired

Display name of the ChoiceGroup

Example: "Sauces"
choiceGroupList[].​sourceLanguageTypestringrequired

Language code for name field (refer to Menu Integration Guide)

Example: "en"
choiceGroupList[].​nameTranslationstring

Localized name translation

Example: "選擇醬料"
choiceGroupList[].​targetLanguageTypestring

Language code for nameTranslation (required if translation exists), please refer to Menu API Integration Guide

Example: "zh-HK"
choiceGroupList[].​nameTranslateTypeinteger

Source of name translation. When the value equals 1, it indicates that the name translation was provided by the merchant.

Example: 1
choiceGroupList[].​minNumberintegerrequired

Minimum number of ChoiceGroupSkus that must be selected

Example: 0
choiceGroupList[].​maxNumberintegerrequired

Maximum number of ChoiceGroupSkus that can be selected

Example: 3
choiceGroupList[].​choiceGroupSkuListArray of objects(ChoiceGroupSku)required

List of available ChoiceGroupSkus in this ChoiceGroup

choiceGroupList[].​choiceGroupSkuList[].​idinteger(int64)

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.

Example: 0
choiceGroupList[].​choiceGroupSkuList[].​namestringrequired

Display name of the ChoiceGroupSku. Should match SPU name when representing the same product for internal correlation.

Example: "Ketchup"
choiceGroupList[].​choiceGroupSkuList[].​sourceLanguageTypestringrequired

Language code for name field (refer to Menu Integration Guide)

Example: "en"
choiceGroupList[].​choiceGroupSkuList[].​nameTranslationstring

Localized name translation

Example: "番茄醬"
choiceGroupList[].​choiceGroupSkuList[].​targetLanguageTypestring

Language code for nameTranslation (required if translation exists), please refer to Menu API Integration Guide

Example: "zh-HK"
choiceGroupList[].​choiceGroupSkuList[].​nameTranslateTypeinteger

Source of name translation. When the value equals 1, it indicates that the name translation was provided by the merchant.

Example: 1
choiceGroupList[].​choiceGroupSkuList[].​pricestring

Delivery price (supports 2 decimal places)

Example: "12.33"
choiceGroupList[].​choiceGroupSkuList[].​pickPricestring

Pickup price (supports 2 decimal places)

Example: "12.33"
choiceGroupList[].​choiceGroupSkuList[].​canteenPricestring

Dine-in price (supports 2 decimal places)

Example: "12.33"
choiceGroupList[].​choiceGroupSkuList[].​currencystring

Currency code (refer to "Currency Symbols" enum). Defaults to merchant's currency.

Example: "HKD"
choiceGroupList[].​choiceGroupSkuList[].​statusintegerrequired

Availability status:

0: indicates the ChoiceGroupSku is unavailable / 1: indicates ChoiceGroupSku is available

Example: 1
choiceGroupList[].​choiceGroupSkuList[].​openItemCodestringrequired

Third-party ChoiceGroupSku identifier. Mandatory and unique in OpenItemCode-based APIs.

Example: "CHOICE#10001"
choiceGroupList[].​choiceGroupSkuList[].​nutritionalInfoobject

Nutritional components (refer to "Nutritional Elements" enum)

choiceGroupList[].​choiceGroupSkuList[].​allergensArray of strings

Allergen information (refer to "Allergens" enum)

choiceGroupList[].​choiceGroupSkuList[].​pictureListArray of objects

ChoiceGroupSku image URLs

choiceGroupList[].​choiceGroupSkuList[].​relatedSpuOpenItemCodestring

Third-party SPU identifier this ChoiceGroupSku should bind to. Using this to explicitly bind the ChoiceGroupSku to the given SPU.

choiceGroupList[].​choiceGroupSkuList[].​relatedSkuOpenItemCodestring

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[].​openItemCodestringrequired

Developer-provided ChoiceGroup identifier. Mandatory and unique in OpenItemCode-based APIs.

Example: "GROUP#10001"
choiceGroupList[].​repeatableinteger

Multiple selection flag:

Enum ValueDescription
0

indicates single selection only

1

allows multiple selections of the same ChoiceGroupSku

Example: 0
spuListArray of objects(SPU)required

Please send all the SKU info of the specific store to this field.

spuList[].​idinteger(int64)

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.

Example: 12345
spuList[].​namestringrequired

Product name

Example: "Spicy Chicken Burger"
spuList[].​sourceLanguageTypestringrequired

Language code for name field (refer to Menu Integration Guide)

Example: "en"
spuList[].​nameTranslationstring

Localized name translation

Example: "辣雞腿漢堡"
spuList[].​targetLanguageTypestring

Language code for nameTranslation (required if translation exists), please refer to Menu API Integration Guide

Example: "zh-HK"
spuList[].​nameTranslateTypeinteger

Source of name translation. When the value equals 1, it indicates that the name translation was provided by the merchant.

Example: 1
spuList[].​statusintegerrequired

Product availability status:

Enum ValueDescription
0

indicates the SPU is unavailable

1

indicates the SPU is available

Example: 1
spuList[].​descriptionstring

Product description

Example: "Spicy Chicken Burger description"
spuList[].​descSourceLanguageTypestring

Language code for description (required if description exists), please refer to Menu API Integration Guide

Example: "en"
spuList[].​descriptionTranslationstring

Localized description translation

Example: "辣雞腿漢堡描述"
spuList[].​descTargetLanguageTypestring

Language code for descriptionTranslation (required if translation exists), please refer to Menu API Integration Guide

Example: "zh-HK"
spuList[].​descriptionTranslateTypeinteger

Source of description translation. When the value equals 1, it indicates that the description translation was provided by the merchant.

Example: 1
spuList[].​shopCategoryListArray of objects(ShopCategory)

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.

spuList[].​pictureListArray of objects(Picture)

Product image URLs

spuList[].​propertyListArray of objects(CategoryProperty)

SPU specifications (e.g., "Size" options for pizza)

spuList[].​skuListArray of objects(SKU)required

A list includes all SKUs under this SPU

spuList[].​skuList[].​idinteger(int64)

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.

Example: 12345
spuList[].​skuList[].​specstring

Specification name (optional for single-spec products)

Example: "Large"
spuList[].​skuList[].​sourceLanguageTypestring

Language code for name field (refer to Menu Integration Guide)

Example: "en"
spuList[].​skuList[].​specTranslationstring

Localized specification translation

Example: "大份"
spuList[].​skuList[].​targetLanguageTypestring

Language code for specTranslation (required if translation exists), please refer to Menu API Integration Guide

Example: "zh-HK"
spuList[].​skuList[].​specTranslateTypestring

Source of spec translation. When the value equals 1, it indicates that the spec translation was provided by the merchant.

Example: "1"
spuList[].​skuList[].​pricestring

Delivery price (supports 3 decimal places, e.g. "12.33")

Example: "28.0"
spuList[].​skuList[].​pickPricestring

Pickup price (supports 3 decimal places)

Example: "28.0"
spuList[].​skuList[].​canteenPricestring

Dine-in price (supports 3 decimal places)

Example: "28.0"
spuList[].​skuList[].​currencystring

Currency code (refer to "Currency Symbols" enum). Defaults to merchant's currency if empty.

Example: "HKD"
spuList[].​skuList[].​choiceGroupListArray of objects(ChoiceGroup)

List of ChoiceGroups associated with this SKU. Not used for menuSync API.

spuList[].​skuList[].​openItemCodestringrequired

Developer-provided SKU identifier. Mandatory and unique in OpenItemCode-based APIs. Optional for Keeta-based ID APIs.

Example: "SKU#10001"
spuList[].​skuList[].​choiceGroupOpenItemCodeListArray of strings

OpenItemCodes of associated ChoiceGroups. Required for menuSync API.

spuList[].​skuList[].​nutritionalInfoobject

Nutritional components (refer to "Nutritional Elements" enum)

spuList[].​skuList[].​allergensArray of strings

Allergen information (refer to "Allergens" enum)

spuList[].​availableTimeobjectrequired

Selling time slots for this product

spuList[].​availableTime.​codeintegerrequired

Selling time type indicator:

Enum ValueDescription
0

indicates all-day availability

1

indicates weekly schedule

2

indicates specific date ranges

Example: 0
spuList[].​availableTime.​valuesArray of strings

Required when code=1. Contains 7 strings representing daily time slots (Sunday to Saturday). Empty string means unavailable.

spuList[].​availableTime.​availableArray of objects(Availability)

Defines specific date ranges and time windows. Required when code=2.

spuList[].​isSpecialtyintegerrequired

Signature dish indicator:

Enum ValueDescription
0

indicates a regular item

1

indicates a signature dish

Example: 0
spuList[].​openItemCodestringrequired

Developer-provided SPU identifier. Mandatory and unique in OpenItemCode-based APIs.

Example: "SPU#10001"
spuList[].​shopCategoryOpenItemCodeListArray of stringsrequired

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.

Example: ["2$33419","3$34747"]
spuList[].​userGetModeListArray of stringsrequired

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

Example: ["delivery","pickup"]
spuSequenceCodeMapobject

This field allows developers to set product sorting within menu categories. When the value equals null, product sorting follows Keeta's default sorting.

Data Structure:

  • Key: Menu category's OpenItemCode
  • Value: Array of SPU OpenItemCodes in desired display order

Merchants can specify exact product order by listing SPU OpenItemCodes in the desired sequence for each category. The specified order updates the in-app display, showcasing products in the defined arrangement.

Example: {"shopCategoryOpenItemCode1":["spuOpenItemCode1","spuOpenItemCode2"],"shopCategoryOpenItemCode2":["spuOpenItemCode1","spuOpenItemCode3"]}
curl -i -X POST \
  https://open.mykeeta.com/api/open/product/menu/sync \
  -H 'Content-Type: application/json' \
  -d '{
    "shopCategoryList": [
      {
        "nameTranslation": "開心樂園餐",
        "descriptionTranslation": "開心樂園餐描述",
        "description": "Happy Meal description",
        "type": 0,
        "descSourceLanguageType": "en",
        "sourceLanguageType": "en",
        "descriptionTranslateType": 1,
        "openItemCode": "SHOP_CATEGORY#10001",
        "availableTime": {
          "code": 0,
          "values": [
            "string"
          ],
          "available": [
            {
              "endTimestamp": 1736956799000,
              "startTimestamp": 1735660800000
            }
          ]
        },
        "targetLanguageType": "zh-HK",
        "descTargetLanguageType": "zh-HK",
        "name": "Happy Meal",
        "id": 12345,
        "nameTranslateType": 1
      }
    ],
    "spuList": [
      {
        "nameTranslation": "辣雞腿漢堡",
        "skuList": [
          {
            "pickPrice": "28.0",
            "nutritionalInfo": {
              "property2": 0,
              "property1": 0
            },
            "specTranslateType": "1",
            "specTranslation": "大份",
            "choiceGroupList": [],
            "spec": "Large",
            "sourceLanguageType": "en",
            "allergens": [
              "string"
            ],
            "openItemCode": "SKU#10001",
            "choiceGroupOpenItemCodeList": [
              "GROUP#10001"
            ],
            "targetLanguageType": "zh-HK",
            "price": "28.0",
            "canteenPrice": "28.0",
            "currency": "HKD",
            "id": 12345
          }
        ],
        "shopCategoryList": [],
        "propertyList": [
          {
            "propertyName": "",
            "propertyType": 1,
            "customizable": 0,
            "propertyValueList": [
              {
                "valueId": 9999,
                "valueName": ""
              }
            ],
            "maxValueNumber": 0,
            "minValueNumber": 0,
            "propertyId": 9999
          }
        ],
        "descriptionTranslation": "辣雞腿漢堡描述",
        "description": "Spicy Chicken Burger description",
        "userGetModeList": [
          "delivery",
          "pickup"
        ],
        "descSourceLanguageType": "en",
        "isSpecialty": 0,
        "sourceLanguageType": "en",
        "descriptionTranslateType": 1,
        "availableTime": {
          "code": 0,
          "values": [
            "string"
          ],
          "available": [
            {
              "endTimestamp": 1736956799000,
              "startTimestamp": 1735660800000
            }
          ]
        },
        "openItemCode": "SPU#10001",
        "targetLanguageType": "zh-HK",
        "descTargetLanguageType": "zh-HK",
        "name": "Spicy Chicken Burger",
        "shopCategoryOpenItemCodeList": [
          "SHOP_CATEGORY#10001"
        ],
        "id": 12345,
        "pictureList": [
          {
            "url": "string"
          }
        ],
        "nameTranslateType": 1,
        "status": 1
      },
      {
        "nameTranslation": "漢堡套餐",
        "skuList": [
          {
            "pickPrice": "15.0",
            "nutritionalInfo": {
              "property2": 0,
              "property1": 0
            },
            "specTranslateType": "1",
            "specTranslation": "中份",
            "choiceGroupList": [],
            "spec": "Regular",
            "sourceLanguageType": "en",
            "allergens": [
              "string"
            ],
            "openItemCode": "SKU#10002",
            "choiceGroupOpenItemCodeList": [
              "GROUP#10002"
            ],
            "targetLanguageType": "zh-HK",
            "price": "15.0",
            "canteenPrice": "15.0",
            "currency": "HKD",
            "id": 12345
          }
        ],
        "shopCategoryList": [],
        "propertyList": [
          {
            "propertyName": "",
            "propertyType": 1,
            "customizable": 0,
            "propertyValueList": [
              {
                "valueId": 9999,
                "valueName": ""
              }
            ],
            "maxValueNumber": 0,
            "minValueNumber": 0,
            "propertyId": 9999
          }
        ],
        "descriptionTranslation": "漢堡套餐",
        "description": "Burger Meal description",
        "userGetModeList": [
          "delivery",
          "pickup"
        ],
        "descSourceLanguageType": "en",
        "isSpecialty": 0,
        "sourceLanguageType": "en",
        "descriptionTranslateType": 1,
        "availableTime": {
          "code": 0,
          "values": [
            "string"
          ],
          "available": [
            {
              "endTimestamp": 1736956799000,
              "startTimestamp": 1735660800000
            }
          ]
        },
        "openItemCode": "SPU#10002",
        "targetLanguageType": "zh-HK",
        "descTargetLanguageType": "zh-HK",
        "name": "Burger Meal",
        "shopCategoryOpenItemCodeList": [
          "SHOP_CATEGORY#10001"
        ],
        "id": 12345,
        "pictureList": [
          {
            "url": "string"
          }
        ],
        "nameTranslateType": 1,
        "status": 1
      }
    ],
    "spuSequenceCodeMap": {
      "shopCategoryOpenItemCode2": [
        "spuOpenItemCode1",
        "spuOpenItemCode3"
      ],
      "shopCategoryOpenItemCode1": [
        "spuOpenItemCode1",
        "spuOpenItemCode2"
      ]
    },
    "choiceGroupList": [
      {
        "nameTranslation": "選擇醬料",
        "minNumber": 0,
        "openItemCode": "GROUP#10001",
        "targetLanguageType": "zh-HK",
        "maxNumber": 3,
        "repeatable": 0,
        "name": "Sauces",
        "id": 0,
        "choiceGroupSkuList": [
          {
            "pickPrice": "12.33",
            "nutritionalInfo": {
              "property2": 0,
              "property1": 0
            },
            "nameTranslation": "番茄醬",
            "sourceLanguageType": "en",
            "allergens": [
              "string"
            ],
            "openItemCode": "CHOICE#10001",
            "targetLanguageType": "zh-HK",
            "price": "12.33",
            "canteenPrice": "12.33",
            "name": "Ketchup",
            "currency": "HKD",
            "id": 0,
            "nameTranslateType": 1,
            "status": 1
          }
        ],
        "sourceLanguageType": "en",
        "nameTranslateType": 1
      },
      {
        "nameTranslation": "選擇漢堡",
        "minNumber": 1,
        "openItemCode": "GROUP#10002",
        "targetLanguageType": "zh-HK",
        "maxNumber": 1,
        "repeatable": 0,
        "name": "Choose a Burger",
        "id": 0,
        "choiceGroupSkuList": [
          {
            "pickPrice": "10.00",
            "nutritionalInfo": {
              "property2": 0,
              "property1": 0
            },
            "nameTranslation": "辣雞腿漢堡",
            "relatedSkuOpenItemCode": "SKU#10001",
            "sourceLanguageType": "en",
            "allergens": [
              "string"
            ],
            "openItemCode": "CHOICE#10002",
            "targetLanguageType": "zh-HK",
            "price": "10.00",
            "canteenPrice": "10.00",
            "name": "Spicy Chicken Burger",
            "currency": "HKD",
            "id": 0,
            "nameTranslateType": 1,
            "status": 1
          }
        ],
        "sourceLanguageType": "en",
        "nameTranslateType": 1
      }
    ],
    "shopId": 12345
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
datainteger(int64)

When interacting with Keeta's platform for actions that require asynchronous processing, such as complex data operations or system integrations, the platform will initiate a task that may not complete immediately upon request submission. Instead of providing immediate completion confirmation, Keeta's system generates a taskId, which serves as a unique identifier for that specific task in the internal execution system.

Response
application/json
{ "code": 0, "message": "Success", "data": 0 }

Request

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 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.

Bodyapplication/jsonrequired
shopIdinteger(int64)required

Unique identifier of the Keeta store.

Example: 12345
spuOpenItemCodeListArray of stringsrequired

A list of SPU OpenItemCode

Example: ["aCV","2code"]
statusintegerrequired

This field controls the visibility and availability of a SPU in the merchant storefront. Status = 0, this setting will immediately deactivate the specified SPU. Status = 1, this setting activates the SPU for public visibility and ordering.

Example: 1
needLinkageinteger

This field determines whether the status change should propagate to related SKUs, with these behaviors: When needLinkage equals 0 the status update applies exclusively to the specified ChoiceGroupSku without affecting any related products. When needLinkage equals 1, the system will automatically identify and update all logically connected ChoiceGroupSkus based on existing mapping between ChoiceGroupSku names match SPU names

Example: 1
curl -i -X POST \
  https://open.mykeeta.com/api/open/product/spustatus/batchupdatebycode \
  -H 'Content-Type: application/json' \
  -d '{
    "shopId": 12345,
    "spuOpenItemCodeList": [
      "aCV",
      "2code"
    ],
    "status": 1,
    "needLinkage": 1
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
dataArray of strings

Contains a list of OpenItemCodes for all SPUs whose statuses were successfully changed.

errorListArray of objects(ErrorSpu)

Failed SPUs list includes OpenItemCode and Error Message.

Response
application/json
{ "code": 0, "message": "Success", "data": [ "string" ], "errorList": [ {} ] }

Batch Update ChoiceGroupSku Status

Request

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 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.
Bodyapplication/jsonrequired
shopIdinteger(int64)required

Unique identifier of the Keeta store.

Example: 12345
choiceGroupSkuCodePackListArray of objects(ChoiceGroupSkuCodePack)required

This field includes ChoicegroupSkus that required status updates.

choiceGroupSkuCodePackList[].​choiceGroupCodestringrequired

The OpenItemCode identifier for the ChoiceGroup, provided by the developer.

Example: "SET-77017010009-3"
choiceGroupSkuCodePackList[].​choiceGroupSkuCodesArray of stringsrequired

List of valid option OpenItemCodes that belong to the specified ChoiceGroup. All codes must exist within the given choiceGroupCode's option set.

Example: ["54ee29c7271d4ce18c5f8c63811e7ab1#77017010009#3#66026020003"]
statusintegerrequired

This field controls the visibility and availability of a ChoiceGroupSku in the merchant storefront. Status = 0, this setting will immediately deactivate the specified ChoiceGroupSku. Status = 1, this setting activates the ChoiceGroupSku for public visibility and ordering.

Example: 1
curl -i -X POST \
  https://open.mykeeta.com/api/open/product/choicegroupskustatus/batchupdatebycode \
  -H 'Content-Type: application/json' \
  -d '{
    "shopId": 12345,
    "choiceGroupSkuCodePackList": [
      {
        "choiceGroupCode": "SET-77017010009-3",
        "choiceGroupSkuCodes": [
          "54ee29c7271d4ce18c5f8c63811e7ab1#77017010009#3#66026020003"
        ]
      }
    ],
    "status": 1
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
datainteger(int64)

The quality of OpenItemCodes of choicegroupsku whose statuses were successfully changed.

Example: 239
errorListArray of objects(ErrorChoiceGroup)

A list contains the OpenItemCode for each option whose status update failed.

Response
application/json
{ "code": 0, "message": "Success", "data": 239, "errorList": [ {} ] }

Request

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 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.
Bodyapplication/jsonrequired
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 12345
spuMappingListArray of objects(SpuMapping)required

Please specify the mapping relationship between SPU names and their corresponding openItemCodes in this field. For detailed definitions of openItemCode, please refer to the Menu Development Guide documentation.

spuMappingList[].​namestringrequired

Display name of the SPU

Example: "Spicy Beef Noodles"
spuMappingList[].​openItemCodestringrequired

Developer-provided external identifier that maintains a one-to-one mapping with Keeta's internal spuId. Must be unique across all SPUs. For details, see Menu Integration Guide

Example: "SPU#10001"
spuMappingList[].​skuListArray of objects(SkuMapping)required

List of SKUs associated with this SPU using OpenItemCode references For details, see Menu Integration Guide

spuMappingList[].​skuList[].​specstring

Display name of the SKU

Example: "Big"
spuMappingList[].​skuList[].​openItemCodestringrequired

Developer-provided external identifier that maintains a one-to-one mapping with Keeta's internal skuId. Must be unique across all SKUs. For details, see Menu Integration Guide

Example: "1582"
spuMappingList[].​languageTypestringrequired

Language code for the name field

Example: "en"
curl -i -X POST \
  https://open.mykeeta.com/api/open/product/mapping/batchupdatebyname \
  -H 'Content-Type: application/json' \
  -d '{
    "shopId": 12345,
    "spuMappingList": [
      {
        "name": "Spicy Beef Noodles",
        "openItemCode": "SPU#10001",
        "skuList": [
          {
            "spec": "Big",
            "openItemCode": "1582"
          }
        ],
        "languageType": "en"
      }
    ]
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
dataArray of strings

Returns a list of OpenItemCode values for all SPUs that were successfully bound during this API request.

errorListArray of objects(ErrorSpu)

Returns detailed information about SPUs that failed to bind, including SPU OpenItemCode and error message.

Response
application/json
{ "code": 0, "message": "Success", "data": [ "string" ], "errorList": [ {} ] }
Webhooks
Operations
Operations