Logic Appsにはもろもろ操作できるREST APIが用意されてます。(といってもそんなにないんですけど)
- Logic Appsそのもの
- ワークフローの管理用REST API
- ワークフローのサービス用REST API
- Logic Appsのエンドポイント
Logic Apps そのもの
Logic Appsそのものはいわゆる普通のAzure管理用REST APIということで割愛。
ワークフロー管理用REST API
2つ目のワークフロー管理用のREST APIは平たく言うとポータル上でできる操作がそのままできます。
ワークフローの作成・更新、削除、ワーフクローの取得、移動、リネーム、有効・無効、実行といったところです。
ちなみにバージョン毎のフローも取得できます。(ポータル上ではまだUIがない)※一覧取れないけど。
詳細はドキュメント参照。REST API呼び出し時の認証はAuthorizationヘッダにARMで使う方法と同じようにBearerトークンを取得して渡します。
APIのエンドポイントはこんな感じです。
https://endpoint/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Logic/workflows/workflowName?api-version=2015-08-01-preview
API Versionは今回のUpdateのほうを使う場合は 2015-08-01-preview を指定します。(古いほうは 2014-12-02-preview)
実行例) GETで呼び出した場合![]()
※赤枠で囲ったところは次のサービス用REST APIで使うエンドポイントですね
ワークフローのサービス用RESTAPI
ワークフローのサービス用REST APIは基本的にトリガーがマニュアル時の開始に使います。
エンドポイントはこんな感じ。
https://prod-<stamp number>.<region>.logic.azure.com:443/workflows/<workflow guid>/<operation segments>?api-version=2015-08-01-preview&<SAS query parameters>
API Versionは 2015-08-01-preview を指定します。
認証はSASを指定します。URL見てもわかる通り、スタンプ指定やらどこで見たらいいのかわからないWorkflow GUIDとかなかなかハードル高いです。
でも安心しましょう。SAS付きでポータルから簡単にコピーできます。
Logic AppsのブレードのAll TriggersからManualを選択してCallback Urlの値をコピーします。![]()
これでSAS付きURLをゲットできます。後はPutメソッドで呼び出すだけです。簡単ですね!(※バージョン指定する場合などはやっぱり自前でSAS作らないといけない)
これでワークフローが実行されます。正しく実行されればHTTPのレスポンスが202で返ってきます。
ただこれは開始されただけでワークフローが正常に動作したから202のレスポンスになったというわけではないので注意ください。
ちなみにポータルからコピーしたURLにはseが指定されてない(Expireが指定されてない)のでずっと使える感じです。
自前SAS生成の場合はそのあたり自由にできます。用途に応じてご自由に。
Logic Appsのエンドポイント
Logic Appsのブレードの要約もしくは設定→プロパティからエンドポイントを確認できます。![]()
エンドポイントはこんな感じ
https://{region}.logic.azure.com:443/subscriptions/{subscription ID}/resourcegroups/{resource groupname}/providers/Microsoft.Logic/workflows/{logicapps name}
他と違ってAPI Versionは 2015-02-01-preview を指定します。
なお認証はBasic認証です。ユーザー名は default でパスワードはプライマリキーもしくはセカンダリキーでBase64でエンコードした文字列を指定します。
GETで呼び出すと何やらJSONが返ってきます。
{
"properties": {
"provisioningState": "Succeeded",
"createdTime": "2016-02-25T05:51:44.4959845Z",
"changedTime": "2016-02-25T07:55:50.5525908Z",
"state": "Enabled",
"version": "08587452199349636970",
"accessEndpoint": "https://japanwest.logic.azure.com:443/subscriptions/{subscription id}/resourcegroups/{resource group name}/providers/Microsoft.Logic/workflows/samplelogicapp",
"sku": {
"name": "Standard",
"plan": {
"id": "/subscriptions/{subscription id}/resourceGroups/{resource group name}/providers/Microsoft.Web/serverFarms/logicappsplan",
"type": "Microsoft.Web/ServerFarms",
"name": "logicappsplan"
}
},
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2015-08-01-preview/workflowdefinition.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"manual": {
"type": "Manual",
"inputs": {
"schema": {
"properties": {},
"required": [],
"type": "object"
}
}
}
},
"actions": {
"Post_Message": {
"type": "ApiConnection",
"inputs": {
"host": {
"api": {
"runtimeUrl": "https://logic-apis-japanwest.azure-apim.net/apim/slack"
},
"connection": {
"name": "@parameters('$connections')['slack']['connectionId']"
}
},
"method": "post",
"path": "/chat.postMessage",
"queries": {
"channel": "#trush",
"icon_url": "http://ssssss.blob.core.windows.net/temp/kosmos.png",
"text": "?",
"username": "logicapp"
}
},
"conditions": []
}
},
"outputs": {}
},
"parameters": {
"$connections": {
"value": {
"slack": {
"connectionId": "subscriptions/{subscription id}/resourceGroups/{resource group name}/providers/Microsoft.Web/connections/F4668F5E-3125-42B7-B631-3852F7429512",
"connectionName": "F4668F5E-3125-42B7-B631-3852F7429512",
"id": "subscriptions/{subscription id}/providers/Microsoft.Web/locations/japanwest/managedApis/slack"
}
}
}
}
},
"id": "/subscriptions/{subscription id}/resourceGroups/{resource group name}/providers/Microsoft.Logic/workflows/samplelogicapp",
"name": "samplelogicapp",
"type": "Microsoft.Logic/workflows",
"location": "japanwest"
}
現在のバージョンのワークフローの内容ですね。
まとめ
Logic Apps面白いと思うので活用しましょう。