# 商品

> Shoplazza CLI 的 products 命令：搜索、改价、调库存的快捷命令，以及变体、图片、集合与库存的 API 命令。

管理商品、变体、图片、集合、库存等。包含 8 个快捷命令和 78 个 API 命令。

## 快捷命令

### +search

按关键词、状态、供应商、集合或标签搜索商品。

```shell
shoplazza products +search [flags]
```

| 参数 | 类型 | 说明 |
|------|------|------|
| `--keyword` | string | 按商品标题或 SKU 过滤 |
| `--published` | string | 按发布状态过滤（`true` 或 `false`） |
| `--vendor` | string | 按供应商名称过滤 |
| `--collection-id` | string | 按集合 ID 过滤 |
| `--tags` | string | 按标签过滤（逗号分隔） |
| `--page-limit` | int | 页面大小（1–250） |
| `--fields` | string | 返回字段（逗号分隔） |

```shell
shoplazza products +search --keyword "T-shirt"
shoplazza products +search --published true --vendor "Nike"
shoplazza products +search --collection-id 123 --tags "summer,sale"
shoplazza products +search --page-limit 50 --fields "id,title,variants"
```

### +count

按条件统计商品数量。

```shell
shoplazza products +count [flags]
```

| 参数 | 类型 | 说明 |
|------|------|------|
| `--published` | string | 按发布状态过滤（`true` 或 `false`） |
| `--vendor` | string | 按供应商名称过滤 |

```shell
shoplazza products +count
shoplazza products +count --published true
shoplazza products +count --vendor "Nike"
```

### +create

快速创建商品。

```shell
shoplazza products +create [flags]
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `--title` | string | 是 | 商品标题 |
| `--price` | string | 是 | 售价（如 `29.99`） |
| `--image` | string | 是 | 图片 URL |
| `--compare-price` | string | | 原价 |
| `--sku` | string | | SKU |
| `--stock` | int | | 库存量（启用库存跟踪） |
| `--stock-policy` | string | | 库存为 0 时策略：`continue`、`deny` 或 `auto_unpublished`（默认：`deny`） |
| `--tags` | string | | 标签（逗号分隔） |
| `--published` | bool | | 创建后立即发布（默认为草稿） |
| `--collection-ids` | string | | 要加入的集合 ID |

```shell
shoplazza products +create --title "My Product" --price 29.99 --image "https://example.com/img.jpg"
shoplazza products +create --title "My Product" --price 29.99 --image "https://..." \
  --compare-price 39.99 --sku SKU001 --stock 100 --tags "new,featured" --published
```

### +publish

上架商品。

```shell
shoplazza products +publish --id <product-id>
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `--id` | string | 是 | 商品 ID |

### +unpublish

下架商品。

```shell
shoplazza products +unpublish --id <product-id>
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `--id` | string | 是 | 商品 ID |

### +stock

设置或调整库存。

```shell
shoplazza products +stock [flags]
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `--variant-id` | string | 是 | 变体 ID |
| `--set` | int | | 设置库存绝对值（≥ 0；与 `--adjust` 互斥） |
| `--adjust` | int | | 增加库存量（> 0；与 `--set` 互斥） |
| `--location-id` | string | | 仓库 ID（默认使用默认仓库） |

```shell
# 设置绝对值
shoplazza products +stock --variant-id <id> --set 100

# 增加库存
shoplazza products +stock --variant-id <id> --adjust 50

# 指定仓库
shoplazza products +stock --variant-id <id> --set 100 --location-id <id>
```

### +set-price

按 SKU 更新变体价格。

```shell
shoplazza products +set-price [flags]
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `--sku` | string | 是 | 变体 SKU |
| `--price` | string | 是 | 新售价（如 `24.99`） |
| `--compare-price` | string | | 新原价 |
| `--product-id` | string | | 商品 ID（SKU 跨商品重复时用于消歧） |

```shell
shoplazza products +set-price --sku SKU001 --price 24.99
shoplazza products +set-price --sku SKU001 --price 24.99 --compare-price 39.99
```

### collections +create

创建集合。

```shell
shoplazza products collections +create [flags]
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `--title` | string | 是 | 集合标题 |
| `--description` | string | | 集合描述 |
| `--image` | string | | 封面图 URL |
| `--sort-order` | string | | 排序方式：`manual`、`best-selling`、`price-asc`、`price-desc`、`newest`、`popular`、`intelligent` |
| `--product-ids` | string | | 商品 ID（逗号分隔） |

```shell
shoplazza products collections +create --title "Summer Sale"
shoplazza products collections +create --title "Best Sellers" \
  --description "Our most popular items" --image "https://..." \
  --sort-order best-selling --product-ids "id1,id2,id3"
```

## API 命令

所有动态 API 命令共享以下参数：

