Gainsight APIのOAuth
重要 - 画像/情報は四半期ごとのリリースで更新されます!
四半期ごとのリリースにて、最新の機能・情報を反映し、画像を含めた情報は更新されます。
Gainsight API のための OAuth
この記事では、Gainsight API のための Open Authorization (OAuth) について管理者向けに説明します。
概要
Gainsightは、アプリケーションまたはサービスをGainsightプラットフォームと統合するためのREST APIを提供します。これらのAPIを使用して、外部システムからGainsightアプリケーションにデータを挿入または更新できます。この機能は、より柔軟にGainsightと統合されます。Gainsightには、APIへのアクセスを制御する次の2つの方法があります。
- アクセスキー
- OAuth
この記事では、OAuthプロセスに関する情報のみを提供します。アクセス キーの詳細については、 API アクセス キーの生成に関する記事を参照してください。
OAuth 2.0の詳細については、OAuth 2.0の記事を参照してください。
前提条件
- APIのOAuth認証を使用するには、組織にConnectors 2.0 (Horizon Experience)が必要です。
- コールバックURL: これは、承認後に承認コードを受け取るURLです。
Gainsight APIにアクセスするためのOAuthの設定
以下は、Gainsight APIにアクセスするためにOAuthを設定する主な手順です。
アプリケーションの作成
ユーザー管理ページで、管理者はクライアントIDとクライアントシークレットを取得するためのアプリケーションを作成できます。
アプリケーションを作成するには:
- [管理] > [ユーザー管理] > [認証] タブ > [OAuth アプリケーション] タブに移動します。
- [アプリケーションの追加] をクリックします。
- [名前]フィールドに、アプリケーションの一意の名前を入力します。
- [スコープ]ドロップダウンリストから、[読み取り]または[読み取り/書き込み]を選択します。
 注記: アプリケーション内で選択されたスコープは、すべてのGainsight APIに適用されます。
- [コールバックURL]フィールドに、コールバックのURLを入力します。
- (オプション)[別の URL を追加] をクリックして、コールバック用の別のURLを追加します。
- [アプリケーションの追加] をクリックします。クライアントIDとクライアントシークレットが生成され、一覧ページからコピーできます。

重要:
- 
    管理者は、Gainsightで作成できるアプリケーションは1つだけです。同じクライアントIDを使用して、ブラウザーで渡されるさまざまなスコープに対して複数の認証コードを生成できます。これらの認証コードは、さまざまな外部エージェント(ブラウザーまたはアプリケーション)からアクセストークンを生成するために使用できます。認証コードとアクセストークンの詳細については、認証コードの取得とアクセストークンの生成のセクションを参照してください。 
- 
    アプリケーションを作成する際、Gainsight APIにアクセスする外部アプリケーションのアクセスタイプを定義する際に、(アプリケーションで選択された) 権限とスコープが重要な役割を果たします。以下は、選択したスコープとユーザーのアクセス許可に基づいてアクセスが提供される2つのシナリオです。 -  認可ユーザーの権限が、アプリケーションまたはブラウザーで提供される範囲よりも少ない場合、外部アプリケーションのアクセスレベルはユーザーの権限に従います。
 
 例えば、ユーザーが読み取りアクセス許可しか持っていない場合、同じユーザーによって承認されたアプリケーションは、APIを介してアクセスされるオブジェクトに書き込むことはできません。
- アプリケーションまたはブラウザーで提供されるスコープが、ユーザーに与えられたアクセス許可よりも小さい場合、外部アプリケーションのアクセスレベルは、アプリケーションまたはブラウザーで提供されるスコープに従います。
 
-  認可ユーザーの権限が、アプリケーションまたはブラウザーで提供される範囲よりも少ない場合、外部アプリケーションのアクセスレベルはユーザーの権限に従います。
- 
    認証コードの生成後、アプリケーションのスコープが変更された場合、ユーザーは新しいスコープの認証コードを再生成する必要があります。 
- 
    アクセストークンが生成された後、承認ユーザーの権限が変更された場合、既存のトークンはユーザーの以前の権限に従ってデータにアクセスできるため、新しいアクセストークンとリフレッシュトークンを生成するために再承認する必要があります。 
