using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; namespace Swashbuckle.Swagger { public class SwaggerDocument { public readonly string swagger = "2.0"; public Info info; public string host; public string basePath; public IList schemes; public IList consumes; public IList produces; public IDictionary paths; public IDictionary definitions; public IDictionary parameters; public IDictionary responses; public IDictionary securityDefinitions; public IList>> security; public IList tags; public ExternalDocs externalDocs; public Dictionary vendorExtensions = new Dictionary(); /// /// 多版本 /// public IList muiltVersion; } public class Info { public string version; public string title; public string description; public string termsOfService; /// /// 文档路径 /// public string docPath; /// /// 是否默认路由 /// [JsonIgnore] internal bool isDefaultRoute; public Contact contact; public License license; public Dictionary vendorExtensions = new Dictionary(); } public class Contact { public string name; public string url; public string email; } public class License { public string name; public string url; } public class PathItem { [JsonProperty("$ref")] public string @ref; public Operation get; public Operation put; public Operation post; public Operation delete; public Operation options; public Operation head; public Operation patch; public IList parameters; public Dictionary vendorExtensions = new Dictionary(); } public class Operation { public IList tags; public string summary { get; set; } /// /// 备注 /// public string description; public ExternalDocs externalDocs; public string operationId; public IList consumes; public IList produces; public IList parameters; public IDictionary responses; public IList schemes; public bool? deprecated; public IList>> security; public Dictionary vendorExtensions = new Dictionary(); /// /// 开发状态 /// public string devStatus { get; set; } /// /// 开发状态名称 /// public string devStatusName { get; set; } /// /// 开发者 /// public string developer { get; set; } /// /// 修改日期 /// public string modifyDate { get; set; } /// /// 是否显示开发状态 /// public bool showDevStatus { get; set; } } public class Tag { public string name; public string description; public ExternalDocs externalDocs; public Dictionary vendorExtensions = new Dictionary(); } public class ExternalDocs { public string description; public string url; } public class Parameter : PartialSchema { [JsonProperty("$ref")] public string @ref; public string name; public string @in; public string description; public bool? required; public Schema schema; } public class Schema { [JsonProperty("$ref")] public string @ref; public string format; public string title; public string description; public object @default; public int? multipleOf; public int? maximum; public bool? exclusiveMaximum; public int? minimum; public bool? exclusiveMinimum; public int? maxLength; public int? minLength; public string pattern; public int? maxItems; public int? minItems; public bool? uniqueItems; public int? maxProperties; public int? minProperties; public IList required; public IList @enum; public string type; public Schema items; public IList allOf; public IDictionary properties; public Schema additionalProperties; public string discriminator; public bool? readOnly; public Xml xml; public ExternalDocs externalDocs; public object example; public Dictionary vendorExtensions = new Dictionary(); } public class PartialSchema { public string type; public string format; public PartialSchema items; public string collectionFormat; public object @default; public int? maximum; public bool? exclusiveMaximum; public int? minimum; public bool? exclusiveMinimum; public int? maxLength; public int? minLength; public string pattern; public int? maxItems; public int? minItems; public bool? uniqueItems; public IList @enum; public int? multipleOf; public Dictionary vendorExtensions = new Dictionary(); } public class Response { public string description; public Schema schema; public IDictionary headers; public object examples; public Dictionary vendorExtensions = new Dictionary(); } public class Header : PartialSchema { public string description; } public class Xml { public string name; public string @namespace; public string prefix; public bool? attribute; public bool? wrapped; } public class SecurityScheme { public string type; public string description; public string name; public string @in; public string flow; public string authorizationUrl; public string tokenUrl; public IDictionary scopes; public Dictionary vendorExtensions = new Dictionary(); } }