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