認証コードを取得する
アプリケーションを作成したら、認証コードを生成する必要があります。認証コードは、アクセストークンとリフレッシュトークンを生成するために使用されます。
注記: 認可コードは、スコープのタイプ(読み取りまたは読み取り/書き込み)ごとに生成できます。
認証コードを取得するには:
- 新しいブラウザータブで、次のURLを入力し、アプリケーションURL、クライアントID、コールバックURL、およびスコープを置き換えます。
    URL形式: <アプリケーションURLを挿入>/v1/authorize?clientId=<クライアントIDを挿入>&redirectUri=<コールバックURLを挿入>&scopes=<スコープ> サンプル URL: https://xyzcompany.gainsightcloud.com/v1/authorize?clientId=yGCCltz2ZZuqhUqfB2DgUPInBaFlq7uR&redirectUri=https://oauthtest..com&scopes=read_write 
 
 重要:
- アプリケーションの作成中に指定されたredirectUriとコールバックURLは同じである必要があります。
- readまたはread_writeの2つのスコープのみを指定できます。
- キーボードのEnterキーを押します。Gainsightのログインページが表示されます。
- ユーザー名とパスワードを入力します。
 
 注記: アプリケーションは、アプリケーションを承認したユーザーの権限に基づいてデータにアクセスできます。
 
- ログインをクリックします。これにより、アプリケーションで提供されるコールバックURLにリダイレクトされます。認証コードはURLで確認できます。
アクセストークンの生成
POSTメソッドに以下のURLを入力することでアクセストークンを生成できます。
URL: <アプリケーションURL>/v1/users/oauth/token
注:
- ユーザー権限は、アクセストークンを使用して呼び出されたときにAPIがアクセスできるデータを制限します。
- Gainsightは、OAuth認証の認証コードフローに従います。つまり、アクセス トークンを生成するには認証コードが必要です。
リクエスト本文のクライアントシークレットと認証コードを置き換えます。
    
{
  
"clientId":   「クライアントIDを挿入」、
  
"clientSecret":   「クライアントシークレットを挿入」、
  
"grantType":"authorization_code"、
  
"redirectUri"   : 「URLを挿入」、
  
"code"   :"「コードを挿入」
  
}
アクセストークン(有効期間3600秒)とリフレッシュトークンを含むJSON応答が返されます。以下はJSON応答のサンプルです。
    
{
  
"result":   true,
  
"errorCode":   null,
  
"errorDesc":   null,
  
"requestId":   "wquoiueoiasd"、
  
"data":   {
  
"accessToken":   "ukjds80asdsvdfvsdvdsvsdvsdvdvskjlklk112nkl"、
  
"refreshToken":   "dassadaadjlsadjlsaddadvdsddsdvsdvdvdssdvd"、
  
"TokenType":   "Bearer"
  
"expiresIn":   3600
  
}、
  
"message":   null
  
}
このアクセストークンは、Gainsight APIおよびBulk APIジョブのcURLコマンドで使用できます。cURLコマンドを生成する方法の詳細については、Gainsight バルク APIおよび APIとDeveloper Docs (近日公開予定) の記事を参照してください。
リフレッシュトークン
アクセストークンの有効期限が切れた後、アクセストークンで生成されたリフレッシュトークンを使用して、新しいアクセストークンを取得できます。次のスクリプトは、アクセス トークンを更新するためのサンプルリクエスト本文を示しています。
注記: アクセストークンを生成するたびに、新しいリフレッシュトークンが生成されます。新しく生成されたリフレッシュトークンは1時間有効で、その後新しいリフレッシュトークンが生成されます。
    
{
  
「clientId」: 「クライアントIDを挿入」、
  
「clientSecret」: 「クライアントシークレットを挿入」、
  
"grantType":"refresh_Token"、
      
"refreshToken":   「リフレッシュトークンを挿入」
  
}
承認の取り消し
管理者は、必要に応じてアプリケーションの承認を取り消して、Gainsightデータへのアクセスを制限できます。
アプリケーションの承認を取り消すには:
- [管理] > [ユーザー管理] > [認証] > [OAuth アプリケーション]に移動します。
- 縦に並んだ3つのドットメニューをクリックし、[表示/編集]を選択します。OAuthアプリケーションの詳細ページが表示されます。
- [承認]をクリックします。
- 縦に並んだ3つのドットのメニューをクリックし、[承認の取り消し]を選択します。確認ダイアログボックスが表示されます。
- [確認]をクリックします。
注記: ユーザー認証が取り消されると、リフレッシュトークンは無効になります。

