@typespec/http-specs 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +36 -0
  4. package/assets/image.jpg +0 -0
  5. package/assets/image.png +0 -0
  6. package/dist/specs/authentication/api-key/mockapi.d.ts +3 -0
  7. package/dist/specs/authentication/api-key/mockapi.d.ts.map +1 -0
  8. package/dist/specs/authentication/api-key/mockapi.js +33 -0
  9. package/dist/specs/authentication/api-key/mockapi.js.map +1 -0
  10. package/dist/specs/authentication/http/custom/mockapi.d.ts +3 -0
  11. package/dist/specs/authentication/http/custom/mockapi.d.ts.map +1 -0
  12. package/dist/specs/authentication/http/custom/mockapi.js +33 -0
  13. package/dist/specs/authentication/http/custom/mockapi.js.map +1 -0
  14. package/dist/specs/authentication/oauth2/mockapi.d.ts +3 -0
  15. package/dist/specs/authentication/oauth2/mockapi.d.ts.map +1 -0
  16. package/dist/specs/authentication/oauth2/mockapi.js +30 -0
  17. package/dist/specs/authentication/oauth2/mockapi.js.map +1 -0
  18. package/dist/specs/authentication/union/mockapi.d.ts +3 -0
  19. package/dist/specs/authentication/union/mockapi.d.ts.map +1 -0
  20. package/dist/specs/authentication/union/mockapi.js +29 -0
  21. package/dist/specs/authentication/union/mockapi.js.map +1 -0
  22. package/dist/specs/encode/bytes/mockapi.d.ts +3 -0
  23. package/dist/specs/encode/bytes/mockapi.d.ts.map +1 -0
  24. package/dist/specs/encode/bytes/mockapi.js +167 -0
  25. package/dist/specs/encode/bytes/mockapi.js.map +1 -0
  26. package/dist/specs/encode/datetime/mockapi.d.ts +3 -0
  27. package/dist/specs/encode/datetime/mockapi.d.ts.map +1 -0
  28. package/dist/specs/encode/datetime/mockapi.js +160 -0
  29. package/dist/specs/encode/datetime/mockapi.js.map +1 -0
  30. package/dist/specs/encode/duration/mockapi.d.ts +3 -0
  31. package/dist/specs/encode/duration/mockapi.d.ts.map +1 -0
  32. package/dist/specs/encode/duration/mockapi.js +103 -0
  33. package/dist/specs/encode/duration/mockapi.js.map +1 -0
  34. package/dist/specs/encode/numeric/mockapi.d.ts +3 -0
  35. package/dist/specs/encode/numeric/mockapi.d.ts.map +1 -0
  36. package/dist/specs/encode/numeric/mockapi.js +22 -0
  37. package/dist/specs/encode/numeric/mockapi.js.map +1 -0
  38. package/dist/specs/helper.d.ts +3 -0
  39. package/dist/specs/helper.d.ts.map +1 -0
  40. package/dist/specs/helper.js +7 -0
  41. package/dist/specs/helper.js.map +1 -0
  42. package/dist/specs/parameters/basic/mockapi.d.ts +3 -0
  43. package/dist/specs/parameters/basic/mockapi.d.ts.map +1 -0
  44. package/dist/specs/parameters/basic/mockapi.js +20 -0
  45. package/dist/specs/parameters/basic/mockapi.js.map +1 -0
  46. package/dist/specs/parameters/body-optionality/mockapi.d.ts +3 -0
  47. package/dist/specs/parameters/body-optionality/mockapi.d.ts.map +1 -0
  48. package/dist/specs/parameters/body-optionality/mockapi.js +50 -0
  49. package/dist/specs/parameters/body-optionality/mockapi.js.map +1 -0
  50. package/dist/specs/parameters/collection-format/mockapi.d.ts +3 -0
  51. package/dist/specs/parameters/collection-format/mockapi.d.ts.map +1 -0
  52. package/dist/specs/parameters/collection-format/mockapi.js +76 -0
  53. package/dist/specs/parameters/collection-format/mockapi.js.map +1 -0
  54. package/dist/specs/parameters/spread/mockapi.d.ts +3 -0
  55. package/dist/specs/parameters/spread/mockapi.d.ts.map +1 -0
  56. package/dist/specs/parameters/spread/mockapi.js +155 -0
  57. package/dist/specs/parameters/spread/mockapi.js.map +1 -0
  58. package/dist/specs/payload/content-negotiation/mockapi.d.ts +3 -0
  59. package/dist/specs/payload/content-negotiation/mockapi.d.ts.map +1 -0
  60. package/dist/specs/payload/content-negotiation/mockapi.js +169 -0
  61. package/dist/specs/payload/content-negotiation/mockapi.js.map +1 -0
  62. package/dist/specs/payload/json-merge-patch/mockapi.d.ts +38 -0
  63. package/dist/specs/payload/json-merge-patch/mockapi.d.ts.map +1 -0
  64. package/dist/specs/payload/json-merge-patch/mockapi.js +90 -0
  65. package/dist/specs/payload/json-merge-patch/mockapi.js.map +1 -0
  66. package/dist/specs/payload/media-type/mockapi.d.ts +3 -0
  67. package/dist/specs/payload/media-type/mockapi.d.ts.map +1 -0
  68. package/dist/specs/payload/media-type/mockapi.js +59 -0
  69. package/dist/specs/payload/media-type/mockapi.js.map +1 -0
  70. package/dist/specs/payload/multipart/mockapi.d.ts +3 -0
  71. package/dist/specs/payload/multipart/mockapi.d.ts.map +1 -0
  72. package/dist/specs/payload/multipart/mockapi.js +323 -0
  73. package/dist/specs/payload/multipart/mockapi.js.map +1 -0
  74. package/dist/specs/payload/xml/mockapi.d.ts +15 -0
  75. package/dist/specs/payload/xml/mockapi.d.ts.map +1 -0
  76. package/dist/specs/payload/xml/mockapi.js +183 -0
  77. package/dist/specs/payload/xml/mockapi.js.map +1 -0
  78. package/dist/specs/routes/mockapi.d.ts +3 -0
  79. package/dist/specs/routes/mockapi.d.ts.map +1 -0
  80. package/dist/specs/routes/mockapi.js +94 -0
  81. package/dist/specs/routes/mockapi.js.map +1 -0
  82. package/dist/specs/serialization/encoded-name/json/mockapi.d.ts +3 -0
  83. package/dist/specs/serialization/encoded-name/json/mockapi.d.ts.map +1 -0
  84. package/dist/specs/serialization/encoded-name/json/mockapi.js +20 -0
  85. package/dist/specs/serialization/encoded-name/json/mockapi.js.map +1 -0
  86. package/dist/specs/server/endpoint/not-defined/mockapi.d.ts +3 -0
  87. package/dist/specs/server/endpoint/not-defined/mockapi.d.ts.map +1 -0
  88. package/dist/specs/server/endpoint/not-defined/mockapi.js +12 -0
  89. package/dist/specs/server/endpoint/not-defined/mockapi.js.map +1 -0
  90. package/dist/specs/server/path/multiple/mockapi.d.ts +3 -0
  91. package/dist/specs/server/path/multiple/mockapi.d.ts.map +1 -0
  92. package/dist/specs/server/path/multiple/mockapi.js +21 -0
  93. package/dist/specs/server/path/multiple/mockapi.js.map +1 -0
  94. package/dist/specs/server/path/single/mockapi.d.ts +3 -0
  95. package/dist/specs/server/path/single/mockapi.d.ts.map +1 -0
  96. package/dist/specs/server/path/single/mockapi.js +12 -0
  97. package/dist/specs/server/path/single/mockapi.js.map +1 -0
  98. package/dist/specs/server/versions/not-versioned/mockapi.d.ts +3 -0
  99. package/dist/specs/server/versions/not-versioned/mockapi.d.ts.map +1 -0
  100. package/dist/specs/server/versions/not-versioned/mockapi.js +42 -0
  101. package/dist/specs/server/versions/not-versioned/mockapi.js.map +1 -0
  102. package/dist/specs/server/versions/versioned/mockapi.d.ts +3 -0
  103. package/dist/specs/server/versions/versioned/mockapi.d.ts.map +1 -0
  104. package/dist/specs/server/versions/versioned/mockapi.js +43 -0
  105. package/dist/specs/server/versions/versioned/mockapi.js.map +1 -0
  106. package/dist/specs/special-headers/conditional-request/mockapi.d.ts +3 -0
  107. package/dist/specs/special-headers/conditional-request/mockapi.d.ts.map +1 -0
  108. package/dist/specs/special-headers/conditional-request/mockapi.js +55 -0
  109. package/dist/specs/special-headers/conditional-request/mockapi.js.map +1 -0
  110. package/dist/specs/special-headers/repeatability/mockapi.d.ts +3 -0
  111. package/dist/specs/special-headers/repeatability/mockapi.d.ts.map +1 -0
  112. package/dist/specs/special-headers/repeatability/mockapi.js +36 -0
  113. package/dist/specs/special-headers/repeatability/mockapi.js.map +1 -0
  114. package/dist/specs/special-words/dec.d.ts +22 -0
  115. package/dist/specs/special-words/dec.d.ts.map +1 -0
  116. package/dist/specs/special-words/dec.js +37 -0
  117. package/dist/specs/special-words/dec.js.map +1 -0
  118. package/dist/specs/special-words/mockapi.d.ts +3 -0
  119. package/dist/specs/special-words/mockapi.d.ts.map +1 -0
  120. package/dist/specs/special-words/mockapi.js +223 -0
  121. package/dist/specs/special-words/mockapi.js.map +1 -0
  122. package/dist/specs/type/array/mockapi.d.ts +3 -0
  123. package/dist/specs/type/array/mockapi.d.ts.map +1 -0
  124. package/dist/specs/type/array/mockapi.js +92 -0
  125. package/dist/specs/type/array/mockapi.js.map +1 -0
  126. package/dist/specs/type/dictionary/mockapi.d.ts +3 -0
  127. package/dist/specs/type/dictionary/mockapi.d.ts.map +1 -0
  128. package/dist/specs/type/dictionary/mockapi.js +91 -0
  129. package/dist/specs/type/dictionary/mockapi.js.map +1 -0
  130. package/dist/specs/type/enum/extensible/mockapi.d.ts +3 -0
  131. package/dist/specs/type/enum/extensible/mockapi.d.ts.map +1 -0
  132. package/dist/specs/type/enum/extensible/mockapi.js +39 -0
  133. package/dist/specs/type/enum/extensible/mockapi.js.map +1 -0
  134. package/dist/specs/type/enum/fixed/mockapi.d.ts +3 -0
  135. package/dist/specs/type/enum/fixed/mockapi.d.ts.map +1 -0
  136. package/dist/specs/type/enum/fixed/mockapi.js +42 -0
  137. package/dist/specs/type/enum/fixed/mockapi.js.map +1 -0
  138. package/dist/specs/type/model/empty/mockapi.d.ts +3 -0
  139. package/dist/specs/type/model/empty/mockapi.d.ts.map +1 -0
  140. package/dist/specs/type/model/empty/mockapi.js +37 -0
  141. package/dist/specs/type/model/empty/mockapi.js.map +1 -0
  142. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts +3 -0
  143. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts.map +1 -0
  144. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js +69 -0
  145. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js.map +1 -0
  146. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts +3 -0
  147. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts.map +1 -0
  148. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js +127 -0
  149. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js.map +1 -0
  150. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts +3 -0
  151. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts.map +1 -0
  152. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js +37 -0
  153. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js.map +1 -0
  154. package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts +3 -0
  155. package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts.map +1 -0
  156. package/dist/specs/type/model/inheritance/recursive/mockapi.js +40 -0
  157. package/dist/specs/type/model/inheritance/recursive/mockapi.js.map +1 -0
  158. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts +3 -0
  159. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts.map +1 -0
  160. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js +99 -0
  161. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js.map +1 -0
  162. package/dist/specs/type/model/templated/mockapi.d.ts +3 -0
  163. package/dist/specs/type/model/templated/mockapi.d.ts.map +1 -0
  164. package/dist/specs/type/model/templated/mockapi.js +63 -0
  165. package/dist/specs/type/model/templated/mockapi.js.map +1 -0
  166. package/dist/specs/type/model/usage/mockapi.d.ts +3 -0
  167. package/dist/specs/type/model/usage/mockapi.d.ts.map +1 -0
  168. package/dist/specs/type/model/usage/mockapi.js +41 -0
  169. package/dist/specs/type/model/usage/mockapi.js.map +1 -0
  170. package/dist/specs/type/model/visibility/mockapi.d.ts +3 -0
  171. package/dist/specs/type/model/visibility/mockapi.d.ts.map +1 -0
  172. package/dist/specs/type/model/visibility/mockapi.js +107 -0
  173. package/dist/specs/type/model/visibility/mockapi.js.map +1 -0
  174. package/dist/specs/type/property/additional-properties/mockapi.d.ts +3 -0
  175. package/dist/specs/type/property/additional-properties/mockapi.d.ts.map +1 -0
  176. package/dist/specs/type/property/additional-properties/mockapi.js +333 -0
  177. package/dist/specs/type/property/additional-properties/mockapi.js.map +1 -0
  178. package/dist/specs/type/property/nullable/mockapi.d.ts +3 -0
  179. package/dist/specs/type/property/nullable/mockapi.d.ts.map +1 -0
  180. package/dist/specs/type/property/nullable/mockapi.js +132 -0
  181. package/dist/specs/type/property/nullable/mockapi.js.map +1 -0
  182. package/dist/specs/type/property/optionality/mockapi.d.ts +3 -0
  183. package/dist/specs/type/property/optionality/mockapi.d.ts.map +1 -0
  184. package/dist/specs/type/property/optionality/mockapi.js +185 -0
  185. package/dist/specs/type/property/optionality/mockapi.js.map +1 -0
  186. package/dist/specs/type/property/value-types/mockapi.d.ts +3 -0
  187. package/dist/specs/type/property/value-types/mockapi.d.ts.map +1 -0
  188. package/dist/specs/type/property/value-types/mockapi.js +214 -0
  189. package/dist/specs/type/property/value-types/mockapi.js.map +1 -0
  190. package/dist/specs/type/scalar/mockapi.d.ts +3 -0
  191. package/dist/specs/type/scalar/mockapi.d.ts.map +1 -0
  192. package/dist/specs/type/scalar/mockapi.js +193 -0
  193. package/dist/specs/type/scalar/mockapi.js.map +1 -0
  194. package/dist/specs/type/union/mockapi.d.ts +3 -0
  195. package/dist/specs/type/union/mockapi.d.ts.map +1 -0
  196. package/dist/specs/type/union/mockapi.js +106 -0
  197. package/dist/specs/type/union/mockapi.js.map +1 -0
  198. package/dist/specs/versioning/added/mockapi.d.ts +3 -0
  199. package/dist/specs/versioning/added/mockapi.d.ts.map +1 -0
  200. package/dist/specs/versioning/added/mockapi.js +54 -0
  201. package/dist/specs/versioning/added/mockapi.js.map +1 -0
  202. package/dist/specs/versioning/madeOptional/mockapi.d.ts +3 -0
  203. package/dist/specs/versioning/madeOptional/mockapi.d.ts.map +1 -0
  204. package/dist/specs/versioning/madeOptional/mockapi.js +17 -0
  205. package/dist/specs/versioning/madeOptional/mockapi.js.map +1 -0
  206. package/dist/specs/versioning/removed/mockapi.d.ts +3 -0
  207. package/dist/specs/versioning/removed/mockapi.d.ts.map +1 -0
  208. package/dist/specs/versioning/removed/mockapi.js +19 -0
  209. package/dist/specs/versioning/removed/mockapi.js.map +1 -0
  210. package/dist/specs/versioning/renamedFrom/mockapi.d.ts +3 -0
  211. package/dist/specs/versioning/renamedFrom/mockapi.d.ts.map +1 -0
  212. package/dist/specs/versioning/renamedFrom/mockapi.js +38 -0
  213. package/dist/specs/versioning/renamedFrom/mockapi.js.map +1 -0
  214. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts +3 -0
  215. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts.map +1 -0
  216. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js +18 -0
  217. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js.map +1 -0
  218. package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts +3 -0
  219. package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts.map +1 -0
  220. package/dist/specs/versioning/typeChangedFrom/mockapi.js +21 -0
  221. package/dist/specs/versioning/typeChangedFrom/mockapi.js.map +1 -0
  222. package/package.json +55 -0
  223. package/spec-summary.md +7463 -0
  224. package/specs/README.md +3 -0
  225. package/specs/authentication/api-key/main.tsp +40 -0
  226. package/specs/authentication/api-key/mockapi.ts +35 -0
  227. package/specs/authentication/http/custom/main.tsp +40 -0
  228. package/specs/authentication/http/custom/mockapi.ts +35 -0
  229. package/specs/authentication/oauth2/main.tsp +45 -0
  230. package/specs/authentication/oauth2/mockapi.ts +32 -0
  231. package/specs/authentication/union/main.tsp +30 -0
  232. package/specs/authentication/union/mockapi.ts +31 -0
  233. package/specs/encode/bytes/main.tsp +363 -0
  234. package/specs/encode/bytes/mockapi.ts +297 -0
  235. package/specs/encode/datetime/main.tsp +339 -0
  236. package/specs/encode/datetime/mockapi.ts +274 -0
  237. package/specs/encode/duration/main.tsp +318 -0
  238. package/specs/encode/duration/mockapi.ts +191 -0
  239. package/specs/encode/numeric/main.tsp +69 -0
  240. package/specs/encode/numeric/mockapi.ts +32 -0
  241. package/specs/helper.ts +8 -0
  242. package/specs/parameters/basic/main.tsp +58 -0
  243. package/specs/parameters/basic/mockapi.ts +25 -0
  244. package/specs/parameters/body-optionality/main.tsp +61 -0
  245. package/specs/parameters/body-optionality/mockapi.ts +59 -0
  246. package/specs/parameters/collection-format/main.tsp +92 -0
  247. package/specs/parameters/collection-format/mockapi.ts +83 -0
  248. package/specs/parameters/spread/main.tsp +337 -0
  249. package/specs/parameters/spread/mockapi.ts +165 -0
  250. package/specs/payload/content-negotiation/main.tsp +61 -0
  251. package/specs/payload/content-negotiation/mockapi.ts +188 -0
  252. package/specs/payload/json-merge-patch/main.tsp +184 -0
  253. package/specs/payload/json-merge-patch/mockapi.ts +95 -0
  254. package/specs/payload/media-type/main.tsp +52 -0
  255. package/specs/payload/media-type/mockapi.ts +63 -0
  256. package/specs/payload/multipart/main.tsp +500 -0
  257. package/specs/payload/multipart/mockapi.ts +364 -0
  258. package/specs/payload/xml/main.tsp +302 -0
  259. package/specs/payload/xml/mockapi.ts +238 -0
  260. package/specs/routes/main.tsp +477 -0
  261. package/specs/routes/mockapi.ts +175 -0
  262. package/specs/scratch/.gitignore +3 -0
  263. package/specs/serialization/encoded-name/json/main.tsp +45 -0
  264. package/specs/serialization/encoded-name/json/mockapi.ts +22 -0
  265. package/specs/server/endpoint/not-defined/main.tsp +20 -0
  266. package/specs/server/endpoint/not-defined/mockapi.ts +13 -0
  267. package/specs/server/path/multiple/main.tsp +47 -0
  268. package/specs/server/path/multiple/mockapi.ts +23 -0
  269. package/specs/server/path/single/main.tsp +24 -0
  270. package/specs/server/path/single/mockapi.ts +13 -0
  271. package/specs/server/versions/not-versioned/main.tsp +40 -0
  272. package/specs/server/versions/not-versioned/mockapi.ts +51 -0
  273. package/specs/server/versions/versioned/main.tsp +64 -0
  274. package/specs/server/versions/versioned/mockapi.ts +64 -0
  275. package/specs/special-headers/conditional-request/main.tsp +89 -0
  276. package/specs/special-headers/conditional-request/mockapi.ts +59 -0
  277. package/specs/special-headers/repeatability/main.tsp +39 -0
  278. package/specs/special-headers/repeatability/mockapi.ts +47 -0
  279. package/specs/special-words/dec.js +52 -0
  280. package/specs/special-words/main.tsp +234 -0
  281. package/specs/special-words/mockapi.ts +384 -0
  282. package/specs/type/array/main.tsp +108 -0
  283. package/specs/type/array/mockapi.ts +107 -0
  284. package/specs/type/dictionary/main.tsp +101 -0
  285. package/specs/type/dictionary/mockapi.ts +103 -0
  286. package/specs/type/enum/extensible/main.tsp +65 -0
  287. package/specs/type/enum/extensible/mockapi.ts +48 -0
  288. package/specs/type/enum/fixed/main.tsp +60 -0
  289. package/specs/type/enum/fixed/mockapi.ts +44 -0
  290. package/specs/type/model/empty/main.tsp +40 -0
  291. package/specs/type/model/empty/mockapi.ts +40 -0
  292. package/specs/type/model/inheritance/enum-discriminator/main.tsp +169 -0
  293. package/specs/type/model/inheritance/enum-discriminator/mockapi.ts +89 -0
  294. package/specs/type/model/inheritance/nested-discriminator/main.tsp +224 -0
  295. package/specs/type/model/inheritance/nested-discriminator/mockapi.ts +130 -0
  296. package/specs/type/model/inheritance/not-discriminated/main.tsp +54 -0
  297. package/specs/type/model/inheritance/not-discriminated/mockapi.ts +39 -0
  298. package/specs/type/model/inheritance/recursive/main.tsp +71 -0
  299. package/specs/type/model/inheritance/recursive/mockapi.ts +41 -0
  300. package/specs/type/model/inheritance/single-discriminator/main.tsp +172 -0
  301. package/specs/type/model/inheritance/single-discriminator/mockapi.ts +103 -0
  302. package/specs/type/model/templated/main.tsp +130 -0
  303. package/specs/type/model/templated/mockapi.ts +66 -0
  304. package/specs/type/model/usage/main.tsp +49 -0
  305. package/specs/type/model/usage/mockapi.ts +45 -0
  306. package/specs/type/model/visibility/main.tsp +153 -0
  307. package/specs/type/model/visibility/mockapi.ts +108 -0
  308. package/specs/type/property/additional-properties/main.tsp +549 -0
  309. package/specs/type/property/additional-properties/mockapi.ts +464 -0
  310. package/specs/type/property/nullable/main.tsp +139 -0
  311. package/specs/type/property/nullable/mockapi.ts +187 -0
  312. package/specs/type/property/optionality/main.tsp +226 -0
  313. package/specs/type/property/optionality/mockapi.ts +296 -0
  314. package/specs/type/property/value-types/main.tsp +244 -0
  315. package/specs/type/property/value-types/mockapi.ts +300 -0
  316. package/specs/type/scalar/main.tsp +136 -0
  317. package/specs/type/scalar/mockapi.ts +199 -0
  318. package/specs/type/union/main.tsp +249 -0
  319. package/specs/type/union/mockapi.ts +130 -0
  320. package/specs/versioning/added/main.tsp +136 -0
  321. package/specs/versioning/added/mockapi.ts +57 -0
  322. package/specs/versioning/madeOptional/main.tsp +65 -0
  323. package/specs/versioning/madeOptional/mockapi.ts +18 -0
  324. package/specs/versioning/removed/main.tsp +126 -0
  325. package/specs/versioning/removed/mockapi.ts +20 -0
  326. package/specs/versioning/renamedFrom/main.tsp +112 -0
  327. package/specs/versioning/renamedFrom/mockapi.ts +40 -0
  328. package/specs/versioning/returnTypeChangedFrom/main.tsp +57 -0
  329. package/specs/versioning/returnTypeChangedFrom/mockapi.ts +19 -0
  330. package/specs/versioning/typeChangedFrom/main.tsp +71 -0
  331. package/specs/versioning/typeChangedFrom/mockapi.ts +22 -0
  332. package/temp/.tsbuildinfo +1 -0
  333. package/tsconfig.build.json +8 -0
  334. package/tsconfig.json +11 -0
  335. package/tspconfig.yaml +2 -0
