> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PUT (/users/xuid(xuid)/lists/PINS/{listname})

> PUT (/users/xuid(xuid)/lists/PINS/{listname})

# PUT (/users/xuid(xuid)/lists/PINS/{listname})

リクエスト本文の各アイテムに指定されたインデックスに従って、リスト内のアイテムを更新します。
これらの URI のドメインは `eplists.xboxlive.com` です。

* [備考](#ID4EV)
* [URI パラメーター](#ID4E1B)
* [認可](#ID4EFC)
* [HTTP ステータス コード](#ID4ESC)
* [必須リクエスト ヘッダー](#ID4EPH)
* [リクエスト本文](#ID4EGBAC)
* [レスポンス本文](#ID4EWBAC)

## 備考

この呼び出しは、リクエスト本文の各アイテムに指定されたインデックスに従って、リスト内のアイテムを更新します。この呼び出しはリストにアイテムを挿入せず、指定されたインデックスにアイテムが存在しない場合、呼び出しは 400 Bad Request ステータスを返します。1 回の呼び出しで複数のアイテムを更新できますが、すべて現在のリスト内に存在している必要があります。つまり、すべてが更新されるか、いずれも更新されないかのどちらかです。

この呼び出しでは、更新するアイテムを **index** ではなく **itemId** で指定することもできます。これを行うには、サービスに送信する **IndexedItems** 構造のインデックスに単に "-1" を使用します。もちろん、この場合、更新の一部として **itemId** を変更することはできないため、他のメタデータ フィールドへの変更にのみ機能します。アイテムの識別に **itemId** の代わりに **provider**/**providerId** の組み合わせを使用することもできます。内部的に、サービスはリスト内でこれらのアイテムを検索し、更新すべき適切なインデックスを見つけ出します。アイテムが見つからない場合は 400 Bad Request ステータスが返され、いずれのアイテムも更新されません。

この呼び出しでは、アイテムを識別するためにインデックスを使用する場合、リクエストに **If-Match:versionNumber** ヘッダーを含める必要があります。アイテムを識別するために item ID を使用する場合 (かつリストが重複を許可しない場合)、**If-Match** ヘッダーは任意です。ヘッダーが存在する場合、**if-Match** ヘッダーは常に検証されます。ヘッダー内の **versionNumber** は、リストの現在のバージョン番号です。必須の場合に含まれていない、または現在のリスト バージョン番号と一致しない場合、HTTP 412 Precondition Failed ステータス コードが返され、レスポンス本文には現在のバージョン番号を含むリストの最新メタデータが含まれます。これは、異なるクライアントからの更新が互いに上書きし合うのを防ぐためです。

## URI パラメーター

| パラメーター | 型 | 説明 |
| - | - | - |
| xuid | string | XBOX User ID (XUID)。 |
| listtype | string | リストの種類 (使用方法および動作方法)。これらの関連メソッドでは常に "PINS"。 |
| listname | string | リストの名前 (指定した listtype 内のどのリストを操作するか)。Pins 内のアイテムでは常に "XBLPins"。 |

## 認可

この呼び出しでは、**Authorization** ヘッダーに XSTS SAML トークンが必要です。呼び出し元を識別するために、SAML トークン内に Xuid クレームが存在する必要があります。この値は、呼び出し元が該当するリスト データへのアクセス権を持っているかどうかを判定するために使用されます。リスト自体も Xuid によって識別され、リストの URI に含まれます。これを使用することで、将来的にはリストの共有アクセスをサポートする可能性がありますが、現時点ではこの機能はサポートされていません。現在、ユーザーがアクセスするリストはすべてそのユーザー自身のものであり、共有アクセスはありません。したがって、URI 内の Xuid は SAML クレーム トークン内の Xuid と一致する必要があります。

> **注:**\
> 現時点では XBL Auth 2.0 と 3.0 の両方のトークンがサポートされています。

## HTTP ステータス コード

サービスは、このリソースに対するこのメソッドでのリクエストに応じて、このセクション内のいずれかのステータス コードを返します。XBOX Live Services で使用される標準的な HTTP ステータス コードの完全な一覧については、[標準 HTTP ステータス コード](https://devdocs.xbox.com/ja-jp/reference/live/rest/additional/httpstatuscodes) を参照してください。

\| コード| 理由フレーズ| 説明|
\| --- | --- | --- | --- | --- | --- | --- |
\| 200| OK| リクエストは正常に完了しました。レスポンス本文には、要求されたリソース (GET の場合) が含まれます。POST および PUT リクエストは最新のリスト メタデータ (リスト バージョン、件数など) を受け取ります。|
\| 201| Created| 新しいリストが作成されました。これはリストへの初回挿入時に返されます。レスポンスにはリストの最新のメタデータが含まれ、location ヘッダーにはリストの URI が含まれます。|
\| 304| Not Modified| GET で返されます。クライアントが最新バージョンのリストを持っていることを示します。サービスは **If-Match** ヘッダーの値をリスト バージョンと比較します。それらが等しい場合、データなしで 304 が返されます。|
\| 400| Bad Request| リクエストの形式が不正でした。URI やクエリ文字列パラメーターの値または型が無効な可能性があります。また、必須のパラメーターやデータ値が欠落している場合、リクエストで API のバージョンが欠落または無効な場合にも発生することがあります。**X-XBL-Contract-Version** ヘッダーを参照してください。|
\| 401| Unauthorized| リクエストにはユーザー認証が必要です。|
\| 403| Forbidden| このユーザーまたはサービスにはリクエストが許可されていません。|
\| 404| Not Found| 呼び出し元にはリソースへのアクセス権がありません。これはそのようなリストが作成されていないことを示します。|
\| 412| Precondition Failed| リストのバージョンが変更され、変更リクエストが失敗したことを示します。変更リクエストは挿入、更新、または削除のいずれかです。サービスは **If-Match** ヘッダーのリスト バージョンをチェックします。現在のリスト バージョンと一致しない場合、操作は失敗し、現在のリスト メタデータ (現在のバージョンを含む) とともにこの応答が返されます。|
\| 500| Internal Server Error| サービスはサーバー側のエラーによりリクエストを拒否しています。|
\| 501| Not Implemented| 呼び出し元は、サーバー上に実装されていない URI を要求しました (現時点では、許可リストに登録されていないリスト名に対するリクエストにのみ使用されます)。|
\| 503| Service Unavailable| サーバーはリクエストを拒否しています。通常は過大な負荷が原因です。遅延の後 (**Retry-after** ヘッダーを参照)、リクエストを再試行できます。|

## 必須リクエスト ヘッダー

\| ヘッダー| 説明|
\| --- | --- | --- | --- | --- | --- | --- | --- | --- |
\| Authorization| リクエストの認証および認可に使用される STS トークンを含みます。XSTS サービスからのトークンで、XUID がクレームの 1 つとして含まれている必要があります。 |
\| X-XBL-Contract-Version| どの API バージョンを要求しているかを指定します (正の整数)。Pins はバージョン 2 をサポートします。このヘッダーが欠落しているか、値がサポートされていない場合、サービスはステータス説明に "Unsupported or missing contract version header" を含む 400 - Bad request を返します。|
\| Content-Type| リクエスト/レスポンス本文の内容が json か xml かを指定します。サポートされる値は "application/json" と "application/xml" です。|
\| If-Match| 変更リクエストを行う際に、このヘッダーにはリストの現在のバージョン番号を含める必要があります。変更リクエストは PUT、POST、DELETE 動詞を使用します。"If-Match" ヘッダーのバージョンが現在のリスト バージョンと一致しない場合、リクエストは HTTP 412 - precondition failed のリターン コードで拒否されます。(任意) GET でも使用でき、指定されたバージョンが現在のリスト バージョンと一致する場合、リスト データはなく HTTP 304 - Not Modified コードが返されます。 |

## リクエスト本文

### サンプル リクエスト

```cpp theme={null}
{"IndexedItems":
 [{  "Index": 0, 
     "Item": 
     {
       "ContentType": "Movie",
       "ItemId": "3a5095a5-eac3-4215-944d-27bc051faa47",
       "ProviderId": null,
       "Provider": null,
       "ImageUrl": "http://www.bing.com/thumb/...",
       "Title": "The Dark Knight",
       "SubTitle":null, 
       "Locale": "en-us",
       "DeviceType": "XboxOne"
     }
}]} 
      
```

## レスポンス本文

### サンプル レスポンス

```cpp theme={null}
{
  "ListVersion":  1,
  "ListCount":  1,
  "MaxListSize": 200,
  "AllowDuplicates": "true",
  "AccessSetting":  "OwnerOnly"
} 
         
```

## 関連項目

##### 親

[/users/xuid(xuid)/lists/PINS/{listname}](https://devdocs.xbox.com/ja-jp/reference/live/rest/uri/lists/uri-usersxuidlistspinslistname)


## Related topics

- [XblUserStatisticsGetSingleUserStatisticAsync](https://devdocs.xbox.com/ja-jp/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsgetsingleuserstatisticasync.md)
- [XblUserStatisticsGetSingleUserStatisticsAsync](https://devdocs.xbox.com/ja-jp/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsgetsingleuserstatisticsasync.md)
