[IDMC] プラットフォームREST API（概要理解＆ログイン編）

# はじめに（Preface）
IDMCは、Informatica社が法人や官公庁向けに提供しているクラウドサービスです。
IDMCは通常ウェブブラウザからGUIで操作しますが、
**CUIで操作したい**、**自動化したい**といったニーズにも対応できるように、
REST APIも準備されています。
この記事では、その使用方法を説明します。
This article introduces how to use the IDMC's Platform REST API.

# プラットフォームREST APIで出来ること

以下の操作対象について、情報の参照やリソースの操作が可能です。

|操作対象（リソース）|操作内容（メソッド）|
|---|---|
|ログイン、ログアウト|パスワード認証、SAML認証、Salesforce資格認証|
|タスク|開始、停止、完了ステータス取得、タスクリスト取得|
|スケジュール|作成、更新、削除、情報取得|
|ログ|実行中ジョブのログ/完了ジョブのログ/エラーログ/セッションログ/監査ログの取得|
|ユーザー|作成、更新、削除、属性情報取得、ユーザーリスト取得、ユーザーへのロール割当、管理者特権によるパスワードのリセット/変更|
|ユーザーグループ|作成、更新、削除、ユーザーの追加、ユーザーグループリスト取得|
|ロール|作成、更新、削除、属性の取得|
|SecureAgent|登録、削除、インストールトークン取得、チェックサム取得、プロパティ情報取得|
|SecureAgentグループ|作成、更新、削除、サービスの有効化/無効化、接続コネクタの有効化/無効化、サービスプロパティの設定|
|SecureAgentサービス|開始、停止、ステータス取得|
|組織、サブ組織|更新、プロパティ情報取得、サブ組織の作成/削除|
|プロジェクト|作成、更新、削除|
|フォルダ|作成、更新、削除|
|オブジェクト|アセットリストの取得、アセットの検索/依存関係の検索/エクスポート/インポート、ユーザーまたはユーザーグループの権限設定、組織間での同期|
|バンドル|インストール、アンインストール、サブ組織への配信、プロパティ情報取得、ライセンス情報取得|
|タグ|アセットへの割当/削除|
|ライセンス|組織のライセンス情報取得、サブ組織へのライセンス割当|
|特権|追加、更新、特権リストの取得|
|接続元IPアドレス制限|ホワイトリスト取得、ホワイトリストへの追加、制限の有効化/無効化|
|暗号化キーのローテーション|設定状態の取得/変更、ローテーション間隔の取得/変更|
|SAML|SAMLロールまたはSAMLグループのIDMCロールに対するマッピングの追加/削除|
|接続|作成、更新、一覧の取得|
|マップレット|一覧の取得、削除|
|マッピング|式の検証、マスキングの定義|
|動的マッピングタスク|作成、表示、更新、削除、開始、停止、ステータス取得|
|ファイルリスナ|作成、表示、更新、削除、開始、停止、ステータス取得、所有者変更|
|タスクフロー|ステータス取得、一括パブリッシュ|
|リニアタスクフロー|作成、更新、削除、ステータス取得|
|その他|Gitソース管理リポジトリに関する操作、一括取り込みサービスに関する操作、サーバーのローカルタイム取得|

:::note info
APIリクエストに使用するユーザーアカウントに、
各操作に必要な権限が付与されている必要があります。
:::

# プラットフォームREST APIによるIDMCへのログイン

APIで何か操作するには、各操作に先立って
以下の手順でAPIによるログイン認証を成功させる必要があります。

<B>１．APIエンドポイントのURLを確認します。</B>

:::note info
<B>APIエンドポイントのURL</B>
https://**[cloud provider]**-**[region]**.informaticacloud.com/ma/api/v2/user/login
:::
[cloud provider]と[region]の部分には、使用中のPOD名に対応する値を代入します。
例：POD名が「usw1」の場合、[cloud provider]は「dm」、[region]は「us」となります。
　　従って、APIエンドポイントのURLは以下のようになります。
 　 　https://**dm**-**us**.informaticacloud.com/ma/api/v2/user/login

