MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Graph API で Team Template を使ってチーム作成する場合のメモ

Power Automate で Graph API を利用してTeam Template からチーム作成をするときに少し悩んだ点を書き残しておくメモです。

今回はユーザーとしてではなく、アプリケーションとしてチーム作成するケースを念頭に置きます。

Azure AD のアプリケーションに付与する権限は以下のとおりです。

f:id:mofumofu_dance:20210302143735p:plain
App Permissions

Azure AD へのアプリケーション登録~権限付与までの流れは以下のブログ記事がとても分かりやすかったです。

Microsoft Power Automate × Graph API で EMS 運用自動化のススメ(準備編) | by Kenta Osuka | kosuka EMS | Medium

躓いたポイント

アプリケーションからだけでなく委任されたユーザーでも同様ですが、Team Templateを利用してチームを作成するときのtemplate bindです。

Docsに従ってBodyを作ってみようと思ったのですが、"teamsTemplates('xxxx')"の部分がどう設定していいのかわからず。

Create team - Microsoft Graph beta | Microsoft Docs

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
  "template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('standard')",
  "displayName": "My Sample Team",
  "description": "My Sample Team’s Description"
}

以下のDocsを見ると、どうも baseTemplateId という情報を設定すればよさそうです。

Microsoft Graph を使用して Teams テンプレートを使ってみる - Microsoft Teams | Microsoft Docs

しかし、読み進めていくと以下のような表がありました。

f:id:mofumofu_dance:20210302144508p:plain

素直に表に従って、以下のようなbodyを送信しましたが、BadRequest (template@odata.bindのフォーマットが不正) が返ってきました。

{
  "template@odata.bind": "com.microsoft.teams.template.AdoptOffice365",
  "displayName": "My Sample Team",
  "description": "My Sample Team’s Description"
}

f:id:mofumofu_dance:20210302145046p:plain

解決

表を一度忘れて、teamsTemplatesの引数にテンプレート管理画面から取得できるIDをセットしてみるとうまく動作してくれました。

f:id:mofumofu_dance:20210302143106p:plain
Team template IDの確認

{
  "template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('com.microsoft.teams.template.AdoptOffice365')",
  "displayName": "My Sample Team",
  "description": "My Sample Team’s Description"
}

ということで、知っていれば何のことはないのですが、ハマったポイントでした。