Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Anaplan

AnaplanのAPIコールのサンプル

投稿日:2022年5月8日 更新日:

 

<目次>

(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 ---"
} ]
 
画面と照らし合わせると、具体的には下記の箇所の情報が表示されています。
(図122①)

目次にもどる

(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)

●注意点
このトークンは一定時間(約10分)で切れるため、実質的には実行の度に新規に発行するなどの工夫が必要です。
 

(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)
 

Adsense審査用広告コード


Adsense審査用広告コード


-Anaplan

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Anaplanのトライアルの利用開始の手順をご紹介

  <目次> (1) Anaplanのトライアルの利用開始の手順をご紹介  (1-1) Anaplan無料トライアルについて  (1-2) Anaplan無料トライアルの利用開始手順 (1) …

  • English (United States)
  • 日本語
Top