POD名とクラウドプロバイダ/リージョンの対応表（2023年10月時点）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520588/ddb3b3d2-9f12-6e76-0bdc-478b7f53c4ae.png)

<B>２．APIログインに使用するユーザー名とパスワードを確認します。</B>

:::note info
<B>ユーザー名とパスワード</B>
APIログインに使用するユーザーアカウントは、
ブラウザでログインするのに使用するものと同じです。

※普段ブラウザで使用されているユーザーと、
　APIでの操作に使用するユーザーを、
 　権限管理上の理由から別ユーザーとすることもできます。
:::

<B>３．APIクライアント等を使って、APIリクエストを実行します。</B>
|設定項目|設定値|
|---|---|
|HTTPメソッド|POST|
|APIエンドポイントのURL|「１．」で確認したもの|
|HTTPリクエストヘッダー|Content-Type: application/json<br>Accept: application/json|
|HTTPリクエストボディ|{<br>"@type": "login",<br>"username": " ******** ",（「２．」で確認したもの）<br>"password": " ******** "（「２．」で確認したもの）<br>}|

下図は、APIクライアントとしてPostmanを使用した例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520588/8fba4111-46c2-31af-b1dc-5fb84fe041c8.png)

<B>４．APIレスポンスを確認します。</B>

「３．」のAPIリクエストでIDMCへのログインに成功すると、
下図のようなJSONデータを含むAPIレスポンスが返って来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520588/6f17131e-dbbc-8b8d-c8c3-f7245fce20f2.png)
このJSONデータの中の**serverUrl**と**icSessionId**が、以後のAPIによる操作に必要な情報です。

:::note info
<B>icSessionId</B>
認証トークンとして機能します。
以後の操作のAPIリクエストヘッダに含めることで、
ログイン済ユーザーと同じ権限で操作を実行することができます。
:::
:::note warn
icSessionIdが漏れてしまうと、
本来は権限を持たない第三者によるIDMC環境の操作を許してしまいます。
そのため、取り扱いには十分にご注意ください。
:::

# 用語（Words）

:::note info
<B>IDMC</B>
:::

+ **Informatica**社が法人や官公庁向けに提供しているクラウドサービス。
+ <INS>I</INS>ntelligent <INS>D</INS>ata <INS>M</INS>anagement <INS>C</INS>loud の略。
+ データ活用ソリューションの統合プラットフォーム。
+ 詳しくは、<INS><a href="https://qiita.com/tabe77/items/cb24d22775928727bf82">Qiita解説記事</a></INS> を参照。

https://qiita.com/tabe77/items/cb24d22775928727bf82

:::note infor
<b>Informatica</b>
:::

+ 日本語読みは<b>インフォマティカ</b>。
+ 法人や官公庁向けにデータ活用ソリューションを開発・販売する独立系ベンダー。
+ 米国カリフォルニア州に本社を置き、ニューヨーク証券取引所に上場。
+ 詳しくは、<INS><a href="https://en.wikipedia.org/wiki/Informatica">Wikipedia（英語）</a></INS>または <INS><a href="https://www.scsk.jp/sp/informatica/informatica_scsk/">SCSK社の記事</a></INS> を参照。

https://www.scsk.jp/sp/informatica/informatica_scsk/

# 参考リンク（References）

・REST API リファレンス（Informatica社の公式ドキュメント）

https://docs.informatica.com/ja_jp/integration-cloud/data-integration/current-version/_rest-api-reference_cloud-data-integration_current-version_ditamap/GUID-15FF8D9E-CF74-4657-B7EF-746C5C2C27B9.html

# おことわり（Disclaimer）
投稿する記事は私個人の見解であり所属する会社の公式な見解ではありません。
All articles I post onto Qiita are based on just my personal understanding or opinion. That means the articles are not expressed as an official opinion of the company I am belonging to or have belonged to.