SwaggerDocument.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. using System.Collections.Generic;
  2. using Newtonsoft.Json;
  3. #pragma warning disable 1591
  4. // ReSharper disable InconsistentNaming
  5. namespace VCommon.VOpenApi.Docgen
  6. {
  7. public class SwaggerDocument
  8. {
  9. public readonly string swagger = "2.0";
  10. public Info info;
  11. public string host;
  12. public string basePath;
  13. public IList<string> schemes;
  14. public IList<string> consumes;
  15. public IList<string> produces;
  16. public IDictionary<string, PathItem> paths;
  17. public IDictionary<string, Schema> definitions;
  18. public IDictionary<string, Parameter> parameters;
  19. public IDictionary<string, Response> responses;
  20. public IDictionary<string, SecurityScheme> securityDefinitions;
  21. public IList<IDictionary<string, IEnumerable<string>>> security;
  22. public IList<Tag> tags;
  23. public ExternalDocs externalDocs;
  24. }
  25. public class Info
  26. {
  27. public string version;
  28. public string title;
  29. public string description;
  30. public string termsOfService;
  31. public Contact contact;
  32. public License license;
  33. }
  34. public class Contact
  35. {
  36. public string name;
  37. public string url;
  38. public string email;
  39. }
  40. public class License
  41. {
  42. public string name;
  43. public string url;
  44. }
  45. public class PathItem
  46. {
  47. [JsonProperty("$ref")]
  48. public string @ref;
  49. public Operation get;
  50. public Operation put;
  51. public Operation post;
  52. public Operation delete;
  53. public Operation options;
  54. public Operation head;
  55. public Operation patch;
  56. public IList<Parameter> parameters;
  57. }
  58. public class Operation
  59. {
  60. public IList<string> tags;
  61. public string summary;
  62. public string description;
  63. public ExternalDocs externalDocs;
  64. public string operationId;
  65. public IList<string> consumes;
  66. public IList<string> produces;
  67. public IList<Parameter> parameters;
  68. public IDictionary<string, Response> responses;
  69. public IList<string> schemes;
  70. public bool? deprecated;
  71. public IList<IDictionary<string, IEnumerable<string>>> security;
  72. }
  73. public class Tag
  74. {
  75. public string name;
  76. public string description;
  77. public ExternalDocs externalDocs;
  78. }
  79. public class ExternalDocs
  80. {
  81. public string description;
  82. public string url;
  83. }
  84. public class Parameter : PartialSchema
  85. {
  86. [JsonProperty("$ref")]
  87. public string @ref;
  88. public string name;
  89. public string @in;
  90. public string description;
  91. public bool? required;
  92. public Schema schema;
  93. }
  94. public class Schema
  95. {
  96. [JsonProperty("$ref")]
  97. public string @ref;
  98. public string format;
  99. public string title;
  100. public string description;
  101. public object @default;
  102. public int? multipleOf;
  103. public int? maximum;
  104. public bool? exclusiveMaximum;
  105. public int? minimum;
  106. public bool? exclusiveMinimum;
  107. public int? maxLength;
  108. public int? minLength;
  109. public string pattern;
  110. public int? maxItems;
  111. public int? minItems;
  112. public bool? uniqueItems;
  113. public int? maxProperties;
  114. public int? minProperties;
  115. public IList<string> required;
  116. public IList<object> @enum;
  117. public string type;
  118. public Schema items;
  119. public IList<Schema> allOf;
  120. public IDictionary<string, Schema> properties;
  121. public Schema additionalProperties;
  122. public string discriminator;
  123. public bool? readOnly;
  124. public Xml xml;
  125. public ExternalDocs externalDocs;
  126. public object example;
  127. }
  128. public class PartialSchema
  129. {
  130. public string type;
  131. public string format;
  132. public PartialSchema items;
  133. public string collectionFormat;
  134. public object @default;
  135. public int? maximum;
  136. public bool? exclusiveMaximum;
  137. public int? minimum;
  138. public bool? exclusiveMinimum;
  139. public int? maxLength;
  140. public int? minLength;
  141. public string pattern;
  142. public int? maxItems;
  143. public int? minItems;
  144. public bool? uniqueItems;
  145. public IList<object> @enum;
  146. public int? multipleOf;
  147. }
  148. public class Response
  149. {
  150. public string description;
  151. public Schema schema;
  152. public IDictionary<string, Header> headers;
  153. public object examples;
  154. }
  155. public class Header : PartialSchema
  156. {
  157. public string description;
  158. }
  159. public class Xml
  160. {
  161. public string name;
  162. public string @namespace;
  163. public string prefix;
  164. public bool? attribute;
  165. public bool? wrapped;
  166. }
  167. public class SecurityScheme
  168. {
  169. public string type;
  170. public string description;
  171. public string name;
  172. public string @in;
  173. public string flow;
  174. public string authorizationUrl;
  175. public string tokenUrl;
  176. public IDictionary<string, string> scopes;
  177. }
  178. }