diff --git a/internal/services/apimanagement/api_management_api_resource.go b/internal/services/apimanagement/api_management_api_resource.go index cade5625f032..a7c332c0c288 100644 --- a/internal/services/apimanagement/api_management_api_resource.go +++ b/internal/services/apimanagement/api_management_api_resource.go @@ -192,6 +192,13 @@ func resourceApiManagementApi() *pluginsdk.Resource { }, }, }, + + "translate_required_query_parameters": { + Type: pluginsdk.TypeString, + Optional: true, + Default: string(api.TranslateRequiredQueryParametersConductTemplate), + ValidateFunc: validation.StringInSlice(api.PossibleValuesForTranslateRequiredQueryParametersConduct(), false), + }, }, }, }, @@ -846,6 +853,9 @@ func expandApiManagementApiImport(importVs []interface{}, apiType api.ApiType, s apiParams.Properties.ApiVersionSetId = pointer.To(versionSetId) } + translateRequiredQueryParameters := importV["translate_required_query_parameters"].(string) + apiParams.Properties.TranslateRequiredQueryParameters = pointer.To(api.TranslateRequiredQueryParametersConduct(translateRequiredQueryParameters)) + return &apiParams } diff --git a/internal/services/apimanagement/api_management_api_resource_test.go b/internal/services/apimanagement/api_management_api_resource_test.go index 882d29d005ef..9599935661e8 100644 --- a/internal/services/apimanagement/api_management_api_resource_test.go +++ b/internal/services/apimanagement/api_management_api_resource_test.go @@ -359,6 +359,38 @@ func TestAccApiManagementApi_importUpdate(t *testing.T) { }) } +func TestAccApiManagementApi_translateRequiredQueryParametersDefault(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_api_management_api", "test") + r := ApiManagementApiResource{} + + data.ResourceTest(t, r, []acceptance.TestStep{ + { + Config: r.translateRequiredQueryParameters(data, ""), + Check: acceptance.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("import.0.translate_required_query_parameters").HasValue("template"), + ), + }, + data.ImportStep("import"), + }) +} + +func TestAccApiManagementApi_translateRequiredQueryParametersQuery(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_api_management_api", "test") + r := ApiManagementApiResource{} + + data.ResourceTest(t, r, []acceptance.TestStep{ + { + Config: r.translateRequiredQueryParameters(data, "query"), + Check: acceptance.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("import.0.translate_required_query_parameters").HasValue("query"), + ), + }, + data.ImportStep("import"), + }) +} + func TestAccApiManagementApi_complete(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_api_management_api", "test") r := ApiManagementApiResource{} @@ -1141,6 +1173,32 @@ resource "azurerm_api_management_api" "test" { `, r.template(data, SkuNameConsumption), data.RandomInteger) } +func (r ApiManagementApiResource) translateRequiredQueryParameters(data acceptance.TestData, strategy string) string { + translateLine := "" + if strategy != "" { + translateLine = fmt.Sprintf(`translate_required_query_parameters = "%s"`, strategy) + } + return fmt.Sprintf(` +%s + +resource "azurerm_api_management_api" "test" { + name = "acctestapi-%d" + resource_group_name = azurerm_resource_group.test.name + api_management_name = azurerm_api_management.test.name + display_name = "api1" + path = "api1" + protocols = ["https"] + revision = "1" + + import { + content_value = file("testdata/api_management_api_swagger.json") + content_format = "swagger-json" + %s + } +} +`, r.template(data, SkuNameConsumption), data.RandomInteger, translateLine) +} + func (ApiManagementApiResource) template(data acceptance.TestData, skuName string) string { return fmt.Sprintf(` provider "azurerm" { diff --git a/website/docs/r/api_management_api.html.markdown b/website/docs/r/api_management_api.html.markdown index 777527ea3948..331e59008235 100644 --- a/website/docs/r/api_management_api.html.markdown +++ b/website/docs/r/api_management_api.html.markdown @@ -123,6 +123,8 @@ A `import` block supports the following: * `wsdl_selector` - (Optional) A `wsdl_selector` block as defined below, which allows you to limit the import of a WSDL to only a subset of the document. This can only be specified when `content_format` is `wsdl` or `wsdl-link`. +* `translate_required_query_parameters` - (Optional) Strategy of translating required query parameters to template ones during import. Possible values are `query` and `template`. Defaults to `template`. + --- A `license` block supports the following: