CMS Tool API

CMS Tool API schema

Public API version 1.4.10.

Products

A saleable item, or variant of a parent product.

Endpoint URL

https://api.cms-tool.net/api/product

/api/product

Read and update products.

GET

List products, or retrieve one by appending its ID to the path.

Query parameters

NameTypeExampleNotes
idint123Filter results by id.
pageint123Filter results by page.
keywordstextexampleFilter results by keywords.
codetextABC123Filter results by code.
categoryidint123Filter results by categoryid.
groupidint123Filter results by groupid.
modifiedAfterdate2026-09-24T14:30:00+12:00Filter results by modified after.
includeVariantsbooleantrueInclude variants in the response. Accepts true or 1.
includeAdditionalImagesbooleantrueInclude additional images in the response. Accepts true or 1.
offsetint123Skip this many matching records before returning results.
pageSizeint123Limit the number of records returned.

POST

Create or update a product from JSON. Responses include ImagesPath for later image uploads.

Request content type: application/json

Request body fields

NameTypeExampleNotes
idint123Set the id value.
pageint123Set the page value.
p_titletextexampleSet the p title value.
p_codetextABC123Set the p code value.
p_detailstextexampleSet the p details value.
p_pricenumber19.95Set the p price value.
p_qtyinstocknumber19.95Set the p qtyinstock value.
p_imgtext/images/112136/example.jpgSet the p img value.
variantstextexampleSet the variants value.
additionalImagestextexampleSet the additional images value.
LinkedProductstextexampleSet the linked products value.

POST

Create or update a product and save its images in one multipart request.

Request content type: multipart/form-data

Request body fields

NameTypeExampleNotes
datatext{"id":123}Set the data value.
uploadPrimaryImagetextexample.jpgUpload the primary image.
uploadAdditionalImagetextexample.jpgUpload the additional image.
uploadAdditionalImagestextexample.jpgUpload the additional images.

data contains the product JSON; uploadPrimaryImage accepts one file; either additional-image field may be repeated.

Data definitions

