
Alteryx OneのAlteryx CloudのAPIについてご紹介します
AkimasaKajitaniです。今回はAlteryxOneのAlteryx One PlatformのAPIについてご紹介していきたいと思います。
Alteryx Cloud(Alteryx One)のAPI概要
SaaSシステムにおいて、APIは運用の自動化や他システムとの連携などを行うための重要な機能となります。
2026年2月4日時点では、AlteryxのCloudAPIは主に5種類のカテゴリで構成されています。
- Billing・・・請求やアカウント管理について
- Identity and Access Management(IAM)・・・ユーザー管理に関わるAPI
- Plans・・・PLANsに関わるAPI
- Scheduling・・・スケジュールに関わるAPI
- Trifacta Classic・・・Trifacta用API(レガシー製品の互換用)
これ以外に、認証に関わるAPIもあります。認証のAPIはドキュメントに記載がないので、コミュニティのナレッジベース を参照する必要があります。
Cloud API利用の流れ
とりあえずAPIを試してみたい&ドキュメントを見たい
まずは一度APIを使ってみたい、という場合は、Alteryx Cloud Platformの右上の「?」メニューの中にある「Alteryx API」から試すことができます。

このAPIのテスト環境はドキュメントも兼ねています。
本格的にAPIを使いたい
ざっくりとしたCloud API利用の流れは以下のとおりです。
- アクセストークン、リフレッシュトークンをAlteryx Cloudで生成
- 実際のAPIを利用する
- 認証を行う(AccessTokenの取得)
- Refresh_tokenを更新(次回の認証はこのrefresh_tokenを使う)
- 各エンドポイントのAPIを利用する
※2-bを行うのがポイントです。2-bを行わないとAlteryxCloudで生成したトークンが無効になります。
アクセストークン、リフレッシュトークンの取得について
アクセストークン、リフレッシュトークンの取得は、Alteryx Oneのユーザー設定から行います。
まずは、ユーザー設定の画面に行きましょう。右上のアイコンから「User Preferences」を開きます。

以下の画面で、「OAuth2.0 APIトークン」タブを選択します。

ここで、青い「生成」ボタンをクリックします。適当に名前をつけて、有効期間を入力し、有効期限を設定してください。

最後に、生成ボタンをクリックします。

ここで、それぞれコピーボタンをクリックすると、アクセストークン、リフレッシュトークンが入手可能です。
さらに、クライアントIDとトークンエンドポイントURLをメモしておきます(一度トークンを作らないと表示されません)。

なお、クラウドの配置場所がオーストラリアの場合は以下のようになります。
トークンエンドポイントURL:https://pingauth-au1.alteryxcloud.com/as
Refresh Endpoint URL:https://pingauth-au1.alteryxcloud.com/as/token
※トークンエンドポイントURLにtokenをつける(ハマりポイント)
認証について
認証系は結構癖があります。
認証を行うためには、AlteryxCloudにてアクセストークン・リフレッシュトークンを事前に取得する必要があります。アクセストークンは発行して5分すると期限切れになります。そのため、リフレッシュトークンを用いてアクセストークンを都度発行する必要があります。リフレッシュトークンは、Alteryx Cloudで作成した時に期限を自分で決めることが可能です(最大365日)。また、リフレッシュトークンを使ってアクセストークンを取得すると、使用したリフレッシュトークンが無効になるのが要注意ポイントです。次回使用するリフレッシュトークンをどこから調達するのか、ということですが、アクセストークン更新時に一緒に取得できるので、このリフレッシュトークンを保管しておいて、また次回使うという必要があります。
このような性質を持っているため、都度アクセストークン、リフレッシュトークンは随時更新をかけていく必要があります。
つまり、以下のような形で動きます。

常に、リフレッシュトークンは更新された新しいものを使う必要がある、ということになります。そのため、固定的にしかトークンを保持できないツールやシステムからAlteryx OneのAPIを使うのは難しい、ということになります。
APIを使う上で知っておくべきこと
ドキュメントが説明不足なのでわかりにくいところが多々としてあるのですが、以下は知っておいたほうがスムーズな内容です。
- ワークスペースID
/iam/v1/workspaces/current で現在のワークスペースのIDを取得可能
- 各ユーザーのID
/iam/v1/workspaces/{id}/people で{id}で指定したワークスペース所属のメンバーリストを取得可能(つまり、ワークスペースのIDを知っておく必要があります)
- 各ユーザーの詳細情報
/iam/v1/people/{id} 各ユーザーのIDはpersonID
- ユーザー削除するとどうなるか?
接続、データセット、OAuth2.0トークンはすべて削除されます。作成したアセット(ワークフローなど)は所有者不明となります。UIからユーザーを削除した場合は、他のユーザーへ移し替えることを促されますが、APIの場合は問答無用なので気をつけましょう。実際以下のようになってしまいます。

ですので、ユーザーを削除する際は、各アセットをtransferエンドポイントで所有権を他の人に移してから削除してください。
なお、ワークフローなどは所有権の移転が可能に見えますが、メニューから所有権の移転をしてもできません。また、データセットは所有権の移転はできません。
ワークフローの場合:

