@@ -382,7 +382,7 @@ public async Task<List<TemplateResource>> GenerateSchemasARMTemplate(string apim
382
382
// pull returned schema and convert to template resource
383
383
RESTReturnedSchemaTemplate restReturnedSchemaTemplate = JsonConvert . DeserializeObject < RESTReturnedSchemaTemplate > ( schemaDetails ) ;
384
384
SchemaTemplateResource schemaDetailsResource = JsonConvert . DeserializeObject < SchemaTemplateResource > ( schemaDetails ) ;
385
- schemaDetailsResource . properties . document . value = JsonConvert . SerializeObject ( restReturnedSchemaTemplate . properties . document ) ;
385
+ schemaDetailsResource . properties . document . value = GetSchemaValueBasedOnContentType ( restReturnedSchemaTemplate . properties ) ;
386
386
schemaDetailsResource . name = $ "[concat(parameters('ApimServiceName'), '/{ apiName } /{ schemaName } ')]";
387
387
schemaDetailsResource . apiVersion = GlobalConstants . APIVersion ;
388
388
schemaDetailsResource . dependsOn = new string [ ] { $ "[resourceId('Microsoft.ApiManagement/service/apis', parameters('ApimServiceName'), '{ apiName } ')]" } ;
@@ -392,5 +392,33 @@ public async Task<List<TemplateResource>> GenerateSchemasARMTemplate(string apim
392
392
}
393
393
return templateResources ;
394
394
}
395
+
396
+ private string GetSchemaValueBasedOnContentType ( RESTReturnedSchemaTemplateProperties schemaTemplateProperties )
397
+ {
398
+ if ( ! ( schemaTemplateProperties . document is JToken ) )
399
+ {
400
+ return JsonConvert . SerializeObject ( schemaTemplateProperties . document ) ;
401
+ }
402
+
403
+ var schemaJson = schemaTemplateProperties . document as JToken ;
404
+
405
+ switch ( schemaTemplateProperties . contentType . ToLowerInvariant ( ) )
406
+ {
407
+ case "application/vnd.ms-azure-apim.swagger.definitions+json" :
408
+ if ( schemaJson [ "definitions" ] != null && schemaJson . Count ( ) == 1 )
409
+ {
410
+ schemaJson = schemaJson [ "definitions" ] ;
411
+ }
412
+ break ;
413
+ case "application/vnd.ms-azure-apim.xsd+xml" :
414
+ if ( schemaJson [ "value" ] != null && schemaJson . Count ( ) == 1 )
415
+ {
416
+ return schemaJson [ "value" ] . ToString ( ) ;
417
+ }
418
+ break ;
419
+ }
420
+
421
+ return JsonConvert . SerializeObject ( schemaJson ) ;
422
+ }
395
423
}
396
424
}
0 commit comments