> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.tiankii.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.tiankii.com/_mcp/server.

# Overview

## Modifiers — Base: `/v1/product-modifiers`

A **modifier** is a variation or extra that a product can carry: size, ingredients, add-ons, packaging… Each modifier owns a list of **options** (`{ name, price }`, plus optional `imageUrl` and `enabled`) that the buyer picks from at the terminal.

Modifiers live at store level, not inside a product: you create the modifier once and then **link it to as many products as you need**.

* **Create / list / read / replace / delete** the modifier and its options.

* `POST /product-modifiers/products/link` — set the complete list of products a modifier applies to (replacement semantics: what you send becomes the whole set).

* `GET /product-modifiers/:modifierId/products` — read that list back.

`PUT /product-modifiers/:id` **rebuilds the options**: the existing ones are deleted and recreated with new ids on every call.

The inverse view — the modifiers of a given product — lives in the *Products* folder as `GET /products/:productId/modifiers`.

Scopes: `Merchant.product.{read,create,update,delete}`.