Helpshiftにおける個人データには、Helpshiftのサーバーに保存されている、エンドユーザーに関連するチケットの詳細とユーザー情報がすべて含まれます。Helpshiftは、GDPR要件に基づいてデータポータビリティのリクエストを自動的に作成するために使用できる、一連のREST APIを提供しています。データポータビリティのリクエストは、毎週処理されます。
データポータビリティのリクエストを開始するには、REST /hs-data APIを使用できます。APIコールを設定する際、ユーザーに関する情報の提供を求められます。リクエストが作成されると、Helpshiftはリクエストされたデータを収集する定期的なバッチ処理を自動的にスケジュールします。
保留中のデータポータビリティリクエストのステータスを監視するために、/hs-data/status APIを定期的に使用できます。リクエストが完了すると、圧縮形式のデータへの時間制限付きリンクが送信されます。
柔軟性を提供するため、ユーザーは以下の表で定義されているように、さまざまな方法で識別できます。
| ユーザーの識別 | どのような情報が返されますか? |
|---|---|
| ユーザーは次のように識別できます: | ユーザーのプロフィール情報と、ユーザーが作成した一連のチケットが返されます。チケットの情報には、メッセージ、添付ファイル、カスタムチケットフィールドなどが含まれます。 |
データポータビリティのリクエスト対象となるユーザーを特定したら、以下のREST APIを使用して、これらの削除リクエストを作成および監視できます。詳細については、REST APIのはじめにページをご覧ください。
パート 1: データポータビリティリクエストの作成 (POST /hs-data)
API: POST /hs-data
POST /hs-data APIは、次のようにJSON形式で「requests」オブジェクトを渡すことによって、一連のデータポータビリティリクエストを送信するために使用できます。
| パラメータ | タイプ | 必須ですか? |
|---|---|---|
| requests | エクスポートリクエストの配列(下記参照) | はい |
リクエストオブジェクトには、次のプロパティが含まれています。
プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
財産 | ストリング | はい | “user_id” OR “hs_user_id” OR “issue_id” OR “email” を使用して、提供される ID を示してください |
価値 | ストリング | はい | ユーザーを特定するために使用される実際の識別子(ユーザーID、HSユーザーID、チケットID、またはメールアドレス) |
app_publish_id | アプリID | はい | 移植リクエストが行われるアプリ – これはユーザーまたはチケットのアプリと一致する必要があります。 |
external_publish_id | ストリング | いいえ | データポータビリティリクエストの作成時に設定できるオプションの外部トラッキングID |
パスワード | ストリング | いいえ | (オプション) 出力データは、指定されたパスワードを使用して暗号化されます。パスワードの長さは8〜64文字である必要があります。 |
お伝えする必要のあるアプリ情報は、app_publish_idです。アプリ公開IDは、設定 > アプリ設定ページにあります(以下のスクリーンショット参照)。
サンプル CURL リクエスト:
curl -X POST
-H “Authorization: Basic ########”
-H “Cache-Control: no-cache” -H “Cache-Control: no-cache”
-H “Content-Type: multipart/form-data; boundary=—-WebKitFormBoundary7MA4YWxkTrZu0gW”
-F “requests=[ { “property”: “issue_id”%2C “value”: “270”%2C “app_publish_id”: “12”%2C “external_request_id”: “my_portdb_id_123″ } ]”
「https://api.helpshift.com/v1/ashbys/hs-data/」
応答:
以下は、POSTリクエストから返されるものです。
| パラメータ | タイプ |
|---|---|
| status | HTTPステータスコード 200、404など。 リクエストが正常に処理された場合は 200 を返し、リクエスト全体の処理に失敗した場合は 404 を返します。 |
| body | エクスポートリクエストの応答の配列 (下記) |
レスポンスボディ:
個々のレスポンスの構造は、以下の表に示されています。
| パラメータ | タイプ | 説明 |
|---|---|---|
| hs_request_id | ID | ポータビリティリクエストを追跡するために使用される一意のID |
| success | T/F | ポータビリティリクエストの作成が成功したかどうかを示すインジケーター |
| external_request_id | ID | 追跡のためにリクエストで指定された外部ID |
| eta | Date | ジョブが完了する推定日 |
| reason | String | リクエストの作成に失敗した場合、そのリクエストが失敗した理由 - ユーザーIDが無効です |
パート2:ポータビリティリクエストステータスの確認
API: GET /hs-data/status
GET /hs-data/status APIは、既存のポータビリティリクエストのセットと、各リクエストの現在のステータスを返します。
フィルター:
GET /hs-data/status API は、特定のポータビリティリクエストを識別するために使用されます。少なくとも以下のいずれかのフィルターが必要です。
| フィルター | 用途 |
|---|---|
| /hs-data/status?external_request_id=value | 外部リクエストIDを使用して、ポータビリティリクエストのステータスを知る |
| /hs-data/status?hs_request_id=value | hsリクエストIDを使用して、ポータビリティリクエストのステータスを知る |
応答:
本文には、1つまたは複数の応答が含まれる場合がありますのでご注意ください。
| パラメータ | タイプ |
|---|---|
| ステータス | HTTPステータスコード200、404など。 リクエストが正常に処理された場合は 200 を返し、リクエストが正常に処理されなかった場合は 404 を返します。 |
| body | エクスポートリクエストの応答の配列 (下記) |
レスポンスボディ:
個々のレスポンスの構造は、以下の表に示されています。
| パラメータ | タイプ | 説明 |
|---|---|---|
| hs_request_id | ID | 一意に生成されたリクエストID |
| status | String | リクエスト処理状態を示す |
| external_request_id | ID | リクエストで指定されたサイトのトラッキングID |
| hs_data_url | String | データをダウンロードするためのURL |
| url_valid_until | Timestamp (ISO) | URLのダウンロードが有効な時間のおおよその見積もり。 |
| reason | String | 失敗の理由 – たとえば、ユーザーIDまたはチケットIDが正しくない場合、不足している必須フィールドのJSONリストと、無効な形式のフィールドのリストが返されます。 |
| eta | Timestamp (ISO) | 到着予定時刻(ISO形式) |
| request | Map | 元のリクエスト(レスポンスに対して) |
| encrypted_zip? | Boolean | ZIPファイルがパスワードで保護されているかどうかを示します。 注: このフィールドは、「ステータス」の値が「完了」の場合にのみ利用可能です。 |
サンプル回答:
{
"ステータス": "作成済み",
“eta”: “タイムスタンプ”,
“hs_data_url”: “文字列”,
“url_valid_until”: “タイムスタンプ”,
“encrypted_zip?” : “ブール値”,
「リクエスト」: {
「プロパティ」: 「メール」
"value": "文字列",
“app_publish_id”: “文字列”,
“external_redaction_id”: “文字列”
}
}
