# PUT /api/items/{id}/variations

種類の並び替え

指定した商品の種類を並び替えます。

`variation_ids` に、その商品のすべての種類 ID を並べた順序が表示順になります。
一部だけの指定や、同じ ID の重複はできません。

エラーは次の順で判定します。

1. 配列の形式違反（空・重複・型の誤り）は `invalid-body` を返します。
2. 存在しない種類 ID や対象の商品に属さない ID を含む場合は `variation-not-found` を返します。
3. 指定した ID がすべて対象の商品に属していて、現存する種類の一部が欠けている場合は `invalid-variation-order` を返します。

成功時は 204 を返し、レスポンス本文はありません。
変更後の並び順は `GET /api/items/{id}/variations` で確認することができます。

## 要求スコープ

- `items.read`
- `items.update`

## パラメータ

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | `string` | 必須 | 商品 ID（1 以上の整数を文字列で表したもの） |

## リクエストボディ

`application/json`

- `variation_ids` integer[]（必須）: 種類 ID を表示順に並べた配列（1〜1000 件）。先頭が 1 番目です。その商品に現存するすべての種類を過不足なく一度ずつ含める必要があります。全置換のため、部分指定はできません。ID の重複は指定できません。

## リクエスト例

```sh
curl -X PUT "https://apiv2.thebase.com/api/items/123/variations" \
  -H "Authorization: Bearer <your-token>" \
  -H "Content-Type: application/json" \
  -d '{
  "variation_ids": [
    0
  ]
}'
```

## レスポンス

| Status | Description |
| --- | --- |
| `204` | 並び替え成功。レスポンス body は持ちません。 |

## エラー

エラーは `application/problem+json` の Problem 形式で返します。認証・スコープ・予期しない内部エラーなど、すべてのエンドポイントに共通のエラーと構造・判別方法は [エラーレスポンス](/docs/errors.md) を参照してください。

このエンドポイントが返すその他のエラーは次のとおりです。

| Status | Type | Description |
| --- | --- | --- |
| `400` | `/errors/request/malformed-body` | リクエストボディをこのエンドポイントが要求する形式として解釈できない場合に返します。 |
| `400` | `/errors/request/invalid-params` | 1 つ以上のパスパラメータがエンドポイントのスキーマを満たさない場合に返します。 |
| `400` | `/errors/items/invalid-body` | リクエストボディがエンドポイントのスキーマを満たさない場合に返します。 |
| `404` | `/errors/items/not-found` | 指定した商品が存在しない、または呼び出し元から参照できない場合に返します。1 リクエストで複数の商品を指定するエンドポイント（並び順の変更など）では、そのいずれかが参照できない場合に返します。 |
| `404` | `/errors/items/variation-not-found` | 指定した種類が存在しない、対象の商品に属していない、または呼び出し元から参照できない場合に返します。 |
| `413` | `/errors/request/body-too-large` | JSON リクエストボディが 1 MiB の上限を超える場合に返します。 |
| `415` | `/errors/request/unsupported-media-type` | JSON 形式のリクエストボディを要求するエンドポイントに、対応していない Content-Type が指定された、または Content-Type が指定されていない場合に返します。 |
| `422` | `/errors/items/invalid-variation-order` | 種類の並び替えで、指定した種類 ID がすべて対象の商品に属している一方、現存する種類の一部が欠けている場合に返します。現存するすべての種類を過不足なく一度ずつ、表示順に並べて指定してください（存在しない ID や対象の商品に属さない ID を含む場合は variation-not-found になります）。 |
| `422` | `/errors/items/write-rejected` | 商品の作成・編集・削除を業務ルールにより実行できない場合に返します (型整合性違反、種別不可変、ドメイン制約違反など)。細分化された Problem type に対応しない理由のときに返します。 |
| `502` | `/errors/internal/bad-gateway` | BASE API が処理を完了するために必要な内部処理で不整合が発生した場合に返します。 |
| `504` | `/errors/internal/gateway-timeout` | BASE API が処理を完了するために必要な内部処理が制限時間内に完了しなかった場合に返します。 |

