Logic Apps の REST API

Logic Appsにはもろもろ操作できるREST APIが用意されてます。(といってもそんなにないんですけど)

  1. Logic Appsそのもの
  2. ワークフローの管理用REST API
  3. ワークフローのサービス用REST API
  4. 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で呼び出した場合
image
※赤枠で囲ったところは次のサービス用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の値をコピーします。
image

これでSAS付きURLをゲットできます。後はPutメソッドで呼び出すだけです。簡単ですね!(※バージョン指定する場合などはやっぱり自前でSAS作らないといけない)

呼び出し例)
image

これでワークフローが実行されます。正しく実行されればHTTPのレスポンスが202で返ってきます。
ただこれは開始されただけでワークフローが正常に動作したから202のレスポンスになったというわけではないので注意ください。

ちなみにポータルからコピーしたURLにはseが指定されてない(Expireが指定されてない)のでずっと使える感じです。
自前SAS生成の場合はそのあたり自由にできます。用途に応じてご自由に。

Logic Appsのエンドポイント

Logic Appsのブレードの要約もしくは設定→プロパティからエンドポイントを確認できます。
image

エンドポイントはこんな感じ

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でエンコードした文字列を指定します。

実行例)
image

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面白いと思うので活用しましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中