{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "apiAppName": { "type": "string", "minLength": 1 }, "webAppName": { "type": "string", "minLength": 1 }, "gatewayName": { "type": "string", "minLength": 1 }, "logicAppName": { "type": "string", "minLength": 1 }, "svcPlanName": { "type": "string", "minLength": 1 }, "param":{ // params for logic app "type":"string", "minLength": 1 }, "sku": { "type": "string", "defaultValue": "Basic", "allowedValues": [ "Free", "Basic", "Standard", "Premium" ] }, "svcPlanSize": { "defaultValue": "0", "type": "string", "allowedValues": [ "0", "1", "2" ] }, "gatewayToApiAppSecret": { "defaultValue": "0000000000000000000000000000000000000000000000000000000000000000", "type": "securestring" }, "packageUri": { // url to the blob containing the .zip package of the Api App "type": "string" } }, "variables": { "$packageId": "Microsoft.ApiApp", "$nugetFeed": "http://apiapps-preview.nuget.org/api/v2/" }, "resources": [ { "type": "Microsoft.Web/serverfarms", "apiVersion": "2015-04-01", "name": "[parameters('svcPlanName')]", "location": "[resourceGroup().location]", "tags": { "displayName": "AppServicePlan" }, "properties": { "name": "[parameters('svcPlanName')]", "sku": "[parameters('sku')]", "workerSize": "[parameters('svcPlanSize')]", "numberOfWorkers": 1 } }, { "type": "Microsoft.Web/sites", "apiVersion": "2015-04-01", "name": "[parameters('gatewayName')]", "location": "[resourceGroup().location]", "kind": "gateway", "tags": { "displayName": "GatewayHost" }, "resources": [ { "type": "providers/links", "apiVersion": "2015-01-01", "name": "Microsoft.Resources/gateway", "dependsOn": [ "[resourceId('Microsoft.Web/sites', parameters('gatewayName'))]" ], "properties": { "targetId": "[resourceId('Microsoft.AppService/gateways', parameters('gatewayName'))]" } } ], "dependsOn": [ "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('svcPlanName'))]" ], "properties": { "name": "[parameters('gatewayName')]", "gatewaySiteName": "[parameters('gatewayName')]", "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('svcPlanName'))]", "siteConfig": { "appSettings": [ { "name": "ApiAppsGateway_EXTENSION_VERSION", "value": "latest" }, { "name": "EmaStorage", "value": "D:\\home\\data\\apiapps" }, { "name": "WEBSITE_START_SCM_ON_SITE_CREATION", "value": "1" } ] } } }, { "type": "Microsoft.AppService/gateways", "apiVersion": "2015-03-01-preview", "name": "[parameters('gatewayName')]", "location": "[resourceGroup().location]", "tags": { "displayName": "Gateway" }, "resources": [ { "type": "providers/links", "apiVersion": "2015-01-01", "name": "Microsoft.Resources/gatewaySite", "dependsOn": [ "[resourceId('Microsoft.AppService/gateways', parameters('gatewayName'))]" ], "properties": { "targetId": "[resourceId('Microsoft.Web/sites', parameters('gatewayName'))]" } }, { "type": "tokens", "apiVersion": "2015-03-01-preview", "location": "[resourceGroup().location]", "name": "[parameters('logicAppName')]", "tags": { "displayName": "AuthenticationToken" }, "dependsOn": [ "[resourceId('Microsoft.AppService/gateways', parameters('gatewayName'))]" ] } ], "dependsOn": [ "[resourceId('Microsoft.Web/sites', parameters('gatewayName'))]" ], "properties": { "host": { "resourceName": "[parameters('gatewayName')]" } } }, { "type": "Microsoft.Web/sites", "apiVersion": "2015-04-01", "name": "[parameters('webAppName')]", "location": "[resourceGroup().location]", "kind": "apiApp", "tags": { "displayName": "APIAppHost" }, "dependsOn": [ "[resourceId('Microsoft.AppService/gateways', parameters('gatewayName'))]" ], "resources": [ { "type": "siteextensions", "tags": { "displayName": "APIAppExtension" }, "apiVersion": "2015-04-01", "name": "[variables('$packageId')]", "dependsOn": [ "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]" ], "properties": { "type": "WebRoot", "feed_url": "[variables('$nugetFeed')]" } }, { "type": "providers/links", "apiVersion": "2015-01-01", "name": "Microsoft.Resources/apiApp", "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms', parameters('svcPlanName'))]", "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]" ], "properties": { "targetId": "[resourceId('Microsoft.AppService/apiapps', parameters('apiAppName'))]" } }, { "name": "MSDeploy", "type": "extensions", "location": "[resourceGroup().location]", "apiVersion": "2014-06-01", "dependsOn": [ "[concat('Microsoft.Web/sites/', parameters('webAppName'))]" ], "tags": { "displayName": "{ApiAppName}" }, "properties": { "packageUri": "[parameters('packageUri')]", "dbType": "None", "connectionString": "", "setParameters": { "IIS Web Application Name": "[parameters('webAppName')]" } } } ], "properties": { "name": "[parameters('webAppName')]", "gatewaySiteName": "[parameters('gatewayName')]", "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('svcPlanName'))]", "siteConfig": { "appSettings": [ { "name": "EMA_MicroserviceId", "value": "[parameters('apiAppName')]" }, { "name": "EMA_Secret", "value": "[parameters('gatewayToAPIappSecret')]" }, { "name": "EMA_RuntimeUrl", "value": "[concat('https://', reference(resourceId('Microsoft.Web/sites', parameters('gatewayName'))).hostNames[0])]" }, { "name": "WEBSITE_START_SCM_ON_SITE_CREATION", "value": "1" } ], "applicationLogs": { "filesystem": { "level": "Verbose" }, "azureTableStorage": { "level": "Off", "sasUrl": null }, "azureBlobStorage": { "level": "Off", "sasUrl": null, "retentionInDays": null } } } } }, { "type": "Microsoft.AppService/apiapps", "apiVersion": "2015-03-01-preview", "name": "[parameters('apiAppName')]", "location": "[resourceGroup().location]", "tags": { "displayName": "APIApp" }, "resources": [ { "type": "providers/links", "apiVersion": "2015-01-01", "name": "Microsoft.Resources/apiAppSite", "dependsOn": [ "[resourceId('Microsoft.AppService/apiapps', parameters('apiAppName'))]" ], "properties": { "targetId": "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]" } } ], "dependsOn": [ "[resourceId('Microsoft.Web/sites/siteextensions', parameters('webAppName'), 'Microsoft.ApiApp')]" ], "properties": { "package": { "id": "Microsoft.ApiApp" }, "host": { "resourceName": "[parameters('webAppName')]" }, "gateway": { "resourceName": "[parameters('gatewayName')]" }, "dependencies": [ ] } }, { "type": "Microsoft.Logic/workflows", "apiVersion": "2015-02-01-preview", "name": "[parameters('logicAppName')]", "location": "[resourceGroup().location]", "tags": { "displayName": "LogicApp" }, "dependsOn": [ "[resourceId('Microsoft.AppService/apiApps', parameters('apiAppName'))]" ], "properties": { "sku": { "name": "[parameters('sku')]", "plan": { "id": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/',parameters('svcPlanName'))]" } }, "definition": { "$schema": "http://schema.management.azure.com/providers/Microsoft.Logic/schemas/2014-12-01-preview/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": { "token": { "defaultValue": "[reference(resourceId('Microsoft.AppService/gateways/tokens', parameters('gatewayName'), parameters('logicAppName'))).token]", "type": "String", "metadata": { "token": { "name": "token" } } } }, "triggers": { "recurrence": { "type": "recurrence", "recurrence": { "frequency": "Hour", "interval": 1 } } }, "actions": { "CustomApiApp": { "type": "ApiApp", "inputs": { "apiVersion": "2015-01-14", "host": { "id": "[concat(resourceGroup().id, '/providers/Microsoft.AppService/apiApps/',parameters('apiAppName'))]", "gateway": "[concat('https://', reference(resourceId('Microsoft.Web/sites', parameters('gatewayName'))).hostNames[0])]" }, "operation": "OperationID", "parameters": { "param": "[parameters('param')]" }, "authentication": { "type": "Raw", "scheme": "Zumo", "parameter": "@parameters('token')" } } } }, "outputs": { } }, "parameters": { } } } ] }