リフレッシュトークンを取り消す
管理者は、APIを呼び出してリフレッシュトークンを取り消すことができます。以下は、リフレッシュトークンを取り消すために必要な詳細です。
| メソッド | POST | 
| URL | https://<application URL>/v1/users/oauth/revoke | 
| リクエストヘッダー | コンテンツタイプ:application/json | 
リクエスト本文
{
"clientId": <Insert clientId>,
"clientSecret": <Insert clientSecret>,
"refreshToken": <Insert refreshToken>
}
リフレッシュトークンのステータス
管理者は、[承認]タブでリフレッシュトークンのステータスを表示できます。新しく生成されたリフレッシュトークンは1時間有効で、その後新しいリフレッシュトークンが生成されます。ステータスは次のとおりです。
- アクティブ: リフレッシュトークンがアクティブであり、新しいアクセストークンの生成に使用できることを示します。
- 期限切れ:リフレッシュトークンの有効期限が切れており、新しいアクセストークンの生成に使用できないことを示します。ユーザーは、新しいリフレッシュトークンを生成するために再承認する必要があります。この記事の「承認コードの取得」セクションを参照してください。
- 取り消し済み: リフレッシュトークンがユーザーによって取り消されたことを示します。ユーザーは、新しいリフレッシュトークンを生成することを再承認できます。
- 無効:ユーザーの非アクティブ化により、リフレッシュトークンが無効になったことを示します。
アプリケーションを削除する
管理者はアプリケーションを削除して、アプリケーションの承認を取り消すことができます。アプリケーションを削除すると、外部アプリケーションのGainsightデータへのアクセスが自動的に制限されます。
アプリケーションを削除するには:
- [管理] > [ユーザー管理] > [認証] > [OAuthアプリケーション]に移動します。
- 縦に並んだ3つのドットのメニューをクリックし、[削除]を選択します。確認ダイアログボックスが表示されます。
- [はい]をクリックします。
注記: アプリケーションが削除されると、すべてのコードまたはトークンが無効になります。
アプリケーションの無効化
アプリケーションが非アクティブ化されると、アプリケーション用に生成されたアクセストークンとリフレッシュトークンは、アプリケーションが再度アクティブ化されるまで一時的にブロックされます。
アプリケーションを非アクティブ化するには:
- [管理] > [ユーザー管理] > [認証] > [OAuthアプリケーション]に移動します。
- ステータス切り替えスイッチをオフにして、アプリケーションを無効にします。
Gainsight APIによるOAuth
外部アプリケーションからGainsightデータにアクセスするときに、OAuthを使用してGainsight APIを承認できます。API呼び出しの検証に必要な詳細は次のとおりです。
方法の詳細
| HTTPメソッド | PUT | 
| コンテンツタイプ | アプリケーション/json | 
| 応答形式 | JSON | 
| 必須認証 | はい | 
| ヘッダ | アクセスキー:Gainsightから受け取ったAPIアクセスキーをヘッダー「Accesskey」に渡します。 また 承認: ヘッダに「ベアラー <アクセストークン>」を渡す | 
必須パラメータ
| 必須パラメータ | 使い方 | 詳細 | 
|---|---|---|
| APIキー | リクエストヘッダーを通過 | Gainsight から受け取った API アクセス キーをヘッダー「Accesskey」に渡します。 | 
| 承認 | リクエストヘッダーを通過 | ヘッダーに「Bearer <Access Token>」を渡します。 | 
| 新規レコードまたはレコードJSONの更新 | リクエストボディを通過 | これは、Person オブジェクトで作成するか、既存のレコードを更新する新しいレコードを表す JSON です。 サンプルの JSON は、以下のセクションの要求本文に示されています。 | 
| キー | リクエストボディを通過 | 電子メールは、Person オブジェクトのレコードを識別するのに役立つ唯一のフィールドです。 API リクエスト本文を介してこのフィールドを渡すことは必須です。 このフィールドを使用して、Person オブジェクトの残りのフィールドが更新されるか、新しいレコードが作成されます。 | 
追加リソース
Gainsight APIの詳細については、次の記事を参照してください。
- Company API Documentation (近日公開予定)
- 個人のAPIドキュメント (近日公開予定)
- GainsightバルクのAPI (近日公開予定)
- イベントのAPI (近日公開予定)
- コックピットのAPI (近日公開予定)
- サクセスプランのAPI (近日公開予定)
- データ管理のAPI (近日公開予定)