# プロファイルとProfiles API トークンについて

プロファイルページでは、顧客またはアカウントごとにデータをグループ化します。Profiles API トークンは、詳細な顧客情報に基づいてパーソナライズされたコンテンツを増やす機能を提供します。

また、Profiles API トークンを使用して、ウェブサイト上での顧客体験をパーソナライズすることもできます。Treasure Dataのパーソナライゼーション機能を、Adobe Target、Optimizely、Google OptimizeなどのA/Bテストツールと組み合わせて使用することで、効果を生み出すウェブサイトのバージョンを決定できます。

基礎となるパーソナライゼーションワークフローが完了すると、パーソナライゼーションデータセットが更新されます。特定のプロファイルが属するセグメントの最新リストを確認できます。また、特定のプロファイルに関連付けられた属性のリストも確認できます。

## 要件

ペアレントセグメントは、[ペアレントセグメント](/products/customer-data-platform/data-workbench/parent-segments)に既に存在している必要があります。ペアレントセグメントは、Profiles API トークンによってアクセスされるすべてのデータの基盤となります。

ウェブクライアントでは、プロファイルセグメントIDの取得にTreasure Data JavaScript SDKを使用します。Profiles APIトークンはJavaScript SDK v1.9.1以降でサポートされています。古いバージョンを使用している場合は、アップグレードする必要があります。

サーバーサイド連携では、クライアントSDKを使用せずにHTTPS経由でProfiles APIを直接呼び出すことができます。詳しくは、[SDKを使用せずにProfiles APIを呼び出す（サーバーサイド）](#sdk%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%9B%E3%81%9A%E3%81%ABprofiles-api%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%B5%E3%82%A4%E3%83%89)を参照してください。

## SDKを使用せずにProfiles APIを呼び出す（サーバーサイド）

Profiles APIは、iOS SDK、Treasure Data JavaScript SDK、その他のクライアントSDKを使用せずに、HTTPS経由で直接呼び出すことができます。独自のバックエンドからプロファイルのセグメントと属性を検索する場合に便利です。たとえば、サーバーサイドのパーソナライゼーションサービスや、Profiles APIトークンをアプリのバイナリに埋め込みたくないモバイルアプリのバックエンドから利用できます。

Note
新しいリアルタイムパーソナライゼーションのユースケースでは、サーバー間連携向けに設計された[Real Time Personalization API](/ja/products/customer-data-platform/real-time/about-the-real-time-personalization-api)の利用を検討してください。このセクションは、すでにProfiles APIトークンを使用しているアカウントが、ブラウザやSDKの外部からトークンを呼び出す場合を対象としています。

### リクエスト

```
GET /cdp/lookup/collect/segments
Host: cdp.in.treasuredata.com
```

ご利用のリージョンに対応するホストを使用してください。

| リージョン | ホスト |
|  --- | --- |
| US | `cdp.in.treasuredata.com` |
| EU | `cdp-eu01.in.treasuredata.com` |
| 韓国 | `cdp-ap02.in.treasuredata.com` |
| 東京 | `cdp-tokyo.in.treasuredata.com` |


その他のリージョンについては、[Treasure APIのbaseURL](/apis/endpoints/endpoints)を参照してください。

**クエリパラメーター**

| 名前 | 説明 |
|  --- | --- |
| `version` | `2`を指定します。 |
| `token` | Profiles APIトークンのID（UUID）です。1回のリクエストで複数のトークンを検索する場合は、カンマ区切りのリストを指定します。 |
| `key.<column_name>` | 検索するプロファイルのLookup Keyの列と値です。例: `key.customer_id=customer-123`。`<column_name>`はトークンに設定されたLookup Keyと一致する必要があります。 |
| `callback` | 任意です。ブラウザの`<script>`タグから呼び出す場合など、JSONP形式のレスポンスが必要な場合にのみ使用します。サーバーサイドから呼び出す場合は省略してください。省略すると、APIは通常のJSONを返します。 |


Warning
トークンのLookup Keyが`td_global_id`の場合、APIはリクエストで渡された値を無視し、訪問者の`_td_global`ブラウザCookieから値を読み取ります。そのため、ブラウザセッションがないサーバーサイド呼び出しでは、`td_global_id`をLookup Keyとして使用できません。サーバーサイド連携では、カスタム識別子列など、別のLookup Keyを使用してください。

**例**

```bash
curl --get "https://cdp.in.treasuredata.com/cdp/lookup/collect/segments" \
  --data-urlencode "version=2" \
  --data-urlencode "token=YOUR_PROFILES_API_TOKEN_UUID" \
  --data-urlencode "key.customer_id=customer-123"
```

### レスポンス

```json
[
  {
    "values": ["100", "200"],
    "attributes": {
      "title": "Manager",
      "area": "Japan"
    },
    "key": {
      "customer_id": "customer-123"
    },
    "audienceId": "272739"
  }
]
```

| フィールド | 説明 |
|  --- | --- |
| `values` | プロファイルが属するセグメント（バッチおよびリアルタイム）のIDです。 |
| `attributes` | トークンに設定されたプロファイルの属性です。 |
| `key` | このリクエストで使用したLookup Keyの列と値です。 |
| `audienceId` | トークンが属するParent SegmentのIDです。 |


1回のリクエストで複数のトークンを検索した場合、レスポンス配列にはトークンごとに1つの要素が含まれます。

**エラーレスポンス**

| ステータス | 例 | 原因 |
|  --- | --- | --- |
| `400 Bad Request` | `{"error":"Bad Request","message":"Query parameter key.<column> is required but not set","status":400}` | 必須の`key.<column_name>`パラメーターが指定されていません。 |
| `403 Forbidden` | `{"error":"Forbidden","message":"Invalid token","status":403}` | トークンが存在しないか、このアカウントでは有効ではありません。 |


本番環境のバックエンドでは、タイムアウトを設定し、一時的な障害に対して上限付きの指数バックオフを使用してください。リクエストを修正せずに`400`または`403`のレスポンスを再試行しないでください。

Security
Profiles APIトークンは公開された認証なしのトークンです。トークンの値を知っている人は誰でも直接クエリできます。トークンの返却属性としてPII（メールアドレス、電話番号、氏名など）を設定しないでください。トークンを取得した人に公開しても安全な属性だけを設定してください。レスポンスの`key`オブジェクトにはLookup Keyとその値がそのまま含まれます。これはプロファイルの返却属性ではありません。可能な場合は非PIIの識別子を使用し、Lookupの値から個人を特定できる場合はリクエストURLとログを適切に保護してください。トークンはクエリ文字列に含まれるため、トークンやLookupの値の露出を制限する必要がある場合は、サーバーやプロキシのログでクエリパラメーターをマスキングするように設定してください。

* [プロファイルの表示](/ja/products/customer-data-platform/audience-studio/profiles/view-profiles)
* [Profiles API トークンの作成](/ja/products/customer-data-platform/audience-studio/profiles/create-a-profiles-api-token)
* [Profiles API トークンの変更](/ja/products/customer-data-platform/audience-studio/profiles/change-a-profiles-api-token)
* [TD JavaScript SDKを使用したプロファイルセグメントIDの取得](/ja/products/customer-data-platform/audience-studio/profiles/use-td-javascript-sdk-to-fetch-profile-segment-ids)
* [Profiles APIトラブルシューティング](/ja/products/customer-data-platform/audience-studio/profiles/profiles-api-troubleshooting)