private async Task <string[]> CreateApiResourceDependencies(DeploymentDefinition creatorConfig, ApiDeploymentDefinition api)
        {
            var fileReader = new FileReader();

            List <string> apiDependsOn = new List <string>();

            if (api.IsDependOnGlobalServicePolicies(creatorConfig))
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.GlobalServicePolicy()));
            }
            if (api.IsDependOnNamedValues(creatorConfig))
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.NamedValues()));
            }
            if (api.IsDependOnApiVersionSet())
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.ApiVersionSets()));
            }

            if (api.IsDependOnProducts() && creatorConfig.Products?.Count > 0)
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.Products()));
            }

            if (api.IsDependOnTags() && creatorConfig.Tags?.Count > 0)
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.Tags()));
            }

            if (await api.IsDependOnLogger(fileReader) && creatorConfig.Loggers != null)
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.Loggers()));
            }

            if (await api.IsDependOnBackend(fileReader) && creatorConfig.Backends != null)
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.Backends()));
            }

            if (api.IsDependOnAuthorizationServers())
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.AuthorizationServers()));
            }

            if (creatorConfig.Certificates != null)
            {
                apiDependsOn.Add(DependsOn(_nestedTemplateName.Certificates()));
            }

            return(apiDependsOn.ToArray());
        }
        private async Task <List <TemplateResource> > CreateChildResourceTemplates(ApiDeploymentDefinition api)
        {
            var resources = new List <TemplateResource>();

            var dependsOn = new string[] { $"[resourceId('{ResourceType.Api}', parameters('ApimServiceName'), '{api.Name}')]" };

            if (api.Policy != null)
            {
                resources.Add(await _apiPolicyTemplateCreator.Create(api, dependsOn));
            }

            if (api.Operations != null)
            {
                resources.AddRange(await _apiOperationPolicyTemplateCreator.Create(api, dependsOn));
            }

            if (api.IsDependOnProducts())
            {
                resources.AddRange(this._productApiTemplateCreator.CreateProductApiTemplateResources(api, dependsOn));
            }

            if (api.IsDependOnTags())
            {
                resources.AddRange(this._tagApiTemplateCreator.CreateTagApiTemplateResources(api, dependsOn));
            }

            if (api.Diagnostic != null)
            {
                resources.Add(this._diagnosticTemplateCreator.CreateAPIDiagnosticTemplateResource(api, dependsOn));
            }

            if (api.Name.Contains(";rev"))
            {
                resources.Add(this._releaseTemplateCreator.CreateAPIReleaseTemplateResource(api, dependsOn));
            }

            return(resources);
        }