| 参数 | 短参 | 说明 |
|------|------|------|
| `--params` | | 路径/查询参数（JSON 格式） |
| `--data` | | 请求体（JSON 格式） |
| `--jq` | `-q` | jq 表达式过滤输出 |
| `--dry-run` | | 预览请求，不实际执行 |

### products

```shell
shoplazza products list
shoplazza products get --params '{"product_id":"123"}'
shoplazza products create --data @product.json
shoplazza products update --params '{"product_id":"123"}' --data '{"product":{"title":"Updated"}}'
shoplazza products delete --params '{"product_id":"123"}'
shoplazza products batch-delete --data '{"ids":["123","456"]}'
shoplazza products count
```

### products variants

```shell
shoplazza products variants list --params '{"product_id":"123"}'
shoplazza products variants get --params '{"variant_id":"456"}'
shoplazza products variants create --params '{"product_id":"123"}' --data @variant.json
shoplazza products variants update --params '{"variant_id":"456"}' --data @variant.json
shoplazza products variants delete --params '{"product_id":"123","variant_id":"456"}'
shoplazza products variants count --params '{"product_id":"123"}'
shoplazza products variants list-by-sku --params '{"sku":"SKU001"}'
shoplazza products variants update-by-sku --params '{"sku":"SKU001"}' --data @variant.json
```

### products images

```shell
shoplazza products images list --params '{"product_id":"123"}'
shoplazza products images get --params '{"product_id":"123","image_id":"789"}'
shoplazza products images create --params '{"product_id":"123"}' --data '{"image":{"src":"https://..."}}'
shoplazza products images update --params '{"product_id":"123","image_id":"789"}' --data @image.json
shoplazza products images delete --params '{"product_id":"123","image_id":"789"}'
shoplazza products images count --params '{"product_id":"123"}'
```

### products collections

```shell
shoplazza products collections list
shoplazza products collections get --params '{"id":"123"}'
shoplazza products collections create --data @collection.json
shoplazza products collections update --params '{"id":"123"}' --data @collection.json
shoplazza products collections delete --params '{"id":"123"}'
shoplazza products collections count
```

### products collects

```shell
shoplazza products collects list
shoplazza products collects get --params '{"id":"123"}'
shoplazza products collects create --data '{"collect":{"product_id":"123","collection_id":"456"}}'
shoplazza products collects delete --params '{"id":"123"}'
shoplazza products collects batch-create --data @collects.json
shoplazza products collects count
```

### products inventory

```shell
shoplazza products inventory list-items
shoplazza products inventory get-item --params '{"inventory_item_id":"123"}'
shoplazza products inventory update-item --params '{"inventory_item_id":"123"}' --data @item.json
shoplazza products inventory list-by-variant --params '{"variant_id":"456"}'
shoplazza products inventory set-stock --data '{"variant_id":"123","available":100}'
shoplazza products inventory list-levels
shoplazza products inventory create-level --data @level.json
shoplazza products inventory update-level --data @level.json
shoplazza products inventory delete-level --data '{"inventory_item_id":"123","location_id":"456"}'
```

### products locations

```shell
shoplazza products locations list
shoplazza products locations get --params '{"id":"123"}'
shoplazza products locations count
shoplazza products locations get-default
shoplazza products locations set-default --data '{"id":"123"}'
shoplazza products locations deactivate --data '{"id":"123"}'
shoplazza products locations edit-priority --data @priority.json
shoplazza products locations inventory-levels --params '{"location_id":"123"}'
```

### products gift-cards

```shell
shoplazza products gift-cards list
shoplazza products gift-cards get --params '{"id":"123"}'
shoplazza products gift-cards create --data @gift-card.json
shoplazza products gift-cards update --params '{"id":"123"}' --data @gift-card.json
shoplazza products gift-cards disable --params '{"id":"123"}'
shoplazza products gift-cards batch-create --data @gift-cards.json
```

### products categories

```shell
shoplazza products categories list
```

### products comments

```shell
shoplazza products comments list --params '{"product_id":"123"}'
shoplazza products comments create --data @comment.json
shoplazza products comments batch-create --data @comments.json
```

### products procurement

```shell
shoplazza products procurement list
shoplazza products procurement get --params '{"id":"123"}'
shoplazza products procurement create --data @procurement.json
shoplazza products procurement update --params '{"id":"123"}' --data @procurement.json
shoplazza products procurement receive --params '{"id":"123"}'
shoplazza products procurement cancel --params '{"id":"123"}'
shoplazza products procurement list-items --params '{"id":"123"}'
shoplazza products procurement batch-create-items --data @items.json
shoplazza products procurement batch-update-items --data @items.json
shoplazza products procurement batch-delete-items --data '{"ids":["123"]}'
```

### products suppliers

```shell
shoplazza products suppliers list
shoplazza products suppliers get --params '{"id":"123"}'
shoplazza products suppliers create --data @supplier.json
shoplazza products suppliers update --params '{"id":"123"}' --data @supplier.json
```

## Schema 自省

```shell
shoplazza schema products
shoplazza schema products.list
```
