Site Category Record Now Exposed via SuiteTalk REST API
The sitecategory record is available through REST web services at /services/rest/record/v1/siteCategory, with several sublist limitations and quirks around translations, presentationItem formatting, and HTML-wrapped string fields that developers need to handle.
What changed
The sitecategory record is now exposed through the SuiteTalk REST Web Services API. This lets you create, read, and update site categories programmatically via /services/rest/record/v1/siteCategory instead of relying solely on UI or SOAP-based workflows.
Record structure
The REST record includes the following subrecords:
categoryListLayoutcorrelatedItemListLayoutitemListLayoutparentCategoryrelatedItemListLayoutsiteMapPrioritystoreDisplayImagestoreDisplayThumbnailwebsite
And the following sublists:
presentationItem— supportedtranslations— supported (read and PATCH only; POST is not supported)audience— not supported in RESTtag_subs_machine— not supported in REST
Gotchas and quirks
- The
siteCategoryTypesubrecord is read-only and always returnsPRES. - The
descriptionandstoreDetailedDescriptionstring fields must be wrapped in HTML paragraph tags:<p>your text here</p>. Omitting the tags will likely cause validation errors or rendering issues. - The
presentationItemsublist requires a composite key in thepresentationItemfield, formatted as{itemId}\u0003{itemType}(Item ID + Unicode ETX character + item type). TheitemTypevalue is fixed toINVTITEM. Example:"presentationItem": "99\u0003INVTITEM". - The
translationssublist has an asymmetric API contract: in a PATCH request thelocalefield is a plain string (e.g.,"es_ES"), but in a GET response it comes back as a subrecord object ({"id": "es_ES"}). Your deserialization logic needs to handle both shapes if you round-trip translation data. - When replacing translations via PATCH, you must use the
?replace=translationsquery parameter to do a full sublist replacement.
Prerequisites
The following features must be enabled before the record is accessible via REST:
- Required: Site Builder (Web Store), Site Builder (Website)
- For full field coverage: Advanced Site Customization, Multiple Web Sites, Upsell Manager, URL Component Aliases, Multi-Language, SuiteBundler, File Cabinet, SuiteCloud Development Framework, Document Publishing, Multi-Location Inventory
What to do
- Verify feature prerequisites. Go to Setup > Company > Enable Features and confirm that at a minimum Site Builder (Web Store) and Site Builder (Website) are enabled. Enable additional features from the list above if you need access to all fields.
- Use the REST API Browser to inspect the full field schema, supported HTTP methods, and request parameters for
sitecategorybefore building integrations. - Wrap HTML string fields. When POSTing or PATCHing, ensure
descriptionandstoreDetailedDescriptionvalues are enclosed in<p>tags. - Handle the
presentationItemcomposite key. Build thepresentationItemvalue using the patternitemId + \u0003 + INVTITEM. This is a Unicode control character (ETX, U+0003), not a literal string — make sure your JSON serializer handles it correctly. - Account for the
localeshape mismatch in thetranslationssublist. Sendlocaleas a string on PATCH, but expect a{"id": "..."}object on GET. - Do not attempt to POST translations. Use PATCH with
?replace=translationsto create or update translation entries after the site category record exists. - Note the unsupported sublists. If your current SOAP or UI-based integration relies on
audienceortag_subs_machinedata, you cannot migrate that portion to REST — those sublists are not exposed.
Source note: This documentation page does not specify which NetSuite release introduced REST support for the site category record. Check the REST API Browser changelog or your account's release notes to confirm availability in your environment.
Source: Oracle NetSuite Release Notes