Skip to content
  1. Extras
  2. MiniShop3
  3. Development
  4. Web API
  5. Catalog

Catalog ​

Public endpoints, no API token needed. The data set is the same as on the server-rendered (SSR) frontend.

Product ​

MethodPathPurpose
GET/product/get/{id}Product by ID
GET/product/getResolve: alias or uri parameter, optional context
GET/product/listList / PLP
GET/product/filtersFacets (same filters as list)
GET/product/{id}/imagesGallery

Query parameters for get and resolve: context, include_images (0|1, default 0), include_seo (default 1).

Main query parameters for list:

ParameterMeaning
parent / categoryCategory ID (kept for backward compatibility; ignored if parents is set)
parentsCSV or array of category IDs. OR condition, and a product matches both by its primary category and by additional links (msCategoryMember)
nested0|1 — expand the tree when using parents
price_min, price_maxPrice range
in_stock, stock_minStock
vendor_id, new, popular, favoriteFlags / vendor
optionsOptions JSON
limit, offset / pagePagination
sort, dir, query, contextSort and search
include_options, include_content, include_imagesEmbeds (include_images default 0, at most 10 files per product)
include_seoSEO block; the default is 0 on list and 1 on get

list response: { items, total, limit, offset } inside data.

filters: the same filters as list, plus keys, include_price (default 1), include_vendors (default 0).

Product fields are returned according to an allowlist in ProductCatalogService.

Category ​

MethodPathPurpose
GET/category/get/{id}Category by ID
GET/category/getResolve by alias / uri
GET/category/listList
GET/category/treeTree

get parameters: context, include_hidden, include_content, include_breadcrumbs, include_children, include_seo (default 1).

list parameters: parent, limit, offset or page, sort, dir, context, include_hidden, include_content, include_seo (default 0).

tree parameters: parent, depth, context, include_hidden, sort, dir, include_seo (default 0).

With include_children=1 the nested categories in children also receive seo, unless include_seo is off.

SEO block ​

The block arrives in seo when include_seo is on. Assembly order:

  1. Base values from the resource fields.
  2. canonical.
  3. Overrides from the TV map.
  4. The msOnGetPublicSeo event.
KeySource
title, descriptionResource fields, overridden by the TV map where present
canonicalBuilt with MODX makeUrl. With friendly URLs off it comes out as index.php?id=N, so the link keeps working
robotsEither index,follow or noindex,nofollow — see searchable
og.*From the TV map: og.title, og.description, og.image, og.type

The TV map is the ms3_public_seo_tv_map system setting: JSON that maps an SEO key to a TV name. Allowed keys are title, description, canonical, robots, og.title, og.description, og.image, og.type. Invalid JSON is ignored. The setting is empty by default: without it the SEO block is built from the resource fields alone.

The searchable field ​

Product and category responses carry searchable (the "Searchable" flag of the MODX resource). When it is off, robots in the SEO block becomes noindex,nofollow. Nothing else depends on it: the entry itself stays in the API output.

Resource group ACL ​

The filter is on only when both settings are true: MODX access_resource_group_enabled (on by default) and ms3_web_catalog_respect_resource_groups (the installer writes true).

A guest is matched against a permission that is not tied to a user. A customer also receives groups from msCustomerGroup through MODX user-group ACL.

Membership is "at least one": the document stays visible when any of its groups grants access, even if another group is closed.

Turn off ms3_web_catalog_respect_resource_groups to serve products without resource-group checks.

Example ​

bash
curl -sS 'https://shop.example/assets/components/minishop3/api.php?route=/api/v1/product/list&parents=10&limit=20'

See also Examples, Frontend: catalog.