ユーザー管理API
重要 - 画像/情報は四半期ごとのリリースで更新されます!
四半期ごとのリリースにて、最新の機能・情報を反映し、画像を含めた情報は更新されます。
この記事では、Gainsightユーザー管理REST APIとその機能について説明します。
はじめに
ユーザー管理APIは、REST (Representational State Transfer) を軸に構成されています。管理者はこれらのAPIを使用することにより、ユーザーの作成、ユーザーの更新、ユーザーステータスの更新、およびユーザーステータスの取得を行うことが可能です。
メモ:
- APIを使用することにより、最大50人のユーザーのステータスを作成、更新、および更新することができます。
- ユーザー管理APIを使用して上級管理者フィールドの作成および更新をすることはできません。
[認証]
これらのユーザー管理APIを使用するためには、アクセストークンを生成しなければなりません。
APIの認証:APIへのアクセスは、固有のアクセスキーを使用して制御されます。REST API要求を送信するGainsightテナントのアクセスキーを取得するにはGainsight 管理者に連絡してください。アクセスキーを生成または共有する方法の詳細については、「API アクセスキーを生成」の記事を参照してください。
アクセスキーを取得したら、すべてのAPIリクエストのリクエストヘッダー「accesskey」の一部としてアクセスキーをGainsightに渡す必要があります。アクセス キーに有効期限はありません。
ヘッダー
キー |
値 |
---|---|
コンテンツタイプ |
アプリケーション/json |
受け入れる |
アプリケーション/json、テキスト/プレーン、*/* |
受け入れるー言語 |
en-GB,en-US;q=0.9,en;q=0.8 |
<認証> |
<アクセスキー> |
スロットリング制限
外部ユーザー管理APIの制限は、1時間あたり100リクエスト/1日あたり1000リクエストです。
以下は、Gainsightで推奨される全体的なAPI制限です (正確な制限はパッケージによって異なる可能性があります)。
- 同期 API コール: 1分あたり100回のAPI呼び出し/1日あたり50,000 回のAPI呼び出し
- 非同期 API 呼び出し (Gainsight API の一括呼び出し): 1 時間あたり 10 コール/1 日あたり 100 コール
API |
レートリミット |
---|---|
外部ユーザー管理API |
1時間あたり100リクエスト/1日あたり1000リクエスト |
メモ:上記のAPI制限はすべて*固定ウィンドウレート制限*です。固定ウィンドウレート制限は、特定の時間においてAPIリクエストの数を制限しますたとえば、サーバーには、1 分あたり 100 件のリクエストしか受け付けない固定ウィンドウアルゴリズムを実装するレート制限コンポーネントを含めることができます。時間枠は固定されており、特定の時間に始まります。たとえば、サーバーは午前 10:00 から午前 10:01 までの間に 100 件のリクエストのみを処理します。
ユーザーの作成
このAPIを使用して、Gainsightでユーザーを作成することができます。また、ルックアップを追加して、ユーザーのマネージャーIDを処理することも可能です。以下は、ユーザータイプに基づいてユーザーを作成するための必須フィールドになります。
- 内部ユーザー:メール、SFDCUserName、名前 (またはファーストネームと姓)
- 外部ユーザー:会社ID
メモ:
- Nameが設定されていない場合は、ファーストネームと姓から入力されます。
- SystemTypeが設定されていない場合は、「内部」に設定されます。
- permissionBundlesはユーザーの作成が完了した後に各ユーザーに割り当てられる権限バンドルになります。このプロセスは非同期であり、すぐに反映されない場合があることに注意してください。
- IsActiveUserが設定されていない場合は、アクティブに設定されます。
- 一度に作成できるユーザー数は最大50人までです。
エンドポイント URL
https://<customer domain>/v1/users/services?notify=true/false
通知値を「true または false」として指定することにより、作成したユーザーにウェルカム メールを送信することを選択できます。
注意:
- 「通知」フラグが「true」に設定されている場合、ウェルカム メールがユーザーに送信されます。
- (デフォルト) 「通知」フラグの値が「false」の場合、ウェルカム メールはユーザーに送信されません。
重要: クエリ パラメータの通知値は、 true または false のいずれかです。
リクエスト本文のサンプル
{ "records": [ { "FirstName": "Test", "LastName": "User", "Name":"Test User", "Email": "test@gs.com", "LicenseType":"Viewer", "SFDCUserName":"test9@gs.com", "CompanyName":"XYZ" }, { "FirstName": "Test", "LastName": "User", "Name":"Test User", "Email": "test@gs.com", "LicenseType":"Viewer", "SFDCUserName":"test10@gs.com", "CompanyName":"XYZ" } ], "lookups": { "CompanyID": { "fields": { "CompanyName": "Name" }, "lookupField": "Gsid", "objectName": 「会社」、 "multiMatchOption": "FIRSTMATCH", "onNoMatch":"ERROR" } } }
パラメータ
パラメータ (*必須) |
日付タイプ |
値 |
説明 |
---|---|---|---|
Company ID* |
文字列 |
- |
会社レコードのGSIDを含む文字列値。 メモ:
|
SFDCUserName* |
文字列 |
- |
内部タイプのユーザーの一意で有効なメールアドレスを含む文字列値。 メモ:同じユーザー名が既に存在する場合、記録は拒絶されます。 |
Email* |
文字列 |
- |
内部タイプのユーザーの有効なメールアドレスを含む文字列値。 |
FirstName |
文字列 |
- |
ユーザーの名を含む文字列値。 メモ:名前フィールドの値が指定されていない場合、ファーストネームと姓の値は必須です。 |
苗字 |
文字列 |
- |
ユーザーの姓を含む文字列値。 メモ:名前フィールドの値が指定されていない場合、ファーストネームと姓の値は必須です。 |
ライセンスタイプ |
文字列 |
フル、Viewer、Viewer Analytics、内部コラボレータ、および外部 |
有効なライセンス タイプラベルを含む文字列値。 |
SystemType |
文字列 |
内部、外部、ゲスト パートナー |
ユーザーが内部ユーザーになるのか外部ユーザーになるのかを定義する値を含む文字列値。 |
IsSuperAdmin |
ブール値 |
- |
Trueの場合、ユーザーが上級管理者であることを指定するブール値。 メモ:デフォルトでは、指定されていない場合はユーザーは非上級管理者として作成されます。 |
マネージャー |
文字列 |
- |
有効なユーザーのGSIDを含む文字列値。 メモ:自己ユーザー割り当てはサポートされていません。 |
Name* |
文字列 |
- |
ユーザー名を含む文字列値。 メモ:名前フィールドの値が指定されていない場合、ファーストネームと姓の値は必須です。 |
タイムゾーン |
文字列 |
- |
Gainsightでサポートされた有効なタイムゾーン ラベルを含む文字列値。 |
タイトル |
文字列 |
- |
ユーザーのタイトルを含む文字列値。 |
IsActiveUser |
ブール値 |
- |
Trueの場合、ユーザーがアクティブであることを指定するブール値。 メモ:デフォルトでは、ユーザーはアクティブユーザーとして作成されます。 |
Locale |
文字列 |
- |
Gainsightでサポートされた有効なロケールラベルを含む文字列値。 |
permissionBundles |
リスト |
- |
権限バンドル名を含むリスト値 (カスタム/デフォルト)。 |
permissionBundleAction |
文字列 |
- |
バンドルを既存のバンドルに追加するのか、既存のバンドルを上書きするのかを示す文字列値。 メモ:デフォルトのアクションは「追加」です。 |
objectName |
文字列 |
- |
ルックアップ オブジェクト名を含む文字列値。 |
multiMatchOption
|
文字列 |
- |
|
onNoMatch
|
文字列 |
- |
|
応答成功のサンプル
{ "result": true, "errorCode": null, "errorDesc": null, "requestId": "c0d61647-d3ce-4785-8bfe-d6dacc5cdf88", "data": { "status": "SUCCESS", "successRowCount": 2, "records": [ { "IsSuperAdmin": false, "Email": "test@gs.com", "CompanyID": null, "Gsid": "1P01DX6HKU2QAQ2F3FBSO042UN34BJSUGWW1", "FirstName": "Test", "SFDCUserName": "test9@gs.com", "SystemType": "1I0054U9FAKXZ0H26HOLPCQ81MF6AUC6FF2X", "Name": "Test User", "LicenseType": "1I003CYFM4Q8T50O0EK4EPT0XX6S7SUXS5JJ", "IsActiveUser": true, "GainsightLicenseEnabled": false, "LastName": "User" }, { "IsSuperAdmin": false, "Email": "test@gs.com", "CompanyID": null, "Gsid": "1P01DX6HKU2QAQ2F3FHQ0E6LOXYTGK8N7U10", "FirstName": "Test", "SFDCUserName": "test10@gs.com", "SystemType": "1I0054U9FAKXZ0H26HOLPCQ81MF6AUC6FF2X", "Name": "Test User", "LicenseType": "1I003CYFM4Q8T50O0EK4EPT0XX6S7SUXS5JJ", "IsActiveUser": true, "GainsightLicenseEnabled": false, "LastName": "User" } ], "errors": [], "success": true }, "message": null }
応答失敗のサンプル
{ "result": false, "errorCode": "GU_2403", "errorDesc": "Lookup objects [Company1] are not valid", "requestId": "0bf61426-63ad-4774-ad95-4bd2f6c43c25", "data": null, "message": null }
ユーザーの更新
このAPIを使用して、Gainsightでユーザーの詳細を更新することができます。以下は、このAPIを使用して更新できる、サポートされているユーザーフィールドになります。SFDCUserName, Gsid, SfdcUserId.
エンドポイントのURL
https://<customer domain>/v1/users/services?key=[FieldName]
メモ:
- フィールド名は必須です。
- 一度に作成できるユーザー数は最大50人までです。
重要:クエリパラメータキーの値は、SFDCUserName/Gsid/SfdcUserIdのいずれかになります。キーの受け渡しは必須です。キーとして選択されたフィールドの値は、更新リクエストボディのユーザー記録で指定する必要があります。これらのフィールドを更新することはできません。
リクエスト本文のサンプル
{ "records": [ { "IsActiveUser":true, "LicenseType": "Full", "SFDCUserName": "test3@gs.com", "CompanyName": "XYZ", "permissionBundles":["DEFAULT_BUNDLE"] }, { "LicenseType":"Full", "SFDCUserName":"test2@gs.com", "permissionBundles":["DEFAULT_BUNDLE"] "CompanyName":"XYZ" } ], "lookups": { "CompanyID": { "fields": { "CompanyName": "Name" }, "lookupField": "Gsid", "objectName": 「会社」、 "onNoMatch":"ERROR" } }, "permissionBundleAction":"overwrite" }
PermissionBundleAction:
- permissionBundleActionオプションは既存のバンドルに追加するのか、既存のバンドルを上書きするのかを示します。
- デフォルトのアクションは「追加」です。
- サポートされているアクションは「追加/上書き」になります。
パラメータ
パラメータ (*必須) |
日付タイプ |
値 |
説明 |
---|---|---|---|
Company ID* |
文字列 |
- |
会社レコードのGSIDを含む文字列値。 メモ:
|
SFDCUserName* |
文字列 |
- |
内部タイプのユーザーの一意で有効なメールアドレスを含む文字列値。 メモ:同じユーザー名が既に存在する場合、記録は拒絶されます。 |
Gsid* |
文字列 |
- |
ユーザーのGsidを含む文字列値。 メモ:
|
SfdcUserId* |
文字列 |
- |
ユーザーのSfdcUserIdを含む文字列値。 メモ:
|
メール |
文字列 |
- |
内部タイプのユーザーの有効なメールアドレスを含む文字列値。 |
FirstName |
文字列 |
- |
ユーザーの名を含む文字列値。 |
苗字 |
文字列 |
- |
ユーザーの姓を含む文字列値。 |
ライセンスタイプ |
文字列 |
- |
有効なライセンス タイプラベルを含む文字列値。 |
IsSuperAdmin |
ブール値 |
- |
Trueの場合、ユーザーが上級管理者であることを指定するブール値。 メモ:デフォルトでは、指定されていない場合はユーザーは非上級管理者として作成されます。 |
マネージャー |
文字列 |
- |
有効なユーザーのGSIDを含む文字列値。 メモ:自己ユーザー割り当てはサポートされていません。 |
名前 |
文字列 |
- |
ユーザー名を含む文字列値。 |
タイムゾーン |
文字列 |
- |
Gainsightでサポートされた有効なタイムゾーン ラベルを含む文字列値。 |
タイトル |
文字列 |
- |
ユーザーのタイトルを含む文字列値。 |
IsActiveUser |
ブール値 |
- |
Trueの場合、ユーザーがアクティブであることを指定するブール値。 メモ:デフォルトでは、ユーザーはアクティブユーザーとして作成されます。 |
Locale |
文字列 |
- |
Gainsightでサポートされた有効なロケールラベルを含む文字列値。 |
permissionBundles |
リスト |
- |
権限バンドル名を含むリスト値 (カスタム/デフォルト)。 |
permissionBundleAction |
文字列 |
- |
バンドルを既存のバンドルに追加するのか、既存のバンドルを上書きするのかを示す文字列値。 メモ:デフォルトのアクションは「追加」です。 |
objectName |
文字列 |
- |
ルックアップ オブジェクト名を含む文字列値。 |
multiMatchOption
|
文字列 |
- |
|
onNoMatch
|
文字列 |
- |
|
応答成功のサンプル
{ "result": true, "errorCode": null, "errorDesc": null, "requestId": "5dd9296a-c5d3-4ae1-8fbb-56fd3a2e4d86", "data": { "status": "SUCCESS", "successRowCount": 2, "records": [ { "Email": "test3@gs.com", "CompanyID": null, "Gsid": "1P01DX6HKU2QAQ2F3F7JU49M384I1MDU66B9", "SystemType": "Internal", "Name": "Test User", "LicenseType": "Full", "IsActiveUser": true, "IsSuperAdmin": false, "FirstName": "Test", "SFDCUserName": "test3@gs.com", "GainsightLicenseEnabled": false, "LastName": "User" }, { "Email": "test2@gs.com", "CompanyID": null, "Gsid": "1P01DX6HKU2QAQ2F3FKTBOET0641B3PBC2TO", "SystemType": "Internal", "Name": "Test User", "LicenseType": "Full", "IsActiveUser": true, "IsSuperAdmin": false, "FirstName": "Test", "SFDCUserName": "test2@gs.com", "GainsightLicenseEnabled": false, "LastName": "User" } ], "errors": [], "success": true }, "message": null }
応答失敗のサンプル
{ "result": false, "errorCode": "GU_2403", "errorDesc": "Lookup objects [Company1] are not valid", "requestId": "0bf61426-63ad-4774-ad95-4bd2f6c43c25", "data": null, "message": null }
エンドポイントのURL
https://<customer domain>/v1/users/services/status?status=true/false
メモ:一度に更新できるユーザーステータス数は最大50までです。
重要:クエリパラメータステータスは、trueまたはfalseです。
リクエスト本文のサンプル
リクエストボディーで、ユーザーGSIDを追加して、それぞれのユーザーを更新する必要があります。API呼び出しは無効なユーザーGSIDを無視します、そのため要求で有効なユーザー GSIDを指定したことを確認してください。
[ "1P01936XHTA4SF76ZU5RWZWIMDDL54UB7UF9", "1P01936XHTA4SF76ZUUXHOUMVVSFH9YJM15A", "1P01936XHTA4SF76ZUW5J2RVEZZ8H33C8MAM" ]
応答成功のサンプル
{ "result": true, "errorCode": null, "errorDesc": null, "data": { "status": "COMPLETED" }, "message": null }
応答失敗のサンプル
{ "result": true, "errorCode": null, "errorDesc": null, "localizedErrorDesc": null, "requestId": "5c1d2242-8c71-4c1c-84e3-8f6e9187c650", "data": { "invalidUserIds": [ "1P01936XHTA4SF76ZUW5J2RVEZZ8H33C8MAM", "1P01936XHTA4SF76ZU5RWZWIMDDL54UB7UF9", "1P01936XHTA4SF76ZUUXHOUMVVSFH9YJM15A" ] }, "message": null, "localizedMessage": null }
リクエスト本文のサンプル
{ "includeTotal": true, "limit": 25, "page": 0, "orderBy": { "ModifiedDate": "desc" }, "select": [ "Name", "SFDCUserName", "Email", "IsSuperAdmin", "ModifiedDate", "LicenseType" ], "where": { "conditions": [ { "name": "SystemType", "alias": "SystemTypeNotIn", "value": [ "1I0054U9FAKXZ0H26H8LWSP9IXL2NBBNBAGG", "1I00BVVU4MEPNLT5UUTEI7IOVQ51BTETMIYR" ], "operator": "NOT_IN" }, { "alias": "A", "name": "SystemType", "operator": "IN", 「value": [ "1I0054U9FAKXZ0H26HIODPYB6VXM69JDPA5O", "1I0054U9FAKXZ0H26HR1I0W4KFTTAGJ8UIUH" ] } ], "expression": "SystemTypeNotIn AND (A)" } }
パラメータ
パラメータ (*必須) |
日付タイプ |
値 |
説明 |
---|---|---|---|
limit |
番号 |
- |
1回のAPI呼び出しで送信される記録の制限を含む数値。 |
page |
番号 |
- |
制限に基づく次の記録セットを含む数値。 |
orderBy |
マップ |
- |
昇順または降順によるフィールド名の順序を含むマップ値。 |
select* |
フィールド一覧 |
- |
オブジェクトからフィールドを取得する一覧。 |
where |
マップ |
- |
記録をフィルタリングし、指定された条件を満たす記録のみを抽出するために使用されるマップ値。 |
Conditions |
リスト |
- |
ユーザー記録を除外するために使用される条件の一覧。 |
expression |
文字列 |
- |
AND/OR演算を含む文字列値。 |
応答成功のサンプル
{ "result": true, "errorCode": null, "errorDesc": null, "requestId": "873207cc-f7fb-47df-9034-de4797a94ad5", "data": { "page": 0, "size": 5, "total": 5, "limit": 25, "users": [ { "IsSuperAdmin": false, "Email": "test3@gs.com", "Gsid": "1P0186EIDXGJI1O93WM1ZK3A19R6ORXFQTFY", "SFDCUserName": "test3@gs.com", "ModifiedDate": "2021-12-01T11:13:47Z", "ProfilePicture": null, "Name": "Test User", "LicenseType": "Full", "Status": "Active" } ] }, "message": null }
エラーコード
エラーコード |
エラーメッセージ
|
理由 |
HTTPステータス コード |
---|---|---|---|
GU_1101 |
ウップス!何かが間違っていた。 |
リクエストの処理中に予期しないエラーが発生した場合。 |
500 |
GU_2400 |
リクエストが多すぎます |
APIの制限を超過。 |
429 |
GU_2401 |
ユーザーの一括作成操作が失敗しました |
API作成はすべての記録を挿入できませんでした。 |
400 |
GU_2402 |
ユーザーの一括更新操作が失敗しました |
すべての記録を更新できませんでした。 |
400 |
GU_2403 |
ルックアップ構成が無効です |
作成/更新ユーザー要求で、無効なルックアップ構成が提供された場合。 |
400 |
GU_2404 |
ルックアップフィールドをnullまたは空にすることはできません |
ソースまたはターゲットのルックアップフィールドがnullまたは空の場合。 |
400 |
GU_2405 |
ルックアップオブジェクトが無効です |
ルックアップで提供されたターゲットオブジェクト名の1つがnullまたは空になっています。 |
400 |
GU_2406 |
ルックアップ一致クライテリアが無効です |
ルックアップの一致クライテリアが空またはnullの場合。 |
400 |
GU_2407 |
フィールドがユーザー記録に存在しません |
一致クライテリアで指定されたフィールドが、作成/更新するユーザー記録に存在しない場合。 |
400 |
GU_2409 |
リクエストで提供されたキーはサポートされていません |
ユーザー更新リクエストで提供された識別子が無効です。 |
400 |
GU_2410 |
同じユーザーをマネージャーとして追加することはできません |
セルフマネージャーは許可されていません |
400 |
GU_2411 |
ユーザーの更新で競合 |
ユーザー更新リクエストで同一ユーザーが複数回提供されている場合 |
400 |
GSOBJ_RLS004 |
ResolveLookupRequestは無効なターゲットルックアップマッピング {{FieldName}} |
対象のルックアップフィールドが無効の場合。(つまり、フィールドはターゲットオブジェクト内に存在しません) |
400 |
GSOBJ_RLS005 |
ResolveLookupRequest 無効なターゲット ルックアップ マッピング{{FieldName}} |
対象のソースフィールドが無効の場合。(つまり、フィールドがユーザーオブジェクトに存在しないか、ルックアップフィールドではない場合) |
400 |
GSOBJ_RLS008 |
ResolveLookupRequestのソースcollectionMasterが見つからない {{ObjectName}} |
ユーザーオブジェクトのコレクションマスターが空またはnullになっています。 |
400 |
GSOBJ_RLS009 |
ResolveLookupRequestのターゲットcollectionMasterが見つからない {{ObjectName}} |
提供されたターゲットオブジェクトのコレクションマスターが空またはnullになっています。 |
400 |