<目次>
(1) AnaplanのAPIコールのサンプル
(1-1) AnaplanのAPIの概要
(1-2) AnaplanのAPIコールのサンプルプログラム(Version1.3)
(1-3) AnaplanのAPIコールのサンプルプログラム(Version2.0)
(1-4) (参考)Python環境等をセットアップせずにAPIを手軽に試す方法
エラー対応:よくあるエラー
(1) AnaplanのAPIコールのサンプル
(1-1) AnaplanのAPIの概要
AnaplanのAPIは2022年1月時点で、大きく2バージョンあり「Ver1.3」と「Ver2.0」があるようです。
●Version1.3
いわゆるBulk API(一括処理系のAPI)が利用できます。具体的には「Upload Files」、「Import」、「Download Files」、「Export」、「Process(※注1)」、「Delete」など、主にModelのAction(データの取り込み&取り出し)タブで出来る操作がAPIで利用可能になっています(ただし、既により新しいV2.0があるため、基本はそちらを使用する)
(※注1)ImportやExportを束ねた一連の処理をProcessと呼びます。
(図111①)ImportやExportやProcess処理のコンソール上の該当箇所
(図111②)Upload Files処理のコンソール上の該当箇所
(公式ドキュメント)
●Version2.0
大きく変わったと感じた点は以下の2点です。
・①Transactional APIの追加
従来のBulk APIに加えて、新たにTransacton APIも利用できるようになりました。
具体的にはWorkspace、Model、Line Item等のデータ・メタデータを取得する「SELECT系」処理や、ModuleのCellデータ更新やListの追加・更新・削除などの「INSERT、UPDATE、DELETE系」処理などが利用可能になっています。
・②認証方式の変更
従来のVersion1.3ではBasic認証に基づいていましたが、Version2.0からは「認証トークン」を用いた認証に変更になっております。詳しくは下記の公式ドキュメントや、以降で紹介するサンプルをご覧頂けたらと思います。
(公式ドキュメント)
(1-2) AnaplanのAPIコールのサンプルプログラム(Version1.3)
まずはVersion1.3のサンプルとして、下記のエンドポイントをコールする例をご紹介します。
(表1)
エンドポイント | https://api.anaplan.com/1/3/workspaces/[ご自身のWorkspaceID]/models/[ご自身のModelID]/lists |
処理概要 | 指定したWorkspace配下のModel内にあるリストを一覧表示します。 |
認証 | Basic認証 (ID/Pass) |
ヘッダー (追加指定) |
なし |
(サンプルプログラム)
__init__.py
import requests import os from requests.auth import HTTPBasicAuth from dotenv import load_dotenv from pathlib import Path file_path = Path(__file__).parent env_path = file_path/'.env' load_dotenv(dotenv_path=env_path) def main(): user_id = os.environ['USER_ID'] password = os.environ['PASSWORD'] workspace_id = os.environ['WORKSPACE_ID'] model_id = os.environ['MODEL_ID'] basic_url = "https://api.anaplan.com/1/3/" suffix = 'workspaces/' + workspace_id + '/models/' + model_id + '/lists' final_url = basic_url + suffix headers = {'content-type': 'application/json'} response = requests.get(final_url, headers=headers, auth=(user_id, password)) result = response.text print(result) if __name__ == "__main__": main()
.env
USER_ID=[ご自身のID] PASSWORD=[ご自身のPW] WORKSPACE_ID=[ご自身のWorkspace ID] MODEL_ID=[ご自身のModel ID]
実行すると、指定したModel内のListがJSON形式で一覧表示されます。
(図121①)
(結果例)
PS C:\dev\Python\AnaplanApiTest_1> & C:/Python310/python.exe c: [ { "id" : "XXXXXXXXXXXX", "name" : "--- Geo Hierarchy ---" }, { "id" : "XXXXXXXXXXXX", "name" : "G1 Region" ~中略~ }, { "id" : "XXXXXXXXXXXX", "name" : "Size" }, { "id" : "XXXXXXXXXXXX", "name" : "--- Subsets ---" } ]
(1-3) AnaplanのAPIコールのサンプルプログラム(Version2.0)
次は2.0のサンプルをご紹介します。処理は先ほどと同じ、Model内のList一覧を取得しますが、Version2.0ではトークンを使って認証するため、その部分で若干差異が発生しています。
(表2)
エンドポイント | https://api.anaplan.com/2/0/workspaces/[ご自身のWorkspaceID]/models/[ご自身のModelID]/lists |
処理概要 | 指定したWorkspace配下のModel内にあるリストを一覧表示します。 |
認証 | なし (代わりに下記の認証トークンを使用) |
ヘッダー (追加指定) |
認証トークン ※認証トークン取得専用のAPI(https://anaplanauthentication.docs.apiary.io/)をまずはコールして、認証トークンを取得し、それをヘッダーにセットして使います。 |
(サンプルプログラム)
・①トークンの取得
まずはcrulコマンドで認証トークンを取得します(「■■■」の箇所が認証トークンです)
$ curl -X POST --user [ユーザーID]:[パスワード] https://auth.anaplan.com/token/authenticate {"meta":{"validationUrl":"https://auth.anaplan.com/token/validate"},"status":"SUCCESS","statusMessage":"Login successful","tokenInfo":{"expiresAt":1642573368358,"tokenId":"XXXXXX","tokenValue":"■■■","refreshTokenId":"XXXXX"}}
(図131①)
(図131②)
・②API実行
先ほどの認証トークン(■■■の値)をヘッダーにセットして、エンドポイントを呼び出します。
・__init__.py
import requests import os from requests.auth import HTTPBasicAuth from dotenv import load_dotenv from pathlib import Path file_path = Path(__file__).parent env_path = file_path/'.env' load_dotenv(dotenv_path=env_path) def main(): user_id = os.environ['USER_ID'] password = os.environ['PASSWORD'] workspace_id = os.environ['WORKSPACE_ID'] model_id = os.environ['MODEL_ID'] basic_url = "https://api.anaplan.com/2/0/" suffix = 'workspaces/' + workspace_id + '/models/' + model_id + '/lists' final_url = basic_url + suffix headers = {'content-type': 'application/json', 'Authorization': os.environ['TOKEN_VALUE']} response = requests.get(final_url, headers=headers) result = response.text print(result) if __name__ == "__main__": main()
.env
USER_ID=[ご自身のID] PASSWORD=[ご自身のPW] WORKSPACE_ID=[ご自身のWorkspace ID] MODEL_ID=[ご自身のModel ID] TOKEN_VALUE=AnaplanAuthToken ■■■
実行すると、指定したModel内のListがJSON形式で一覧表示されます。
(図133)
(1-4) (参考)Python環境等をセットアップせずにAPIを手軽に試す方法
もしPython等の環境が手元に無く、まずはAPIを手軽に触ってみたい場合、取り急ぎ試す方法としてPostmanを活用するのがオススメです。Web上で簡単に疎通テストが行えます。
・Version1.3の例
(図141)
・Version2.0の例
(図142)
エラー対応:よくあるエラー
●エラー①:401 Unauthorizedエラー
{ "status": "FAILURE_INVALID_TOKEN", "statusMessage": "Invalid token" }
(図151)
●考えられる原因①
・10分経過したため、トークンが切れた。
●エラー②:401 Unauthorizedエラー
{ "status": "FAILURE_UNAUTHORIZED_USER_ACTION", "statusMessage": "Principal is not authorized" }
●考えられる原因②
・必要な権限がないため
(例)Audit APIなら、Tenant Auditの権限がないため
(図152)