LoginSignup
8
1

More than 1 year has passed since last update.

既定の環境の Power Automate の API を(無理やり)触ってみる

Last updated at Posted at 2021-12-05

この記事は Web API Advent Calendar 2021 の6日目の記事です。

5日目は @SatohJohn さんの記事でした。

Microsoft 365 の契約で、追加費用なしで利用できる for Office 365 のライセンスにて Power Apps や、Power Automate を利用されてい方は多いと思います。

この範囲で利用されるとき、Power Platform には、(既定)名前の付いた環境が作成され、その中でキャンバスアプリだったり、クラウドフローだったりを利用することができますが、この時のマイフローに表示されるクラウドフローを操作するための Web API は現在公開されていません。

今回は、公式に公開、サポートはされていませんが、この(既定)の環境の、マイフローに表示されるクラウドフローは、Logic Apps と似たような API を使って(無理やり)操作できるようなので、触ってみた結果を記事にしたいと思います。

※利用は自己責任でお願いします。
※ちなみに古いですがサポートされている方法としては、以下のような iframe 経由で操作する方法がありますが、これは使いやすいとは言いにくいものでした。

参考にしたブログなど

Mohamed Ashiq Faleel さんのブログ
https://ashiqf.com/2021/05/09/everything-to-know-about-power-automate-rest-api-to-manage-and-administer-your-flows/

からめも さんのブログ
Power Automate の承認ワークフローを API から取得する
https://blog.karamem0.dev/entry/2021/11/17/120000

Dataverse Web API を利用する
https://docs.microsoft.com/ja-jp/learn/modules/common-data-service-web-api/

やってみたこと

作業の流れとしては、以下の通りです。

  • Azure AD へアプリ登録する
  • Postman を設定して API を使用する
  • いくつか API を使ってみる

Azure AD へアプリ登録する

以下の記事の作業を参考にしています。

OAuth を使用して Microsoft Dataverse に対する認証を実行する
https://docs.microsoft.com/ja-jp/learn/modules/common-data-service-web-api/2-authenticate

Azure AD へアプリを登録

以下のように Azure AD のアプリケーションを登録します。

image.png

マニフェストの更新

マニフェストから、以下の3つを true にします。(今回は Postman から実行するため)

項目
allowPublicClient true
oauth2AllowIdTokenImplicitFlow true
oauth2AllowImplicitFlow true

image.png

アクセス許可の追加

API のアクセス許可から、Flows.Manage.Allのアクセス許可を追加します。

image.png

これで、Azure AD の設定は完了です。

Postman を設定して API を使用する

以下の記事の作業を参考にしています。

Postman を 使用して Microsoft Dataverse Web API を操作する
https://docs.microsoft.com/ja-jp/learn/modules/common-data-service-web-api/3-postman

環境変数の設定

以下のように環境変数を設定します

項目
baseurl https://api.flow.microsoft.com
env Default-{Power Platform の環境のID}
url {{baseurl}}/providers/Microsoft.ProcessSimple/environments/{{env}}
clientid {Azure AD のアプリケーションID}
callback https://callbackurl
authurl https://login.microsoftonline.com/common/oauth2/authorize?resource={{resourceurl}}
resourceurl https://service.flow.microsoft.com

image.png

トークンの取得

Authorization タブで、以下のような値を設定します。

項目
Access Token Available Tokens
Header Prefix Bearer
Token Name {自由な値}
Grant Type Implicit
Callback URL {{callback}}
Auth URL {{authurl}}
Client Authentication Send as Basic Auth header

image.png

image.png

設定できたら、アクセストークンを取得します。

image.png

これで設定は完了です。

API の呼び出しテスト

さっそく動かしてみます。

GET
{{url}}/flows?api-version=2016-11-01

image.png

なーんかレスポンスが返ってきて、フロー名っぽいものが取れてます。やった!!!

いくつか API を使ってみる

では、Logic Apps の API を参考にいくつか API を実行してみたいと思います。

自分の作ったフローの一覧を取得する

GET
{{url}}/flows?api-version=2016-11-01

image.png

フローの詳細を取得する

GET
{{url}}/flows/{flows で取得できる name }?api-version=2016-11-01

image.png

フローの実行履歴を取得する

GET
{{url}}/flows/{flows で取得できる name }/runs?api-version=2016-11-01

image.png

フローのトリガーの履歴を取得する

GET
{{url}}/flows/{flows で取得できる name }/triggers/{triggers で取得できる name}/histories?api-version=2016-11-01

image.png

フローのトリガーを再実行する

POST
{{url}}/flows/{flows で取得できる name }/triggers/{triggers で取得できる name}/histories/{histories で取得できる name}/resubmit?api-version=2016-11-01

image.png

感想

無事、動作させることができました。
今後、どれくらいサポートされたり公開されたりするのかわかりませんが、実行履歴の取得とかは使いどころありそうかなと思いました。
また、再実行が可能だったので、かなり無理やりですが、HTTP コネクタもどきを作り出すこともできるかもしれません。

普通にフローを実行するとか、他人のフローを含めた一覧を取得するとかは、できれば便利そうなのですがおそらくできなそうでした。

興味があれば、ぜひいろいろ試してみてください。

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1