Categories & Attributes API
Last Updated: 2026-07-01
Browse the MallPlus product category tree and retrieve the attribute requirements for each category. Use these endpoints before creating or classifying products so you can map MallPlus categories to your own taxonomy and supply every attribute a category expects.
Categories and attributes are managed by the MallPlus operations team and cannot be created or modified through the Open Platform API.
List Categories
/open/v1/categoriesScope: catalog:read Returns the list of product categories defined in the MallPlus catalog. Categories are organized in a hierarchical tree; each item exposes parent_category_id so you can reconstruct the full parent → child structure. Root categories have parent_category_id: null.
Query Parameters
| Parameter | Description |
|---|---|
| page | Page number for pagination. Defaults to 1. |
| limit | Items per page. Defaults to the standard page size. |
Example Response
{
"success": true,
"data": [
{
"id": "pcat_apparel",
"name": "Apparel",
"handle": "apparel",
"description": "Clothing and wearables",
"parent_category_id": null
},
{
"id": "pcat_mens_clothing",
"name": "Men's Clothing",
"handle": "mens-clothing",
"parent_category_id": "pcat_apparel"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 42
}
}handle and description are optional and only appear when set on the category.
Category Tree Structure
Reconstruct the tree by grouping categories on parent_category_id. Fetch root categories (parent_category_id: null) first, then link each child to its parent as you build a category picker or mapping tool.
Get Category Attributes
/open/v1/categories/:id/attributesScope: catalog:read Returns the attribute definitions that apply to a single category. Use this before creating a product in that category so you supply every required attribute with a valid value. An unknown category ID returns 404 NOT_FOUND.
Response Fields
| Field | Description |
|---|---|
| attribute_id | Stable identifier for the attribute. |
| name | Human-readable attribute name. |
| type | Input type (e.g. select, text). Optional. |
| required | Whether a value must be supplied when creating a product in this category. |
| allowed_values | Permitted values for select-type attributes. Present only when the attribute constrains its values. |
Example Response
{
"success": true,
"data": [
{
"attribute_id": "attr_color",
"name": "Color",
"type": "select",
"required": true,
"allowed_values": ["Black", "White", "Red", "Blue"]
},
{
"attribute_id": "attr_material",
"name": "Material",
"type": "text",
"required": false
}
]
}List All Attributes
/open/v1/attributesScope: catalog:readReturns the full catalogue of product attribute definitions across all categories. Use it to build a local attribute dictionary; call Get Category Attributes when you need to know which of them a specific category requires.
Query Parameters
| Parameter | Description |
|---|---|
| page | Page number for pagination. Defaults to 1. |
| limit | Items per page. Defaults to the standard page size. |
Example Response
{
"success": true,
"data": [
{
"attribute_id": "attr_color",
"name": "Color",
"type": "select"
},
{
"attribute_id": "attr_material",
"name": "Material",
"type": "text"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 58
}
} The catalogue-wide list omits required and allowed_values — those are category-specific and only returned by Get Category Attributes.