Do not deploy echo-api when deploying via the SDK or ARM template.
If I create a new Microsoft.ApiManagement/service resource and I do not have any Microsoft.ApiManagement/service/apis defined I would not expect a "example api" to be included.
The SDK and ARM templates are for people to automate their deployments, adding a API to show someone how to use the APIM service on ALL new deployments does not make sense in a scripted environment.
If when creating a new APIM from the web portal causes it to add a extra api to show the usage of APIM, that is fine, I world totally understand that behavior. But adding un-asked for apis during a scripted deployment does not make sense to me.
An example use case for changing the behavior is I have one script that sets up “shared resources” in azure for my multiple projects. Then, at a later date several App Services will be deployed with their own deployment script and that script will have the responsibility of adding a API to the API Management service. To make this work I would need to have the ability to create an empty API Management service in the first shared resources deployment.
In summary, I propose any scripted method of creating a Microsoft.ApiManagement/service should not create any additional resources (apis, products, users, groups, etc.), the portal can keep it's behavior the way it is now, a example template from https://github.com/Azure/azure-quickstart-templates should be added that can re-create the portal's current behavior when creating a new resource.
It should support "templates" same like an Azure VM..."Empty", "Sample simple APi X", 'Sample complex API Y", etc. from a Git / GitHub....
Scott Chamberlain commented
In the paragraph about my use case, I should have said "To make this work without invoking a extra Power Shell script after the deployment to delete the un-asked for resources I would need...