private async Task AssignApisToProducts(DeploymentTemplate template) { var products = await resourceCollector.GetResource(GetAPIMResourceIDString() + "/products"); foreach (JObject productObject in (products == null ? new JArray() : products.Value <JArray>("value"))) { var id = productObject.Value <string>("id"); var productInstance = await resourceCollector.GetResource(id); var productApis = await resourceCollector.GetResource(id + "/apis", (string.IsNullOrEmpty(apiFilters) ? "" : $"$filter={apiFilters}")); // Skip product if not related to an API in the filter. if (productApis != null && productApis.Value <JArray>("value").Count > 0) { foreach (JObject productApi in (productApis == null ? new JArray() : productApis.Value <JArray>("value"))) { var productProperties = productApi["properties"]; if (productProperties["apiVersionSetId"] != null) { var apiVersionSetId = new AzureResourceId(productProperties["apiVersionSetId"].ToString()).ValueAfter("api-version-sets"); productProperties["apiVersionSetId"] = $"[resourceId('Microsoft.ApiManagement/service/api-version-sets', parameters('{GetServiceName(servicename)}'), '{apiVersionSetId}')]"; } template.resources.Add(template.AddProductApi(productApi)); } } } }