az apim api import to existing API clears serviceUrl when the optional --service-url parameter isn't provided
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 3.5k
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 60
Description
### Describe the bug
az apim api import to existing API clears serviceUrl when the optional --service-url parameter isn't provided
Clearing/removing/blanking the `serviceUrl` property of an APIM API is a risk that the runtime breaks down.
### Related command
```
az apim api import
```
### Errors
N/A
### Issue script & Debug output
```
az apim api import
--service-name apim-something-weu
--resource-group rg-something-weu
--path /ecommerce
--specification-format OpenApiJson
--specification-path C:\something\ecommerce.json
--api-id ecommerce-v1
--api-version v1
--api-version-set-id 'ecommerce'
--description "sinterklaas"
--display-name eCommerce
```
### Expected behavior
Ensure properties that are not provided, as they are (intentionally) optional, won't be changed via the resulting resource provider deployment.
### Environment Summary
```
azure-cli 2.62.0
core 2.62.0
telemetry 1.1.0
Extensions:
azure-devops 1.0.0
maintenance 1.6.0
Dependencies:
msal 1.28.1
azure-mgmt-resource 23.1.1
```
### Additional context
We aim to have this split
- APIM configuration via BICEP infra templates
- including API definition (paths, API level policies), (API) Products, subscriptions and such
- On the API solution (deploy-time pipeline) we take the OpenAPI spec, and (re)import the operations into the predefined APIM API
The serviceUrl is to be configured and maintained in the former, also to have an environment agnostic OpenAPI specification file. Currently that is impossible as I can't instruct the `az apim api import` to stay "hands of" the serviceUrl that was configured, and is no cleared as result, breaking the runtime and resulting into unavailability.
Can be reproduced via
- Checking the `serviceUrl` of an API after `az apim api list --resource-group rg-something-weu --service-name apim-something-weu`
- (re)import that API, without specifying a `--service-url`
- Check again the `serviceUrl` of the same API, which is now converted into a `null` value.
The error directly after that
```
GatewayError:
at forward-request
Backend service URL is not defined.
```
Contributor guide
Assessment
This issue has not been assessed yet.