データセットの場合:

※データセット自体は項目としては残っているようですが、共有しようとすると見つからないと出るので、実質削除されている可能性が高いです
※UIから削除する際は、所有権の移転を行ってから削除されるフローになっていますが、APIでは直接削除が可能なのでご注意ください。
トークン更新コード
以下コードでトークンの更新が可能です。事前にjson(ファイル名:credential.json)に取得したトークンを書き込んでおく必要があります。
credential.json:
{
"access_token": "",
"refresh_token": ""
}
以下が実際のコードです。
import urllib.parse
import urllib.request
import json
# ============= 使い方 =============================================
# 外部JSONファイルにCloudで取得したOAuth2.0 APIトークンのアクセストークン、リフレッシュトークンを貼り付けて保存
# 設定
# ★環境に合わせて要変更★(Cloudの[ユーザー設定]-[OAuth 2.0 APIトークン]から取得)
REFRESH_URL = "https://pingauth-au1.alteryxcloud.com/as/token"
OAUTH_CLIENT_ID = "" # 実際のOAUTH CLIENT IDを入力してください
# 固定値
JSON_FILE_PATH = "credential.json"
# ============= 関数 =============================================
# JSONファイルの読み込み
def read_tokens(json_file):
try:
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
access_token = data.get('access_token')
refresh_token = data.get('refresh_token')
return access_token, refresh_token
except FileNotFoundError:
print(f"{json_file}が見つかりません")
return None, None
except json.JSONDecodeError:
print("JSONの読み込みに失敗しました")
return None, None
# JSONファイルへのトークンの書き込み
def write_tokens(json_file, access_token, refresh_token):
data = {
'access_token': access_token,
'refresh_token': refresh_token
}
with open(json_file, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print("トークンを保存しました")
# トークンの更新
def refresh_tokens(refresh_token):
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
body = {
'grant_type': 'refresh_token',
'refresh_token': refresh_token,
'client_id': OAUTH_CLIENT_ID
}
# URL encode the body for the refresh request
encoded_body = urllib.parse.urlencode(body).encode()
# Make the refresh request
request = urllib.request.Request(REFRESH_URL, data=encoded_body, method='POST')
with urllib.request.urlopen(request) as response:
return json.load(response)
# ============= メイン =============================================
# アクセストークン更新
access_token_json, refresh_token_json = read_tokens(JSON_FILE_PATH)
new_tokens = refresh_tokens(refresh_token_json)
# 更新されたトークンを保存
write_tokens(JSON_FILE_PATH,new_tokens['access_token'],new_tokens['refresh_token'])
#print("New Access Token:", new_tokens['access_token'])
#print("New Refresh Token:", new_tokens['refresh_token'])
上のコードのあとに、実際のAPIの呼び出しコードを書いていきます。例えば、以下のような現在のワークスペースの情報を取得するようなことが可能です。
def get_current_workspace(aac_url, access_token):
headers = {
'Authorization': f'Bearer {access_token}',
'User-Agent': USER_AGENT,
}
print(headers)
request = urllib.request.Request(f'{aac_url}/iam/v1/workspaces/current', headers=headers)
with urllib.request.urlopen(request) as response:
return json.load(response)
ユースケース
ワークスペースIDの取得
GET /billing/v1/my/billing-accounts/current
のworkspacesという項目にリスト形式で格納されます。
ただし、どのワークスペースIDがなんという名称なのかを取得する方法がなさそうですので、各ワークスペースでOAuth2.0 APIトークンを取って「/iam/v1/workspaces/current」を使って現在のワークスペース情報を取得して確認するしかありません。
ロールの一括割当
PUT /iam/v1/authorization/roles/{id}/people
https://api-docs.au1.alteryxcloud.com/docs/managed-iam-v1/1/routes/iam/v1/authorization/roles/{id}/people/put
リクエストパラメータの{id}は、各ロールのpolicyIdです。PolicyIdは、ワークスペースによって異なるため、誰かに全部割り当ててPolicyIdをGET /iam/v1/people/{id}を使って取得するのが早いかもしれません。
Request Bodyは、割り当てたいユーザーのIDをカンマ区切りで指定します。
ロールの一括解除
ロールの解除は一括ではできないため、以下のエンドポイントで一つずつ実行する必要があるようです。
DELETE /iam/v1/authorization/roles/{id}/people/{subjectId}
id=各ロールのpolicyId
subjectId=ユーザーのpersonId
注意事項
- BaseURLがクラウド環境のあるリージョンごとに異なるので、間違えるとアクセストークンが取れていてもHTTP Error 401: Unauthorizedとなります。
各カテゴリのエンドポイントについて
以下は各カテゴリのエンドポイントのリストになります。あまりリアルタイムで更新できないと思いますので、なるべく最新のドキュメントを見るようにしてください。
Billing
| Lv1 | Lv2 | Method | 説明 | 必要ロール |
|---|---|---|---|---|
| /billing/v1 | /my/billing-accounts/current | GET | 認証済みユーザーの現在の認証コンテキストにおける請求先アカウントを取得する | |
| /usage/export | GET | 集計使用状況の取得 このAPIを使用するには、次のいずれかのロールが必要です: アカウント管理者 | アカウント管理者 |
Identity and Access Management(IAM)
| Lv1 | Lv2 | Lv3 | Lv4 | Lv5 | Method | 説明 | 必要ロール |
|---|---|---|---|---|---|---|---|
| /iam/v1 | /authorization/roles/{id}/people | PUT | 複数のユーザーにロールを割り当てる | ワークスペース管理者 | |||
| /{subjectId} | DELETE | ある特定のユーザーからロールを削除する | ワークスペース管理者 | ||||
| /people/{id} | GET | 既存のユーザーの詳細情報を取得する | |||||
| /workspaces | /{id} | /configuration | GET | ワークスペースの設定を取得する | |||
| /invitationLink | GET | ある特定のユーザーの招待リンクを取得する | |||||
| /people | GET | 指定されたワークスペースのユーザーを一覧表示する | |||||
| /{personId} | DELETE | ワークスペースからユーザーを削除する。 | |||||
| /batch | POST | ワークスペースにユーザーを一括招待する。 | |||||
| PATCH | 指定されたワークスペースにユーザーを再度招待します。 | ||||||
| /suspend | POST | 指定されたワークスペースのユーザーを停止します。 | |||||
| /unsuspend | POST | 指定されたワークスペースのユーザーの停止を解除します。 | |||||
| /transfer | PATCH | Alteryx One アセットをワークスペース内の別のユーザーに譲渡します。 | |||||
| /{workspaceId}/admins | GET | 指定されたワークスペースの管理者を一覧表示する | |||||
| /current | GET | 現在のワークスペースに関する情報を取得する |
Plans
| Lv1 | Lv2 | Lv3 | Lv4 | Lv5 | Method | 説明 |
|---|---|---|---|---|---|---|
| /plans/v1 | /planEdges | POST | planId と追加のパラメータを指定して、新しいPLANエッジを作成する | |||
| /planNodes | POST | planId と追加のパラメータを指定して、新しいPLANノードを作成する | ||||
| /{id} | DELETE | 特定のPLANノードを削除 | ||||
| /runParameters | GET | PLANノードの実行パラメータのリストを取得する。 | ||||
| /planOverrides | POST | planNodeId と追加のパラメータを指定して、新しいPLANオーバーライドを作成する | ||||
| /{id} | PUT | 特定のプランのオーバーライド構成を更新する | ||||
| /plans | GET | クエリ パラメータを使用して結果をフィルター処理し、既存のすべてのプランとその詳細を取得する | ||||
| POST | プランの名前とその他のオプション パラメータを定義して、新しいプランを作成する | |||||
| /{id} | PATCH | 名前や説明など、特定のプランのプロパティを更新する | ||||
| DELETE | 特定のプランを削除し、それに関連付けられたスケジュールも削除する | |||||
| /full | GET | すべてのノード、タスク、エッジを含む完全なプランを取得する | ||||
| /package | GET | 指定されたプランの定義を含むパッケージを取得する。 | ||||
| /permissions | GET | プランを共有しているユーザーのリストを取得する。 | ||||
| POST | 他のユーザーとプランを共有し、特定のロールとポリシーを割り当てる。 | |||||
| /{subjectId} | DELETE | 特定のプランから権限を削除する | ||||
| /run | POST | 特定のプランを実行する。必要に応じて新しいスナップショットが作成される。 | ||||
| /runParameters | GET | 特定のプランの実行パラメータのリストを、プランノードごとにグループ化して取得する。 | ||||
| /schedules | GET | 特定のプランに設定されているすべてのスケジュールを取得する。 | ||||
| /count | GET | 指定されたクエリ パラメータに基づいて、既存のプランの合計数を取得する | ||||
| /package | POST | 提供されたパッケージからプランと関連フローをインポートする。 |
Scheduling
| Lv1 | Lv2 | Lv3 | Lv4 | Method | 説明 |
|---|---|---|---|---|---|
| /scheduling/v1 | /schedules | GET | 現在のユーザーが所有する詳細とともにスケジュールのリストを管理および取得する | ||
| POST | スケジュールの名前、トリガー、タスクを定義して、新しいスケジュールを作成する | ||||
| /{id} | GET | 特定のスケジュールの詳細を取得する | |||
| PUT | 特定のスケジュールの詳細を更新する | ||||
| DELETE | 特定のスケジュールを削除する | ||||
| /disable | POST | 特定のスケジュールを無効にする | |||
| /enable | POST | 現在無効になっているスケジュールを有効にする | |||
| /count | GET | 現在のユーザーが所有するスケジュールの合計数を取得する |
Trifacta Classic
レガシープロダクトのため今回は省略します
参考
Alteryx社が公開しているサンプルコード
本ブログの筆者が個人的に公開しているサンプルコード。一部はライブラリ化しています。
ユーザーのリスト取得などのサンプルコードがあるので、そのままお使いいただけます。
※2026/02/04時点の情報です
運営会社