FieldTypeDescriptionFormatExample
p_aggregateratingdecimalAn average review rating (5 stars) value between 0 and 5 (Readonly)
p_maxqtydecimalThe max quantity that can be purchased per order. (Validation: ignore if 0)
p_manufacturertextName of manufacturer
p_assembled_part_countintIf this product is assembled, then it will have a count of parts/materials (not quantity) (Validation: 0+)
p_tab_applicationstextAdditional information about product applications revealed in a tabbed interface (Validation: HTML)
p_voucher_limit_pidintLimit voucher use to this product (Validation: Refers product.id)
p_voucher_not_redeemable_onlineboolIs this product a voucher that is not redeemable online (only redeemable in store)
p_backorder_maxqtydecimalPermittable quantity of back order quantity allowed, perhaps set to the total number currently on back order by the supplier
p_stock_displaytextOverride default stock display rules (Validation: eg OOS,NONE,QTY,etc)
p_last_saletimestampWhen this item was last sold to anyone 2025-12-31 23:59:59
p_pricebreakd_minqtydecimalQuantity required to get cheaper price **p_pricebreakd**
p_cost_pricedecimalThe average cost price of this product. Read only. The cost price is derived from recent purchases.
p_authortextThe authors name, if this is a book or Artists name if this is a painting
p_pricebreakb_minqtydecimalQuantity required to get cheaper price **p_pricebreakb**
p_pricebreakf_minqtydecimalQuantity required to get cheaper price **p_pricebreakf**
p_pricebreakc_minqtydecimalQuantity required to get cheaper price **p_pricebreakc**
p_pricebreake_minqtydecimalQuantity required to get cheaper price **p_pricebreake**
p_price_prefixtextWords that might prefix a price in special circumstances eg From, Estimated, Approx, etc
p_pricebreaka_minqtydecimalQuantity required to get cheaper price **p_pricebreaka**
p_promo_classestextCustom CSS promptional classes that are added to a product to create visual stamps or ohter CSS outcomes
p_imgtextImage (Primary product image). URL can be local reference. External URLs will be imported and replaced with a local file reference. (Validation: URL)
p_api_debugtextEither JSON or XML data as per the last API sync
p_parentpidintProduct variants will have a p_parentpid that links to the master product. Master products have p_parentpid=0. Only master products display on category pages. (Validation: Fkey to PID)
p_tab_reviewstextAdditional information about product reviews revealed in a tabbed interface (Validation: HTML)
p_customer_price_jsonjsonJSON structure for targeted pricing on a unique customer basis, only best price applies compared with customer price teir.
p_voucherexpiryintervalInterval signalling the date of expiry of voucher added to whatever the purchase date was.01:00:00
p_detailstextProduct short description
p_gst_ruleboolCurrently used to identify if GST / Sales tax should apply domestically. If false, then GST is not added to line items. (Validation: Depreciating in favour of tax codes at some point)
p_pricebreakfdecimalQuantity price break price F, subject to minimum quantity **p_pricebreakf_minqty**
p_voucher_percentdecimalPurchase of this product is a percentage based voucher, gives this percentage of discount of a future purchase.
p_pricebreakedecimalQuantity price break price E, subject to minimum quantity **p_pricebreake_minqty**
p_pricebreakb_setupdecimalSetup price added to total if Quantity Price break B is used.
p_groupid2intAdditional category ID 2, a product can belong to 10 different categories. Refer category meta data
p_freight_ruletextEnum, Generally null, but other options include (Exclude,SeparateItem,SeparateLine). Exclude means this product does not use the normal freight rules
p_api_source_idtextAn identifier used for syncing with an API, eg a GUID
p_groupid8intAdditional category ID 8, a product can belong to 10 different categories. Refer category meta data
p_groupid7intAdditional category ID 7, a product can belong to 10 different categories. Refer category meta data
p_groupid9intAdditional category ID 9, a product can belong to 10 different categories. Refer category meta data
p_groupid4intAdditional category ID 4, a product can belong to 10 different categories. Refer category meta data
p_minqtydecimalThe min quantity that must be purchased per order (Validation: ignore if 0)
p_groupid3intAdditional category ID 3, a product can belong to 10 different categories. Refer category meta data
p_groupid6intAdditional category ID 6, a product can belong to 10 different categories. Refer category meta data
p_groupid5intAdditional category ID 5, a product can belong to 10 different categories. Refer category meta data
p_privacy_mbrgroupidintSecurity visibility to a limited member group ID to see the product. Refer member group meta data.
p_tab_termsconditionstextSpecial product related terms and conditions revealed in a tabbed interface. Then presents  this also at checkout, and requires acceptable of combined T&C's (Validation: HTML)
p_autoupgradememberintUpgrades member to this security level once paid, status achieved. refer member security levels.  (Validation: 0+)
p_styletextThe default or variant style/option
p_error_msgtextThe error message related to any image import, but also reserved for other uses.. 
p_pricebreake_setupdecimalSetup price added to total if Quantity Price break E is used.
p_api_setting_idintID of API service that has the master data for this product
p_grouptextTemporary use when importing products into categories. When used in CSV imports, this column can auto create required categories, link them, and can expand into multiple categories using a | delimiter. Sometimes this column has the name of the primary category when exported (but is not guaranteed)
p_tab_moreinformationtextAdditional information revealed in a tabbed interface (Validation: HTML)
p_colourtextThe default or variant colour
p_bookingsequenceintFor consecutive services, in which order would these occur.
p_replenishqtydecimalIf enabled, the qty in stock will be reset to this value every morning. Typically used by cafes and bakeries who cook 10 dozen muffins every day, or something like that. Ignored if 0 (Validation: ignore if 0)
p_private_stock_notestextConfidential notes that the merchant keeps about the stock availability, but not visible to customers.
p_filenametextSEO Filename, will be prefixed with "/product/" automatically unless the SEO filename starts with a slash SEO filenames should only contains letters numbers dashes underscores and full stops. forward slashes / may be used. No spaces. If the first character is a / then the file will be published, which is not desireable if there are more than 100 products.
p_stock_checkedtimestampThe date of the last stock take, eg when this product last had it's qty in stock "set" as a new total, by a CMS web form. 2025-12-31 23:59:59
p_listedtimestampTimestamp this product record was created 2025-12-31 23:59:59
p_madeincountrytextCountry Code of origin. (2 digit country code, one code only. Used with market places. (Validation: NZ,AU,US,CA,CM,JP etc)
p_shippingdecimalFixed unit cost for domestic shipping on top of any other freight fees.
p_limitshippingtocountriestextLimit shipping to these countries only. Full country text, comma separated. eg "New Zealand, Australia" (Validation: New Zealand, Australia)
p_exclude_countriestextCSV of country names. Do not allow these countries to purchase a restricted product
p_priceddecimalThe price for members in price group D
p_suppliercodetextProduct code used for purchasing new stock 
p_priceedecimalThe price for members in price group E
p_pricebdecimalThe price for members in price group B
p_voucher_createafterintervalDelayed creation of the voucher, eg as a future incentive 01:00:00
p_pricecdecimalThe price for members in price group C
p_pricehdecimalThe price for members in price group H
p_pricefdecimalThe price for members in price group F
p_pricegdecimalThe price for members in price group G
p_cascade_pricingboolPrices are automatically cascaded to variants when changes made to the master product, eg where there is no price variations expected.
p_updatedtimestampThe time this product was last updated for core information, which should include when stock count changes. This may not be updated for long text fields 2025-12-31 23:59:59
p_itemconditiontexteg is this item New or Second Hand... Refer to meta schema for values. Default meaning is New if blank, so leave it blank.
p_pricebreakd_setupdecimalSetup price added to total if Quantity Price break D is used.
p_booking_price_unitintervalHow the standard price unit compares to time. eg 1 day, 1 hour, or 45 minutes. This may be the fixed duration of a service or seat hire, or alternatively related to pricing units multiplied by quantity of time. 01:00:00
p_priceadecimalThe price for VIP or members in price group A (Validation: <=price)
p_locationtextConfidential location of the stock, eg shelf/bin number
p_tab_contentstextAdditional information about product contents revealed in a tabbed interface (Validation: HTML)
p_qtyincdecimalThe increment unit, eg if an item is only sold by the dozen, then 12, or if decimals are permitted, then 0.1 (Validation: &gt;0&nbsp;)
p_freight_ship_separatelyboolCalculate shipping on the basis that this item will be shipped separately. Courier platform dependent.
p_img_more_countintAdditional image count. Additional images are stored in another table
p_autoupgrade_expiryintervalUpgrades member to a new expiry date once paid01:00:00
p_privacy_mbrgroupid_priceintSecurity visibility to a limited member group&#160;ID to see the price. Refer member group meta data.
p_dt_expirestimestampThis product will no longer be visible after this date2025-12-31 23:59:59
p_voucher_limit_groupidintLimit&nbsp;voucher use to this category (Validation: Refers category.id)
p_minqtytradedecimalThe min quantity that must be purchased per order, before trade price&#160; available. (Validation: ignore if 0)
p_tab_linkstextAdditional links and information about the product revealed in a tabbed interface (Validation: HTML)
p_features_jsonjsonA JSON object containing list of feature IDs
pidserialSystem ID for the product, also referred to by ID123456
p_suppliernametextName of supplier
p_pricedecimalThe primary checkout price (excl Tax or GST). Correct to 3 Decimal places in database. (Validation: required, 0=free)
p_pricebreakc_setupdecimalSetup price added to total if Quantity Price break C is used.
p_enquirytextDisplay an enquiry form with this product
p_uomtextUnit of Measure
p_autovouchercharIf True, then create a voucher to send to the customer and save in the vouchers list. (Validation: T)
p_recipe_typetextThe type of assembled part recipe, determines how products are synced to&nbsp; (Validation: REVEALRECIPE,PACKAGE or NULL)
p_minlevelforseeintOnly members with this security level can see the product. A value of 0 means anyone can see the product
p_pricebreakf_setupdecimalSetup price added to total if Quantity Price break F is used.
p_groupid10intAdditional category ID 10, a product can belong to 10 different categories. Refer category meta data
p_shipping_intdecimalFixed unit cost for international shipping on top of any other freight fees&nbsp;
p_autoupgrade_mbrgrpidintUpgrade a member to this security group once paid
p_sale_endstimestampOn this date/time the sale price will end, and the main price will revert to the value of the&nbsp;p_priceprediscount if a value exists. 2025-12-31 23:59:59
p_titletextProduct name (Validation: required)
p_widthdecimalProduct dimension width in cm. Including packaging. (Validation: 0+)
p_target_quantitydecimalThe desired stock holding level. Purchase orders default to this number less stock on hand. (Validation: ignore if 0)
p_material_required_groupidintIf this product requires fabric or material in order to be manufactured, From which category ID can material or fabric be selected
p_minlevelforbuyintOnly members with this security level can buy this product. A value of 0 means anyone can buy this procuct
p_buy_pointsdecimalIf this value is more than 0 then the customer will gain additional loyalty points when they purchase this product
p_manufact_skutextManufacturer code, eg barcode or ISBN&nbsp;
p_supplieraccountcodetextSupplier code is used with some APIs where this value is required, otherwise null
p_metadesctextSEO meta description
p_subtitletextSub title of product h2, optional field
p_emailfiletextOnce purchased, a secure file at this file location will be emailed to the customer. Otherwise referred to as a digial file purchase
p_depthdecimalDepth / length in cm (Validation: 0+)
p_subscribetocampaignidintUpon purchase, a customer will be subscribed to this email campaign ID
p_display_options_jsonjsonAdditional configuraiton in JSON format that lists the colours, options, styles and display rules for these.
p_bookingtypetextIf this is a bookable item, then there are 4 types (Validation: eg&nbsp;)
p_vendor_notifytextEmail address of a&nbsp;vendor to supply the goods, in a drop shipping arrangement (Validation: Email)
p_age_targetintFor market places, these specific age values represent age bands, for products targeting certain ages, such as baby or preschool (Validation: 0,1,2,3,5,10,15,25,50,70)
p_api_sourcetextA system code identifying which API is the master for this product.
p_deposit_pcdecimalIf only a deposit is required for this product, then only require this much be paid on checkout, even though the total of the invoice will be for the full cost, expectation to pay difference when collecting hire items.
pageintSystem ID for the page (read only)123456
p_additionaltexttextAdditional rich product information revealed after product pricing table, but above the tabbed interface. So always visible on page. (Validation: HTML)
p_season_pricingintSeasonal pricing matrix applies
p_sale_items_leftintHow many items left on sale price, if greater than 0. Once it gets to 0, then prediscount price applies. This number is visible to customer, and is used to encourage a scarcity decision.
p_code_gl_salestextGL Code to use on API connections. eg Xero requires an item ID, and a sales code
p_privacy_mbrgroupid_buyintSecurity visibility to a limited member group&#160;ID to buy the product Refer member group meta data.
p_vendoridintMember ID of the vendor who has ownership rights of this product, and might earn commissions from the sale of this product.
p_postpay_infotextInformation to be provided on invoices/receipts after payment. This might be a product key or instructions. Designed to give information only once payment received, but only unique per product, not per order.
p_qtyonorderdecimalTotal quantity in submitted purchase orders awaiting delivery. Value likely to be reset when purchase orders are edited. (Validation: 0+)
p_calendar_countintHow many resources (aka hire items or seats) are available to book (calendar instances)
p_tab_specificationstextAdditional information about product specifications revealed in a tabbed interface (Validation: HTML)
p_extra5textCustom Product Data Field 5
p_img_jsonjsonMeta data about the primary product image
p_extra6textCustom Product Data Field 6
p_extra3textCustom Product Data Field 3
p_priceprediscountdecimalRRP Price prior to discount (Validation: &gt;=price)
p_childcntintCount of variant products, if this is a master product. Value = 0 forordinary product. (Validation: 0+)
p_vouchervaluedecimalPurchase of this product is a fixed value voucher. The monetary value of the voucher that can be redeemed in the default currency of the shopping cart.
p_aggregateratingcountintCount of reviews contributing to average review (Readonly)
p_extra4textCustom Product Data Field 4
p_extra1textCustom Product Data Field 1
p_supplier_puqdecimalThe incremental unit for purchase orders. eg if a supplier only allows purchases by the dozen, then PUQ is 12
p_extra2textCustom Product Data Field 2
p_pricebreakbdecimalQuantity price break price B, subject to minimum quantity **p_pricebreakb_minqty**
p_tab_videotextAdditional information likely embedded product videos revealed in a tabbed interface (Validation: HTML)
p_pricebreakadecimalQuantity price break price A, subject to minimum quantity **p_pricebreaka_minqty**
p_metatitletextSEO meta title
p_pricebreakddecimalQuantity price break price D, subject to minimum quantity **p_pricebreakd_minqty**
p_pricebreakcdecimalQuantity price break unit price C, subject to minimum quantity **p_pricebreakc_minqty**
p_codetextProduct code used for reconcilation with other systems, or possibly printed bar code.&nbsp; (Validation: desireable)
p_exclude_from_listtextIf specified, then exclude this product from merchant center product feeds. Enum values include (GoogleMerchantFeed,FacebookProductFeed)
p_maxlevelforseeintHide from wholesale option, as per <a href="https://www.help.cms-tool.net/blog/member-levels.html">member level</a>, eg 175 only for retail visibility only 999 wholesale members can view (Validation: 175,999,&nbsp;)
p_outofstockmessagetextA customer defined text message to warn customer of specifics relating to availability. The existence of this message overrides default messages, and is considered a warning, so should be used for edge cases, not for global information
p_minlevelforpriceintOnly members with this security level can see the product price. A value of 0 means anyone can see the price
p_pricebreaka_setupdecimalSetup price added to total if Quantity Price break A is used.
p_api_last_updatedtimestampThe timestamp when last synced with an API 2025-12-31 23:59:59
p_weightdecimalWeight in grams, including packaging (Validation: 0+)
p_promotetextThe most recently assigned featured product stamp. A product can be featured in multiple places, but this value is only the most recent stamp
p_qtylowstockdecimalAn arbitrary point when stock is considered too low, and reordering is urgent.
p_qtyinstockdecimalStock on hand. This value excludes recent sales that have already decremented this value. This number can go into negatives, typically in a back order situation. There is no break down by location
p_voucher_exclude_groupidintAllow&nbsp;voucher use for any category except this one. (Validation: Refers category.id)
p_tab_featurestextAdditional information about product features revealed in a tabbed interface (Validation: HTML)
p_supplierpricedecimalKnown cost of item to replace from supplier
p_stock_enquiry_countintCount of open enquiries related to this product (Validation: 0+)
p_metakeywordstextSEO meta keywords
p_address_searchtextPost Code availability. Product only available in these postcodes (Validation: 1021,1022,3050)
p_heightdecimalHeight in cm, default 0 if unknown (Validation: 0+)
p_promote_price_incldecimalThe tax inclusive price that retail customers would pay. This is not the main price. This price is derived from the main price including any general discounts. (Readonly)
p_bookingcalendartagstextIf a service, or room, then these tags identify a limited set of global resources that can be used.&nbsp;
p_sizetextThe default or variant size

Sample object

{
		"id": 1514650,
		"p_title": "One small thing only",
		"p_price": 10,
		"p_aggregaterating": 5,
		"p_maxqty": 0,
		"p_qty_label": "Length",
		"p_assembled_part_count": 0,
		"pid": 1514650,
		"p_voucher_limit_pid": 0,
		"p_backorder_maxqty": 0,
		"p_last_sale": "2021-12-06 09:52:59.027852",
		"p_custom_fields": {},
		"p_categories": "Main Test Products",
		"p_order": 1,
		"groupOrdering": [{
			"pg_groupid": 4772,
			"pg_order": 2
		}],
		"p_minlevelforsee": 0,
		"p_pricebreakb_minqty": 0,
		"p_pricebreakc_minqty": 0,
		"p_pricebreaka_minqty": 0,
		"p_shipping_int": 0,
		"p_autoupgrade_mbrgrpid": 0,
		"p_img": "/images/05.png",
		"p_width": 0,
		"p_target_quantity": 0,
		"p_parentpid": 0,
		"p_customer_price_json": {},
		"p_gst_rule": "t",
		"p_buy_points": 0,
		"p_metadesc": "rtetre",
		"p_groupid2": -9,
		"p_depth": 0,
		"p_subscribetocampaignid": 0,
		"p_groupid8": -9,
		"p_age_target": 0,
		"p_groupid7": -9,
		"p_counter": 0,
		"p_deposit_pc": 0,
		"page": 905,
		"p_groupid4": -9,
		"p_minqty": 1,
		"p_showbuybutton": "t",
		"p_groupid3": -9,
		"p_season_pricing": 0,
		"p_sale_items_left": 9999,
		"p_groupid6": -9,
		"cid": 517,
		"p_groupid5": -9,
		"p_duplicationid": 0,
		"p_privacy_mbrgroupid": 0,
		"p_autoupgrademember": 0,
		"p_vendorid": 0,
		"p_qtyonorder": 0,
		"p_group": "Main Test Products",
		"p_calendar_count": 0,
		"p_bookingsequence": 0,
		"p_replenishqty": 0,
		"p_priceprediscount": 13.043,
		"p_childcnt": 0,
		"p_aggregateratingcount": 0,
		"p_supplier_puq": 1,
		"p_listed": "2017-02-03 14:03:07.639828",
		"p_pricebreakb": 0,
		"p_pricebreaka": 0,
		"p_freight_exclude": "f",
		"p_pricebreakc": 0,
		"p_shipping": 0,
		"p_priced": 6.38,
		"p_pricee": 6.58,
		"p_api_last_updated": "2017-02-03 14:03:07.639828",
		"p_priceb": 6.58,
		"p_weight": 0,
		"p_pricec": 6.58,
		"p_priceh": 6.58,
		"p_pricef": 6.58,
		"p_priceg": 6.58,
		"p_cascade_pricing": "f",
		"p_qtylowstock": 0,
		"p_qtyinstock": 8,
		"p_voucher_exclude_groupid": 0,
		"p_updated": "2021-12-06 09:52:59.027852",
		"p_pricea": 7.83,
		"p_supplierprice": 0,
		"p_stock_enquiry_count": 0,
		"p_optioncount": 0,
		"p_qtyinc": 0.1,
		"p_groupid": 4772,
		"p_metakeywords": "retrwet",
		"p_height": 0,
		"p_voucher_limit_groupid": 0,
		"p_promote_price_incl": 11.5
	}

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.