@@ -0,0 +1,40 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const body = {};
6
+
7
+ Scenarios.Type_Model_Empty_putEmpty = passOnSuccess({
8
+ uri: "/type/model/empty/alone",
9
+ method: "put",
10
+ request: {
11
+ body: body,
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+ Scenarios.Type_Model_Empty_getEmpty = passOnSuccess({
19
+ uri: "/type/model/empty/alone",
20
+ method: "get",
21
+ request: {},
22
+ response: {
23
+ status: 200,
24
+ body: json(body),
25
+ },
26
+ kind: "MockApiDefinition",
27
+ });
28
+
29
+ Scenarios.Type_Model_Empty_postRoundTripEmpty = passOnSuccess({
30
+ uri: "/type/model/empty/round-trip",
31
+ method: "post",
32
+ request: {
33
+ body: body,
34
+ },
35
+ response: {
36
+ status: 200,
37
+ body: json(body),
38
+ },
39
+ kind: "MockApiDefinition",
40
+ });
@@ -0,0 +1,169 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Illustrates inheritance with enum discriminator.")
8
+ @scenarioService("/type/model/inheritance/enum-discriminator")
9
+ namespace Type.Model.Inheritance.EnumDiscriminator;
10
+
11
+ @doc("extensible enum type for discriminator")
12
+ union DogKind {
13
+ string,
14
+
15
+ @doc("Species golden")
16
+ Golden: "golden",
17
+ }
18
+
19
+ @doc("Test extensible enum type for discriminator")
20
+ @discriminator("kind")
21
+ model Dog {
22
+ @doc("discriminator property")
23
+ kind: DogKind;
24
+
25
+ @doc("Weight of the dog")
26
+ weight: int32;
27
+ }
28
+
29
+ @doc("Golden dog model")
30
+ model Golden extends Dog {
31
+ @doc("discriminator property")
32
+ kind: DogKind.Golden;
33
+ }
34
+
35
+ #suppress "@azure-tools/typespec-azure-core/use-extensible-enum" "For testing fixed enum as discriminator property"
36
+ @doc("fixed enum type for discriminator")
37
+ enum SnakeKind {
38
+ @doc("Species cobra")
39
+ Cobra: "cobra",
40
+ }
41
+
42
+ #suppress "@azure-tools/typespec-azure-core/no-fixed-enum-discriminator" "For testing fixed enum as discriminator property"
43
+ @doc("Test fixed enum type for discriminator")
44
+ @discriminator("kind")
45
+ model Snake {
46
+ @doc("discriminator property")
47
+ kind: SnakeKind;
48
+
49
+ @doc("Length of the snake")
50
+ length: int32;
51
+ }
52
+
53
+ @doc("Cobra model")
54
+ model Cobra extends Snake {
55
+ @doc("discriminator property")
56
+ kind: SnakeKind.Cobra;
57
+ }
58
+
59
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
60
+ @doc("Receive model with extensible enum discriminator type.")
61
+ @scenario
62
+ @scenarioDoc("""
63
+ Receive model with extensible enum discriminator type.
64
+ Expected response body:
65
+ ```json
66
+ {"kind": "golden", "weight": 10}
67
+ ```
68
+ """)
69
+ @route("/extensible-enum")
70
+ @get
71
+ op getExtensibleModel(): Dog;
72
+
73
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
74
+ @doc("Send model with extensible enum discriminator type.")
75
+ @scenario
76
+ @scenarioDoc("""
77
+ Send model with extensible enum discriminator type.
78
+ Expected request body:
79
+ ```json
80
+ {"kind": "golden", "weight": 10}
81
+ ```
82
+ """)
83
+ @route("/extensible-enum")
84
+ @put
85
+ op putExtensibleModel(@body @doc("Dog to create") input: Dog): NoContentResponse;
86
+
87
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
88
+ @doc("Get a model omitting the discriminator.")
89
+ @scenario
90
+ @route("/extensible-enum/missingdiscriminator")
91
+ @scenarioDoc("""
92
+ Get a model omitting the discriminator.
93
+ Expected response body:
94
+ ```json
95
+ {"weight": 10}
96
+ ```
97
+ """)
98
+ @get
99
+ op getExtensibleModelMissingDiscriminator(): Dog;
100
+
101
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
102
+ @doc("Get a model containing discriminator value never defined.")
103
+ @scenario
104
+ @route("/extensible-enum/wrongdiscriminator")
105
+ @scenarioDoc("""
106
+ Get a model containing discriminator value never defined.
107
+ Expected response body:
108
+ ```json
109
+ {"weight": 8, "kind": "wrongKind" }
110
+ ```
111
+ """)
112
+ @get
113
+ op getExtensibleModelWrongDiscriminator(): Dog;
114
+
115
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
116
+ @doc("Receive model with fixed enum discriminator type.")
117
+ @scenario
118
+ @scenarioDoc("""
119
+ Receive model with fixed enum discriminator type.
120
+ Expected response body:
121
+ ```json
122
+ {"kind": "cobra", "length": 10}
123
+ ```
124
+ """)
125
+ @route("/fixed-enum")
126
+ @get
127
+ op getFixedModel(): Snake;
128
+
129
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
130
+ @doc("Send model with fixed enum discriminator type.")
131
+ @scenario
132
+ @scenarioDoc("""
133
+ Send model with fixed enum discriminator type.
134
+ Expected request body:
135
+ ```json
136
+ {"kind": "cobra", "length": 10}
137
+ ```
138
+ """)
139
+ @route("/fixed-enum")
140
+ @put
141
+ op putFixedModel(@body @doc("Snake to create") input: Snake): NoContentResponse;
142
+
143
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
144
+ @doc("Get a model omitting the discriminator.")
145
+ @scenario
146
+ @route("/fixed-enum/missingdiscriminator")
147
+ @scenarioDoc("""
148
+ Get a model omitting the discriminator.
149
+ Expected response body:
150
+ ```json
151
+ {"length": 10}
152
+ ```
153
+ """)
154
+ @get
155
+ op getFixedModelMissingDiscriminator(): Snake;
156
+
157
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
158
+ @doc("Get a model containing discriminator value never defined.")
159
+ @scenario
160
+ @route("/fixed-enum/wrongdiscriminator")
161
+ @scenarioDoc("""
162
+ Get a model containing discriminator value never defined.
163
+ Expected response body:
164
+ ```json
165
+ {"length": 8, "kind": "wrongKind" }
166
+ ```
167
+ """)
168
+ @get
169
+ op getFixedModelWrongDiscriminator(): Snake;
@@ -0,0 +1,89 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const validExtensibleEnumBody = {
6
+ weight: 10,
7
+ kind: "golden",
8
+ };
9
+ const validFixedEnumBody = {
10
+ length: 10,
11
+ kind: "cobra",
12
+ };
13
+ function createGetServerTests(uri: string, data: any) {
14
+ return passOnSuccess({
15
+ uri: uri,
16
+ method: "get",
17
+ request: {},
18
+ response: {
19
+ status: 200,
20
+ body: json(data),
21
+ },
22
+ kind: "MockApiDefinition",
23
+ });
24
+ }
25
+
26
+ function createGetPutServerTests(uri: string, data: any) {
27
+ return {
28
+ get: passOnSuccess({
29
+ uri: uri,
30
+ method: "get",
31
+ request: {},
32
+ response: {
33
+ status: 200,
34
+ body: json(data),
35
+ },
36
+ kind: "MockApiDefinition",
37
+ }),
38
+ put: passOnSuccess({
39
+ uri: uri,
40
+ method: "put",
41
+ request: {
42
+ body: data,
43
+ },
44
+ response: {
45
+ status: 204,
46
+ },
47
+ kind: "MockApiDefinition",
48
+ }),
49
+ };
50
+ }
51
+
52
+ const Type_Model_Inheritance_Enum_Discriminator_Extensible_Enum = createGetPutServerTests(
53
+ "/type/model/inheritance/enum-discriminator/extensible-enum",
54
+ validExtensibleEnumBody,
55
+ );
56
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_getExtensibleModel =
57
+ Type_Model_Inheritance_Enum_Discriminator_Extensible_Enum.get;
58
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_putExtensibleModel =
59
+ Type_Model_Inheritance_Enum_Discriminator_Extensible_Enum.put;
60
+
61
+ const Type_Model_Inheritance_Enum_Discriminator_Fixed_Enum = createGetPutServerTests(
62
+ "/type/model/inheritance/enum-discriminator/fixed-enum",
63
+ validFixedEnumBody,
64
+ );
65
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_getFixedModel =
66
+ Type_Model_Inheritance_Enum_Discriminator_Fixed_Enum.get;
67
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_putFixedModel =
68
+ Type_Model_Inheritance_Enum_Discriminator_Fixed_Enum.put;
69
+
70
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_getExtensibleModelMissingDiscriminator =
71
+ createGetServerTests(
72
+ "/type/model/inheritance/enum-discriminator/extensible-enum/missingdiscriminator",
73
+ { weight: 10 },
74
+ );
75
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_getExtensibleModelWrongDiscriminator =
76
+ createGetServerTests(
77
+ "/type/model/inheritance/enum-discriminator/extensible-enum/wrongdiscriminator",
78
+ { weight: 8, kind: "wrongKind" },
79
+ );
80
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_getFixedModelMissingDiscriminator =
81
+ createGetServerTests(
82
+ "/type/model/inheritance/enum-discriminator/fixed-enum/missingdiscriminator",
83
+ { length: 10 },
84
+ );
85
+ Scenarios.Type_Model_Inheritance_EnumDiscriminator_getFixedModelWrongDiscriminator =
86
+ createGetServerTests("/type/model/inheritance/enum-discriminator/fixed-enum/wrongdiscriminator", {
87
+ length: 8,
88
+ kind: "wrongKind",
89
+ });
@@ -0,0 +1,224 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Illustrates multiple level inheritance with multiple discriminators.")
8
+ @scenarioService("/type/model/inheritance/nested-discriminator")
9
+ namespace Type.Model.Inheritance.NestedDiscriminator;
10
+
11
+ @doc("This is base model for polymorphic multiple levels inheritance with a discriminator.")
12
+ @discriminator("kind")
13
+ model Fish {
14
+ age: int32;
15
+ }
16
+
17
+ @doc("The second level model in polymorphic multiple levels inheritance and it defines a new discriminator.")
18
+ @discriminator("sharktype")
19
+ model Shark extends Fish {
20
+ kind: "shark";
21
+ sharktype: string;
22
+ }
23
+
24
+ @doc("The second level model in polymorphic multiple levels inheritance which contains references to other polymorphic instances.")
25
+ model Salmon extends Fish {
26
+ kind: "salmon";
27
+ friends?: Fish[];
28
+ hate?: Record<Fish>;
29
+ partner?: Fish;
30
+ }
31
+
32
+ @doc("The third level model SawShark in polymorphic multiple levels inheritance.")
33
+ model SawShark extends Shark {
34
+ sharktype: "saw";
35
+ }
36
+
37
+ @doc("The third level model GoblinShark in polymorphic multiple levels inheritance.")
38
+ model GoblinShark extends Shark {
39
+ sharktype: "goblin";
40
+ }
41
+
42
+ @scenario
43
+ @route("/model")
44
+ @scenarioDoc("""
45
+ Generate and receive polymorphic model in multiple levels inheritance with 2 discriminators.
46
+ Expected response body:
47
+ ```json
48
+ {"age": 1, "kind": "shark", "sharktype": "goblin"}
49
+ ```
50
+ """)
51
+ @get
52
+ op getModel(): Fish;
53
+
54
+ @scenario
55
+ @route("/model")
56
+ @scenarioDoc("""
57
+ Generate and send polymorphic model in multiple levels inheritance with 2 discriminators.
58
+ Expected input body:
59
+ ```json
60
+ {"age": 1, "kind": "shark", "sharktype": "goblin"}
61
+ ```
62
+ """)
63
+ @put
64
+ op putModel(@body input: Fish): NoContentResponse;
65
+
66
+ @scenario
67
+ @route("/recursivemodel")
68
+ @scenarioDoc("""
69
+ Generate and receive polymorphic models has collection and dictionary properties referring to other polymorphic models.
70
+ Expected response body:
71
+ ```json
72
+ {
73
+ "age": 1,
74
+ "kind": "salmon",
75
+ "partner": {
76
+ "age": 2,
77
+ "kind": "shark",
78
+ "sharktype": "saw"
79
+ },
80
+ "friends": [
81
+ {
82
+ "age": 2,
83
+ "kind": "salmon",
84
+ "partner": {
85
+ "age": 3,
86
+ "kind": "salmon"
87
+ },
88
+ "hate": {
89
+ "key1": {
90
+ "age": 4,
91
+ "kind": "salmon"
92
+ },
93
+ "key2": {
94
+ "age": 2,
95
+ "kind": "shark",
96
+ "sharktype": "goblin"
97
+ }
98
+ }
99
+ },
100
+ {
101
+ "age": 3,
102
+ "kind": "shark",
103
+ "sharktype": "goblin"
104
+ }
105
+ ],
106
+ "hate": {
107
+ "key3": {
108
+ "age": 3,
109
+ "kind": "shark",
110
+ "sharktype": "saw"
111
+ },
112
+ "key4": {
113
+ "age": 2,
114
+ "kind": "salmon",
115
+ "friends": [
116
+ {
117
+ "age": 1,
118
+ "kind": "salmon"
119
+ },
120
+ {
121
+ "age": 4,
122
+ "kind": "shark",
123
+ "sharktype": "goblin"
124
+ }
125
+ ]
126
+ }
127
+ }
128
+ }
129
+ ```
130
+ """)
131
+ @get
132
+ op getRecursiveModel(): Fish;
133
+
134
+ @scenario
135
+ @route("/recursivemodel")
136
+ @scenarioDoc("""
137
+ Generate and send polymorphic models has collection and dictionary properties referring to other polymorphic models.
138
+ Expected input body:
139
+ ```json
140
+ {
141
+ "age": 1,
142
+ "kind": "salmon",
143
+ "partner": {
144
+ "age": 2,
145
+ "kind": "shark",
146
+ "sharktype": "saw"
147
+ },
148
+ "friends": [
149
+ {
150
+ "age": 2,
151
+ "kind": "salmon",
152
+ "partner": {
153
+ "age": 3,
154
+ "kind": "salmon"
155
+ },
156
+ "hate": {
157
+ "key1": {
158
+ "age": 4,
159
+ "kind": "salmon"
160
+ },
161
+ "key2": {
162
+ "age": 2,
163
+ "kind": "shark",
164
+ "sharktype": "goblin"
165
+ }
166
+ }
167
+ },
168
+ {
169
+ "age": 3,
170
+ "kind": "shark",
171
+ "sharktype": "goblin"
172
+ }
173
+ ],
174
+ "hate": {
175
+ "key3": {
176
+ "age": 3,
177
+ "kind": "shark",
178
+ "sharktype": "saw"
179
+ },
180
+ "key4": {
181
+ "age": 2,
182
+ "kind": "salmon",
183
+ "friends": [
184
+ {
185
+ "age": 1,
186
+ "kind": "salmon"
187
+ },
188
+ {
189
+ "age": 4,
190
+ "kind": "shark",
191
+ "sharktype": "goblin"
192
+ }
193
+ ]
194
+ }
195
+ }
196
+ }
197
+ ```
198
+ """)
199
+ @put
200
+ op putRecursiveModel(@body input: Fish): NoContentResponse;
201
+
202
+ @scenario
203
+ @route("/missingdiscriminator")
204
+ @scenarioDoc("""
205
+ Get a model omitting the discriminator.
206
+ Expected response body:
207
+ ```json
208
+ {"age": 1}
209
+ ```
210
+ """)
211
+ @get
212
+ op getMissingDiscriminator(): Fish;
213
+
214
+ @scenario
215
+ @route("/wrongdiscriminator")
216
+ @scenarioDoc("""
217
+ Get a model containing discriminator value never defined.
218
+ Expected response body:
219
+ ```json
220
+ {"age": 1, "kind": "wrongKind" }
221
+ ```
222
+ """)
223
+ @get
224
+ op getWrongDiscriminator(): Fish;
@@ -0,0 +1,130 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const validPolymorphicBody = {
6
+ age: 1,
7
+ kind: "shark",
8
+ sharktype: "goblin",
9
+ };
10
+ const validRecursiveBody = {
11
+ age: 1,
12
+ kind: "salmon",
13
+ partner: {
14
+ age: 2,
15
+ kind: "shark",
16
+ sharktype: "saw",
17
+ },
18
+ friends: [
19
+ {
20
+ age: 2,
21
+ kind: "salmon",
22
+ partner: {
23
+ age: 3,
24
+ kind: "salmon",
25
+ },
26
+ hate: {
27
+ key1: {
28
+ age: 4,
29
+ kind: "salmon",
30
+ },
31
+ key2: {
32
+ age: 2,
33
+ kind: "shark",
34
+ sharktype: "goblin",
35
+ },
36
+ },
37
+ },
38
+ {
39
+ age: 3,
40
+ kind: "shark",
41
+ sharktype: "goblin",
42
+ },
43
+ ],
44
+ hate: {
45
+ key3: {
46
+ age: 3,
47
+ kind: "shark",
48
+ sharktype: "saw",
49
+ },
50
+ key4: {
51
+ age: 2,
52
+ kind: "salmon",
53
+ friends: [
54
+ {
55
+ age: 1,
56
+ kind: "salmon",
57
+ },
58
+ {
59
+ age: 4,
60
+ kind: "shark",
61
+ sharktype: "goblin",
62
+ },
63
+ ],
64
+ },
65
+ },
66
+ };
67
+ Scenarios.Type_Model_Inheritance_NestedDiscriminator_getModel = passOnSuccess({
68
+ uri: "/type/model/inheritance/nested-discriminator/model",
69
+ method: "get",
70
+ request: {},
71
+ response: {
72
+ status: 200,
73
+ body: json(validPolymorphicBody),
74
+ },
75
+ kind: "MockApiDefinition",
76
+ });
77
+ Scenarios.Type_Model_Inheritance_NestedDiscriminator_putModel = passOnSuccess({
78
+ uri: "/type/model/inheritance/nested-discriminator/model",
79
+ method: "put",
80
+ request: {
81
+ body: validPolymorphicBody,
82
+ },
83
+ response: {
84
+ status: 204,
85
+ },
86
+ kind: "MockApiDefinition",
87
+ });
88
+
89
+ Scenarios.Type_Model_Inheritance_NestedDiscriminator_getRecursiveModel = passOnSuccess({
90
+ uri: "/type/model/inheritance/nested-discriminator/recursivemodel",
91
+ method: "get",
92
+ request: {},
93
+ response: {
94
+ status: 200,
95
+ body: json(validRecursiveBody),
96
+ },
97
+ kind: "MockApiDefinition",
98
+ });
99
+ Scenarios.Type_Model_Inheritance_NestedDiscriminator_putRecursiveModel = passOnSuccess({
100
+ uri: "/type/model/inheritance/nested-discriminator/recursivemodel",
101
+ method: "put",
102
+ request: {
103
+ body: validRecursiveBody,
104
+ },
105
+ response: {
106
+ status: 204,
107
+ },
108
+ kind: "MockApiDefinition",
109
+ });
110
+
111
+ Scenarios.Type_Model_Inheritance_NestedDiscriminator_getMissingDiscriminator = passOnSuccess({
112
+ uri: "/type/model/inheritance/nested-discriminator/missingdiscriminator",
113
+ method: "get",
114
+ request: {},
115
+ response: {
116
+ status: 200,
117
+ body: json({ age: 1 }),
118
+ },
119
+ kind: "MockApiDefinition",
120
+ });
121
+ Scenarios.Type_Model_Inheritance_NestedDiscriminator_getWrongDiscriminator = passOnSuccess({
122
+ uri: "/type/model/inheritance/nested-discriminator/wrongdiscriminator",
123
+ method: "get",
124
+ request: {},
125
+ response: {
126
+ status: 200,
127
+ body: json({ age: 1, kind: "wrongKind" }),
128
+ },
129
+ kind: "MockApiDefinition",
130
+ });
@@ -0,0 +1,54 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Illustrates not-discriminated inheritance model.")
8
+ @scenarioService("/type/model/inheritance/not-discriminated")
9
+ namespace Type.Model.Inheritance.NotDiscriminated;
10
+
11
+ @doc("This is base model for not-discriminated normal multiple levels inheritance.")
12
+ model Pet {
13
+ name: string;
14
+ }
15
+
16
+ @doc("The second level model in the normal multiple levels inheritance.")
17
+ model Cat extends Pet {
18
+ age: int32;
19
+ }
20
+
21
+ @doc("The third level model in the normal multiple levels inheritance.")
22
+ model Siamese extends Cat {
23
+ smart: boolean;
24
+ }
25
+
26
+ @scenario
27
+ @scenarioDoc("""
28
+ Generate and send model.
29
+ Expected input body:
30
+ ```json
31
+ {"name": "abc", "age": 32, "smart": true}
32
+ ```
33
+ """)
34
+ @route("/valid")
35
+ @post
36
+ op postValid(@body input: Siamese): NoContentResponse;
37
+
38
+ @scenario
39
+ @scenarioDoc("""
40
+ Generate and receive model.
41
+ Expected response body:
42
+ ```json
43
+ {"name": "abc", "age": 32, "smart": true}
44
+ ```
45
+ """)
46
+ @route("/valid")
47
+ @get
48
+ op getValid(): Siamese;
49
+
50
+ @scenario
51
+ @scenarioDoc("Generate, send, and receive round-trip bottom model.")
52
+ @route("/valid")
53
+ @put
54
+ op putValid(@body input: Siamese): Siamese;