CMS Tool API schema
Public API version 1.4.10.
Categories
Categories are used to group products. Products can belong in up to 8 categories. Categories can also form a tree, with Category parent ID = 0 being the parent level category. The term group is synomous with category, so many elements are prefixed with the word group.
Endpoint URL
https://api.cms-tool.net/api/category
/api/category
Read and update product categories.
GET
List records, or retrieve one by appending its ID to the path.
Query parameters
| Name | Type | Example | Notes |
|---|---|---|---|
id | int | 123 | Filter results by id. |
page | int | 123 | Filter results by page. |
keywords | text | example | Filter results by keywords. |
code | text | ABC123 | Filter results by code. |
parentid | int | 123 | Filter results by parentid. |
filename | text | example.jpg | Filter results by filename. |
offset | int | 123 | Skip this many matching records before returning results. |
pageSize | int | 123 | Limit the number of records returned. |
POST
Create or update a record from a JSON object.
Request content type: application/json
Request body fields
| Name | Type | Example | Notes |
|---|---|---|---|
id | int | 123 | Set the id value. |
group_name | text | example | Set the group name value. |
group_code | text | ABC123 | Set the group code value. |
group_parent | int | 123 | Set the group parent value. |
page | int | 123 | Set the page value. |
Data definitions
| Field | Type | Description | Format | Example |
|---|---|---|---|---|
group_metadesc | text | SEO Meta Description for search engine results | ||
group_price_rrp_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_maxlevelforsee | int | If no trade customners should see this product, then the value should be 175, that includes a broad range of retail customer levels. 200 level is an authorised user.  (Validation: 175,200,300,500,999) | ||
group_pricea_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_subtitle | text | Sub title, optional field (specific use cases) | ||
group_product_footer | text | Cascade this text to all product footers. (Validation: HTML) | ||
group_priceh_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_sort_override | text | Irrespective of how categories are usually sorted within a list of categories, this sort override will take preference. Allowing you to have a finer control over over the sorting. Sorting by this column is alphanumeric. Default sorting will take second precedence if this column is blank. Advanced users only. (Validation: eg A1, A2, B1, B2, etc) | ||
group_priceb_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_api_setting_id | int | Which API connection is active as the master/source for syncing products with this category | ||
group_filename | text | SEO Filename, can be root / based for published file, or otherwise /category/ is prepended for dynamic categories (Validation: eg /blue-suede-shoes) | ||
group_img_json | json | Meta data about the primary image for the category | ||
group_img | text | Primary image for a category as displayed in a list of categories.  When importing data, you can reference an external URL to an image, and some minutes/hours later, the image file will be migrated to our server, and the database updated to use a local reference. (Validation: eg /images/ or https://...) | ||
group_name | text | Category name and title. As used in category menu, or within page as the primary link text to navigate to a category. (Validation: required) | ||
group_sorting | text | Overrides the default sorting of a list of products within the category.. Sorting affects the product list. (Validation: CHRONO, ALPHA etc) | ||
groupid | serial | Primary ID for the category / group of products | 123456 | |
group_api_source_name | text | The name of the third party category that is synced with this category | ||
group_pricef_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_pricec_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_product_information_tab | text | Cascade this text to all product information tabs. (Validation: HTML) | ||
group_data_json | json | Additional Data about this category | ||
group_google_category | text | eg as per https://support.google.com/merchants/answer/6324436?hl=en | ||
group_desc | text | Short description, as might be displayed in a list of categories. | ||
page | int | System ID representing the page ID | 123456 | |
group_age_target | int | Target age of product user. Only the following integers are used, indicating the closest target age group. eg 25 young adult. 50 mature adult. 70 retired. If value is > 0 then cascades to products automatically.  Used with market places. (Validation: 0,1,2,3,5,10,15,25,50,70) | ||
group_privacy_cascade | bool | Optional setting to apply the above privacy rules to all products within this category. By default, products are soft linked to categories, and category privacy does not impact on products.  (Validation: t,f) | ||
group_all_products_categoryid | int | Limit the smart category choices by this category ID | ||
group_html_footer | text | HTML Content displayed at the end of a category (after product list) (Validation: HTML) | ||
group_privacy_mbrgroupid | int | If only selected user groups should see this, then a non zero ID of the required member group. Usually this should be used in conjunction with a group_minlevelforsee>0 for best security.  (Validation: Fkey reference to mbr_groupid) | ||
group_code | text | A third party code used for syncing data during import/export, | ||
group_api_source_id | text | GUID or similar third party category ID that is linked to our category | ||
group_linkgroupid | int | Dummy link to a target category. Essentially this category doesn't exist, but simply links to the target category, and the target category name/description/url etc takes precedence for display. (Validation: FKey to groupid) | ||
group_api_auto_last_lookup | timestamp | The timestamp of the last sync of this category | 2025-12-31 23:59:59 | |
group_pricee_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_banner_image | text | If the template supports a banner, then this image will replace the page or site banner. (Validation: eg /images/) | ||
group_search_advanced | int | The category menus can be split into multiple menus, so 2 = secondary menu, 3 = third menu etc. Primarily this is used with the template advanced product search filter widget. (Validation: 0,2,3,4) | ||
group_all_products | text | Not your ordinary category, this category will ignore any products assigned to it, but will instead search all products in your database that match some special rules. (Validation: ALL = All productsNEW = New products NEW180 = New products 180 daysONSPECIAL = All discounted products REVIEWS = All products  with recent reviews.) | ||
group_html_header | text | HTML Content displayed at the top of a category (before product list) (Validation: HTML) | ||
group_parent | int | Sub categories will point to their parent Category ID. Top level categories will have value = 0 (Validation: Fkey to groupid ) | ||
group_madeincountry | text | Country Code of origin. (2 digit country code, one code only. Used with market places.. Cascades to products (Validation: NZ,AU,US,CA,CM,JP etc) | ||
group_old_category_parent | text | Used during imports only...provides the parent category name, ID,. or parent code, and then converts to an ID | ||
group_minlevelforsee | int | If only trade customers should see this product, then the value is > 0. If 0, then this product is visible to public. (Validation: 0,100,200,...,999) | ||
group_all_products_filter | text | When using the All Product Filter Mode, this field might provide additional filter keywords to apply, eg a brand name to match on if all product filte rmode is brand. | ||
group_metatitle | text | SEO Meta Title for search engine results | ||
group_catid | int | Our market places integration will use this generic category ID to associate your products with relevant generic classifications (Validation: FKey to third party list) | ||
group_priced_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_api_auto_add | bool | Should products be automatically added to this category? | ||
group_priceg_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_price_checkout_rate | decimal | Only when prices of products in this category should use the rate card from a base price | ||
group_banner_img_json | json | Additional meta data about the banner image, eg size and resolution | ||
group_api_extra_params | text | Extra parameters required to sync this category with a third party category |
Sample object
{
"group_privacy_mbrgroupid": 0,
"group_pricea_rate": "0.00",
"group_linkgroupid": -9,
"group_pricee_rate": "0.00",
"group_duplicationid": 0,
"group_priceh_rate": "0.00",
"group_priceb_rate": "0.00",
"group_search_advanced": 0,
"id": 198902,
"group_parent": 0,
"group_name": "API Products",
"groupid": 123,
"group_pricef_rate": "0.00",
"group_minlevelforsee": 0,
"group_cnt_sub_categories": 0,
"group_cnt_products": 0,
"group_cnt_products_public": 0,
"group_pricec_rate": "0.00",
"group_catid": 0,
"group_hidden": " ",
"page": 0,
"group_order": 100,
"group_priced_rate": "0.00",
"group_priceg_rate": "0.00",
"cid": 111
}Machine-readable documentation
This documentation is also available as JSON or Markdown at the same URL. Request JSON with Accept: application/json or Markdown with Accept: text/markdown.