WorkatoのDeveloperAPIの使い方と使いどころ

# はじめに
Workatoには、Workato自身を操作するためのREST API「DeveloperAPI」が用意されています。
DeveloperAPIを使うと、Workatoにかかわる運用の効率化・省力化が実現できます。
使えるAPIエンドポイントの全量は公式Docsに記載されています。

https://docs.workato.com/ja/workato-api/resources.html

# 注意点
契約中のプランによって使用できるAPIに制限があります。
一部の機能（ユーザー、ワークスペース、レシピ、プロジェクト）については、ビジネスエディション以上で使用可能です。

# 使い方（トークンの生成）
**まず、「クライアントロール」を作成します。**
Workspace admin画面の「API Clients」タブにアクセスします。
続いて「Client roles」に遷移し、右上の「+ Add client role」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/421acccd-70ef-5d0f-efc7-4096a38a8146.png)


クライアントロールでは使用可能なAPIを細かく制限できます。
例えば"レシピの削除"についてチェックボックスを外しておけば、API経由でうっかりレシピを削除してしまった、なんてアクシデントを防げます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/f13a7b96-e090-236a-900a-dd7ffcbfab96.png)


**次に、「APIクライアント」を作成します。**
「API clients」に遷移し、右上の「+ Create API client」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/008facf1-f2d1-8533-2e8a-4c207fc22c6a.png)


先ほど作成したクライアントロールを選択して、クライアントを作成します。
右上の「Create client」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/352ca096-744f-d637-556e-6c55d5a56ebb.png)

クライアント作成に成功すると、自動でトークンが生成されます。
トークンはコピーして、セキュアな場所に保管おきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/7588fecf-68e2-670d-7465-eb7efabb9529.png)



**これで準備が整いました。**
生成されたトークンで認証し、任意のAPIをhttpリクエストします。
（サンプルではPostmanで試打しています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778017/d38f03bf-77d9-7311-8eee-733ea6ad8e6f.png)




ロールをどう設定すべきか(考え方)などの細かな点については、公式Docsをご覧ください。

https://docs.workato.com/ja/workato-api/api-clients.html#api%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%AE%E5%88%A9%E7%82%B9

# DeveloperAPIでできること5選

DeveloperAPIでできることは多岐にわたりますが、いくつかピックアップしました。
特徴とどんなことに活用できそうかを合わせて紹介したいと思います。

## ルックアップテーブル操作

https://docs.workato.com/ja/workato-api/lookup-tables.html

ルックアップテーブルのデータを参照したり、追加更新できるAPIが用意されています。
ユースケースによっては、Workatoの他にRPAなどのツールを組み合わせて、全体の自動化を図る場合があります。
ツール間で適切に連携を取るために、共通の資産にアクセスする必要がある場合には、
ルックアップテーブルをConfigやマスタとして照会する、または値の受け渡しをするための箱としての使い方ができます。

## デプロイ・テスト自動化

https://docs.workato.com/ja/workato-api/projects.html#understanding-project-deployment

https://docs.workato.com/ja/workato-api/test-automation.html

専用のツールを導入していなくても、デプロイやテストの実行APIを組み合わせてWorkato内でGitHub ActionsのようなCI/CDが行えます。
例えばSlackやTeamsに展開したWorkbotで、コマンドで反応するようにしておき、
レシピの開発者がレビューを依頼→承認者による[承認]ボタンクリックを検知→本番環境に自動的にデプロイ という流れを構築できます。（テストの実行も同様です）

## コラボレータ招待

https://docs.workato.com/ja/workato-api/team.html#invite-collaborator

任意のユーザーをWorkatoに招待できます。
Workatoは入社や異動に伴うSaaSアカウントの付け替えを得意としていますが、Workato自体の招待も自動化しておけばスマートです。

## レシピ操作

https://docs.workato.com/ja/workato-api/recipes.html

レシピ一覧・詳細取得のほか、レシピ作成・更新・削除・コピー、開始・終了など様々な操作が実行できます。

少し・・・細かい話をします。（引かないでほしいです）
レシピの「一覧」を取得したい場合、RecipeOpsコネクタの「List recipes」アクションでも同様のことができますが、取得できるのが**1000レシピまで**と制限があります。
レシピ一覧取得のAPIなら、並び順やページ番号などの条件を指定できるので、1000個以上のレシピに対応するページネーション処理が組みやすそうです。

また、**レシピのカーソル初期化**は、現時点ではブラウザでは実行できず、APIからのみ実行可能です。覚えておくと便利な機能です。

https://qiita.com/tabimoba/items/5edd3e885c9dab327c67

## ジョブ取得

https://docs.workato.com/ja/workato-api/jobs.html

ジョブの「一覧」についてはブラウザからCSVで一括取得できるようになったので、あまりAPIを使うメリットは無いかもしれません。
ジョブの「詳細」を取得するAPIでは、任意のジョブについてステップ毎のIN/OUT値や実行時間などの細かい内容が取得できます。
RecipeOpsコネクタのレシピの失敗を検知するトリガーと組み合わせて、該当ジョブの詳細を取得すれば、エラーメッセージ＋エラー発生処理の上流ステップのOutput（Json形式）を元に、生成AIにエラー解析をしてもらう…などの使い方をしても面白そうです。
（お察しの通り、解析の精度は生成AI次第です）

# さいごに
Workatoにかかわる運用の効率化・省力化の観点では、デプロイ・テスト自動化やコラボレータ招待などの操作が有用ですね。
データ活用の面では、GET系のAPIでひとまずデータをロードしておけば、BIツールにかけて可視化と分析ができそうです。

これらのAPIをどこから実行しようか？という話ですが、
Workatoのレシピ内で「Send request」アクションを利用するのもいいと思います。
ただし、何百何千件というリソースに対して1件ずつ実行する場合は、タスクを大量に消費してしまうため、Workatoでの実行はお勧めしません。
こうした場合は（GAS等の）実行回数が課金に影響しないサードパーティー製のツールから実行するほうが適しているといえます。
使うAPIによって実行元を検討してください。