@typespec/http-specs 0.37.2

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 (334) 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 +45 -0
  9. package/dist/specs/authentication/api-key/mockapi.js.map +1 -0
  10. package/dist/specs/authentication/commonapi.d.ts +9 -0
  11. package/dist/specs/authentication/commonapi.d.ts.map +1 -0
  12. package/dist/specs/authentication/commonapi.js +19 -0
  13. package/dist/specs/authentication/commonapi.js.map +1 -0
  14. package/dist/specs/authentication/http/custom/mockapi.d.ts +3 -0
  15. package/dist/specs/authentication/http/custom/mockapi.d.ts.map +1 -0
  16. package/dist/specs/authentication/http/custom/mockapi.js +45 -0
  17. package/dist/specs/authentication/http/custom/mockapi.js.map +1 -0
  18. package/dist/specs/authentication/oauth2/mockapi.d.ts +3 -0
  19. package/dist/specs/authentication/oauth2/mockapi.d.ts.map +1 -0
  20. package/dist/specs/authentication/oauth2/mockapi.js +42 -0
  21. package/dist/specs/authentication/oauth2/mockapi.js.map +1 -0
  22. package/dist/specs/authentication/union/mockapi.d.ts +3 -0
  23. package/dist/specs/authentication/union/mockapi.d.ts.map +1 -0
  24. package/dist/specs/authentication/union/mockapi.js +37 -0
  25. package/dist/specs/authentication/union/mockapi.js.map +1 -0
  26. package/dist/specs/encode/bytes/mockapi.d.ts +3 -0
  27. package/dist/specs/encode/bytes/mockapi.d.ts.map +1 -0
  28. package/dist/specs/encode/bytes/mockapi.js +179 -0
  29. package/dist/specs/encode/bytes/mockapi.js.map +1 -0
  30. package/dist/specs/encode/datetime/mockapi.d.ts +3 -0
  31. package/dist/specs/encode/datetime/mockapi.d.ts.map +1 -0
  32. package/dist/specs/encode/datetime/mockapi.js +160 -0
  33. package/dist/specs/encode/datetime/mockapi.js.map +1 -0
  34. package/dist/specs/encode/duration/mockapi.d.ts +3 -0
  35. package/dist/specs/encode/duration/mockapi.d.ts.map +1 -0
  36. package/dist/specs/encode/duration/mockapi.js +116 -0
  37. package/dist/specs/encode/duration/mockapi.js.map +1 -0
  38. package/dist/specs/encode/numeric/mockapi.d.ts +3 -0
  39. package/dist/specs/encode/numeric/mockapi.d.ts.map +1 -0
  40. package/dist/specs/encode/numeric/mockapi.js +29 -0
  41. package/dist/specs/encode/numeric/mockapi.js.map +1 -0
  42. package/dist/specs/helper.d.ts +3 -0
  43. package/dist/specs/helper.d.ts.map +1 -0
  44. package/dist/specs/helper.js +7 -0
  45. package/dist/specs/helper.js.map +1 -0
  46. package/dist/specs/parameters/basic/mockapi.d.ts +3 -0
  47. package/dist/specs/parameters/basic/mockapi.d.ts.map +1 -0
  48. package/dist/specs/parameters/basic/mockapi.js +24 -0
  49. package/dist/specs/parameters/basic/mockapi.js.map +1 -0
  50. package/dist/specs/parameters/body-optionality/mockapi.d.ts +3 -0
  51. package/dist/specs/parameters/body-optionality/mockapi.d.ts.map +1 -0
  52. package/dist/specs/parameters/body-optionality/mockapi.js +62 -0
  53. package/dist/specs/parameters/body-optionality/mockapi.js.map +1 -0
  54. package/dist/specs/parameters/collection-format/mockapi.d.ts +3 -0
  55. package/dist/specs/parameters/collection-format/mockapi.d.ts.map +1 -0
  56. package/dist/specs/parameters/collection-format/mockapi.js +106 -0
  57. package/dist/specs/parameters/collection-format/mockapi.js.map +1 -0
  58. package/dist/specs/parameters/spread/mockapi.d.ts +3 -0
  59. package/dist/specs/parameters/spread/mockapi.d.ts.map +1 -0
  60. package/dist/specs/parameters/spread/mockapi.js +206 -0
  61. package/dist/specs/parameters/spread/mockapi.js.map +1 -0
  62. package/dist/specs/payload/json-merge-patch/mockapi.d.ts +40 -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 +141 -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 +84 -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 +153 -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 +189 -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 +63 -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 +32 -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 +15 -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 +27 -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 +15 -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 +46 -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 +47 -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 +79 -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 +246 -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 +104 -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 +103 -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 +46 -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 +53 -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 +48 -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 +79 -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 +147 -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 +47 -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 +47 -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 +122 -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 +99 -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 +52 -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 +138 -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 +346 -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 +147 -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 +197 -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 +213 -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 +274 -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 +113 -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 +76 -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 +24 -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 +26 -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 +53 -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 +25 -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 +29 -0
  221. package/dist/specs/versioning/typeChangedFrom/mockapi.js.map +1 -0
  222. package/package.json +53 -0
  223. package/specs/README.md +3 -0
  224. package/specs/authentication/api-key/main.tsp +39 -0
  225. package/specs/authentication/api-key/mockapi.ts +47 -0
  226. package/specs/authentication/commonapi.ts +43 -0
  227. package/specs/authentication/http/custom/main.tsp +39 -0
  228. package/specs/authentication/http/custom/mockapi.ts +47 -0
  229. package/specs/authentication/oauth2/main.tsp +44 -0
  230. package/specs/authentication/oauth2/mockapi.ts +44 -0
  231. package/specs/authentication/union/main.tsp +29 -0
  232. package/specs/authentication/union/mockapi.ts +39 -0
  233. package/specs/encode/bytes/main.tsp +369 -0
  234. package/specs/encode/bytes/mockapi.ts +309 -0
  235. package/specs/encode/datetime/main.tsp +344 -0
  236. package/specs/encode/datetime/mockapi.ts +274 -0
  237. package/specs/encode/duration/main.tsp +322 -0
  238. package/specs/encode/duration/mockapi.ts +204 -0
  239. package/specs/encode/numeric/main.tsp +71 -0
  240. package/specs/encode/numeric/mockapi.ts +39 -0
  241. package/specs/helper.ts +8 -0
  242. package/specs/parameters/basic/main.tsp +61 -0
  243. package/specs/parameters/basic/mockapi.ts +29 -0
  244. package/specs/parameters/body-optionality/main.tsp +63 -0
  245. package/specs/parameters/body-optionality/mockapi.ts +71 -0
  246. package/specs/parameters/collection-format/main.tsp +95 -0
  247. package/specs/parameters/collection-format/mockapi.ts +113 -0
  248. package/specs/parameters/spread/main.tsp +340 -0
  249. package/specs/parameters/spread/mockapi.ts +216 -0
  250. package/specs/payload/json-merge-patch/main.tsp +183 -0
  251. package/specs/payload/json-merge-patch/mockapi.ts +146 -0
  252. package/specs/payload/media-type/main.tsp +54 -0
  253. package/specs/payload/media-type/mockapi.ts +88 -0
  254. package/specs/payload/multipart/main.tsp +499 -0
  255. package/specs/payload/multipart/mockapi.ts +226 -0
  256. package/specs/payload/xml/main.tsp +312 -0
  257. package/specs/payload/xml/mockapi.ts +244 -0
  258. package/specs/routes/main.tsp +476 -0
  259. package/specs/routes/mockapi.ts +158 -0
  260. package/specs/scratch/.gitignore +3 -0
  261. package/specs/serialization/encoded-name/json/main.tsp +45 -0
  262. package/specs/serialization/encoded-name/json/mockapi.ts +34 -0
  263. package/specs/server/endpoint/not-defined/main.tsp +19 -0
  264. package/specs/server/endpoint/not-defined/mockapi.ts +16 -0
  265. package/specs/server/path/multiple/main.tsp +46 -0
  266. package/specs/server/path/multiple/mockapi.ts +29 -0
  267. package/specs/server/path/single/main.tsp +23 -0
  268. package/specs/server/path/single/mockapi.ts +16 -0
  269. package/specs/server/versions/not-versioned/main.tsp +39 -0
  270. package/specs/server/versions/not-versioned/mockapi.ts +55 -0
  271. package/specs/server/versions/versioned/main.tsp +65 -0
  272. package/specs/server/versions/versioned/mockapi.ts +68 -0
  273. package/specs/special-headers/conditional-request/main.tsp +89 -0
  274. package/specs/special-headers/conditional-request/mockapi.ts +83 -0
  275. package/specs/special-headers/repeatability/main.tsp +39 -0
  276. package/specs/special-headers/repeatability/mockapi.ts +47 -0
  277. package/specs/special-words/dec.js +52 -0
  278. package/specs/special-words/main.tsp +238 -0
  279. package/specs/special-words/mockapi.ts +407 -0
  280. package/specs/type/array/main.tsp +132 -0
  281. package/specs/type/array/mockapi.ts +119 -0
  282. package/specs/type/dictionary/main.tsp +122 -0
  283. package/specs/type/dictionary/mockapi.ts +115 -0
  284. package/specs/type/enum/extensible/main.tsp +64 -0
  285. package/specs/type/enum/extensible/mockapi.ts +55 -0
  286. package/specs/type/enum/fixed/main.tsp +60 -0
  287. package/specs/type/enum/fixed/mockapi.ts +55 -0
  288. package/specs/type/model/empty/main.tsp +39 -0
  289. package/specs/type/model/empty/mockapi.ts +51 -0
  290. package/specs/type/model/inheritance/enum-discriminator/main.tsp +169 -0
  291. package/specs/type/model/inheritance/enum-discriminator/mockapi.ts +99 -0
  292. package/specs/type/model/inheritance/nested-discriminator/main.tsp +223 -0
  293. package/specs/type/model/inheritance/nested-discriminator/mockapi.ts +150 -0
  294. package/specs/type/model/inheritance/not-discriminated/main.tsp +53 -0
  295. package/specs/type/model/inheritance/not-discriminated/mockapi.ts +49 -0
  296. package/specs/type/model/inheritance/recursive/main.tsp +70 -0
  297. package/specs/type/model/inheritance/recursive/mockapi.ts +48 -0
  298. package/specs/type/model/inheritance/single-discriminator/main.tsp +171 -0
  299. package/specs/type/model/inheritance/single-discriminator/mockapi.ts +126 -0
  300. package/specs/type/model/templated/main.tsp +130 -0
  301. package/specs/type/model/templated/mockapi.ts +102 -0
  302. package/specs/type/model/usage/main.tsp +48 -0
  303. package/specs/type/model/usage/mockapi.ts +56 -0
  304. package/specs/type/model/visibility/main.tsp +152 -0
  305. package/specs/type/model/visibility/mockapi.ts +139 -0
  306. package/specs/type/property/additional-properties/main.tsp +591 -0
  307. package/specs/type/property/additional-properties/mockapi.ts +477 -0
  308. package/specs/type/property/nullable/client.tsp +21 -0
  309. package/specs/type/property/nullable/main.tsp +162 -0
  310. package/specs/type/property/nullable/mockapi.ts +202 -0
  311. package/specs/type/property/optionality/main.tsp +258 -0
  312. package/specs/type/property/optionality/mockapi.ts +308 -0
  313. package/specs/type/property/value-types/main.tsp +285 -0
  314. package/specs/type/property/value-types/mockapi.ts +297 -0
  315. package/specs/type/scalar/main.tsp +164 -0
  316. package/specs/type/scalar/mockapi.ts +280 -0
  317. package/specs/type/union/main.tsp +262 -0
  318. package/specs/type/union/mockapi.ts +137 -0
  319. package/specs/versioning/added/main.tsp +135 -0
  320. package/specs/versioning/added/mockapi.ts +79 -0
  321. package/specs/versioning/madeOptional/main.tsp +64 -0
  322. package/specs/versioning/madeOptional/mockapi.ts +25 -0
  323. package/specs/versioning/removed/main.tsp +125 -0
  324. package/specs/versioning/removed/mockapi.ts +27 -0
  325. package/specs/versioning/renamedFrom/main.tsp +111 -0
  326. package/specs/versioning/renamedFrom/mockapi.ts +55 -0
  327. package/specs/versioning/returnTypeChangedFrom/main.tsp +56 -0
  328. package/specs/versioning/returnTypeChangedFrom/mockapi.ts +26 -0
  329. package/specs/versioning/typeChangedFrom/main.tsp +70 -0
  330. package/specs/versioning/typeChangedFrom/mockapi.ts +30 -0
  331. package/temp/.tsbuildinfo +1 -0
  332. package/tsconfig.build.json +9 -0
  333. package/tsconfig.json +11 -0
  334. package/tspconfig.yaml +2 -0
@@ -0,0 +1,591 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+ using Azure.ClientGenerator.Core;
6
+
7
+ @doc("Tests for additional properties of models")
8
+ @scenarioService("/type/property/additionalProperties")
9
+ namespace Type.Property.AdditionalProperties;
10
+
11
+ @doc("Template to have models operations")
12
+ interface ModelOperations<TModel, TDoc extends string> {
13
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing"
14
+ @scenario
15
+ @scenarioDoc(
16
+ """
17
+ Expected response body:
18
+ ```json
19
+ {doc}
20
+ ```
21
+ """,
22
+ {
23
+ doc: TDoc,
24
+ }
25
+ )
26
+ @get
27
+ @doc("Get call")
28
+ get(): TModel;
29
+
30
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing"
31
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
32
+ @scenario
33
+ @scenarioDoc(
34
+ """
35
+ Expected input body:
36
+ ```json
37
+ {doc}
38
+ ```
39
+ """,
40
+ {
41
+ doc: TDoc,
42
+ }
43
+ )
44
+ @put
45
+ @doc("Put operation")
46
+ put(@body @doc("body") body: TModel): void;
47
+ }
48
+
49
+ // ********************************************** Record<unknown> **********************************************
50
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
51
+ @doc("The model extends from Record<unknown> type.")
52
+ model ExtendsUnknownAdditionalProperties extends Record<unknown> {
53
+ @doc("The name property")
54
+ name: string;
55
+ }
56
+
57
+ @route("/extendsRecordUnknown")
58
+ @operationGroup
59
+ interface ExtendsUnknown
60
+ extends ModelOperations<
61
+ ExtendsUnknownAdditionalProperties,
62
+ "{'name': 'ExtendsUnknownAdditionalProperties', 'prop1': 32, 'prop2': true, 'prop3': 'abc'}"
63
+ > {}
64
+
65
+ @doc("The model extends from a type that extends from Record<unknown>.")
66
+ model ExtendsUnknownAdditionalPropertiesDerived extends ExtendsUnknownAdditionalProperties {
67
+ @doc("The index property")
68
+ index: int32;
69
+
70
+ @doc("The age property")
71
+ age?: float32;
72
+ }
73
+
74
+ @route("/extendsRecordUnknownDerived")
75
+ @operationGroup
76
+ interface ExtendsUnknownDerived
77
+ extends ModelOperations<
78
+ ExtendsUnknownAdditionalPropertiesDerived,
79
+ "{'name': 'ExtendsUnknownAdditionalProperties', 'index': 314, 'age': 2.71875, 'prop1': 32, 'prop2': true, 'prop3': 'abc'}"
80
+ > {}
81
+
82
+ @doc("The model extends from Record<unknown> with a discriminator.")
83
+ @discriminator("kind")
84
+ model ExtendsUnknownAdditionalPropertiesDiscriminated extends Record<unknown> {
85
+ @doc("The name property")
86
+ name: string;
87
+
88
+ @doc("The discriminator")
89
+ kind: string;
90
+ }
91
+
92
+ @doc("The derived discriminated type")
93
+ model ExtendsUnknownAdditionalPropertiesDiscriminatedDerived
94
+ extends ExtendsUnknownAdditionalPropertiesDiscriminated {
95
+ kind: "derived";
96
+
97
+ @doc("The index property")
98
+ index: int32;
99
+
100
+ @doc("The age property")
101
+ age?: float32;
102
+ }
103
+
104
+ @route("/extendsUnknownDiscriminated")
105
+ @operationGroup
106
+ interface ExtendsUnknownDiscriminated
107
+ extends ModelOperations<
108
+ ExtendsUnknownAdditionalPropertiesDiscriminated,
109
+ "{'kind': 'derived', 'name': 'Derived', 'index': 314, 'age': 2.71875, 'prop1': 32, 'prop2': true, 'prop3': 'abc'}"
110
+ > {}
111
+
112
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
113
+ @doc("The model is from Record<unknown> type.")
114
+ model IsUnknownAdditionalProperties is Record<unknown> {
115
+ @doc("The name property")
116
+ name: string;
117
+ }
118
+
119
+ @route("/isRecordUnknown")
120
+ @operationGroup
121
+ interface IsUnknown
122
+ extends ModelOperations<
123
+ IsUnknownAdditionalProperties,
124
+ "{'name': 'IsUnknownAdditionalProperties', 'prop1': 32, 'prop2': true, 'prop3': 'abc'}"
125
+ > {}
126
+
127
+ @doc("The model extends from a type that is Record<unknown> type")
128
+ model IsUnknownAdditionalPropertiesDerived extends IsUnknownAdditionalProperties {
129
+ @doc("The index property")
130
+ index: int32;
131
+
132
+ @doc("The age property")
133
+ age?: float32;
134
+ }
135
+
136
+ @route("/isRecordUnknownDerived")
137
+ @operationGroup
138
+ interface IsUnknownDerived
139
+ extends ModelOperations<
140
+ IsUnknownAdditionalPropertiesDerived,
141
+ "{'name': 'IsUnknownAdditionalProperties', 'index': 314, 'age': 2.71875, 'prop1': 32, 'prop2': true, 'prop3': 'abc'}"
142
+ > {}
143
+
144
+ @doc("The model is Record<unknown> with a discriminator.")
145
+ @discriminator("kind")
146
+ model IsUnknownAdditionalPropertiesDiscriminated is Record<unknown> {
147
+ @doc("The name property")
148
+ name: string;
149
+
150
+ @doc("The discriminator")
151
+ kind: string;
152
+ }
153
+
154
+ @doc("The derived discriminated type")
155
+ model IsUnknownAdditionalPropertiesDiscriminatedDerived
156
+ extends IsUnknownAdditionalPropertiesDiscriminated {
157
+ kind: "derived";
158
+
159
+ @doc("The index property")
160
+ index: int32;
161
+
162
+ @doc("The age property")
163
+ age?: float32;
164
+ }
165
+
166
+ @route("/isUnknownDiscriminated")
167
+ @operationGroup
168
+ interface IsUnknownDiscriminated
169
+ extends ModelOperations<
170
+ IsUnknownAdditionalPropertiesDiscriminated,
171
+ "{'kind': 'derived', 'name': 'Derived', 'index': 314, 'age': 2.71875, 'prop1': 32, 'prop2': true, 'prop3': 'abc'}"
172
+ > {}
173
+
174
+ // ***************** Known properties type is the same with additional properties type **************************
175
+ // ********************************************** Record<string> **********************************************
176
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
177
+ @doc("The model extends from Record<string> type.")
178
+ model ExtendsStringAdditionalProperties extends Record<string> {
179
+ @doc("The name property")
180
+ name: string;
181
+ }
182
+
183
+ @route("/extendsRecordString")
184
+ @operationGroup
185
+ interface ExtendsString
186
+ extends ModelOperations<
187
+ ExtendsStringAdditionalProperties,
188
+ "{'name': 'ExtendsStringAdditionalProperties', 'prop': 'abc'}"
189
+ > {}
190
+
191
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
192
+ @doc("The model is from Record<string> type.")
193
+ model IsStringAdditionalProperties is Record<string> {
194
+ @doc("The name property")
195
+ name: string;
196
+ }
197
+
198
+ @route("/isRecordstring")
199
+ @operationGroup
200
+ interface IsString
201
+ extends ModelOperations<
202
+ IsStringAdditionalProperties,
203
+ "{'name': 'IsStringAdditionalProperties', 'prop': 'abc'}"
204
+ > {}
205
+
206
+ @doc("The model spread Record<string> with the same known property type")
207
+ model SpreadStringRecord {
208
+ @doc("The name property")
209
+ name: string;
210
+
211
+ ...Record<string>;
212
+ }
213
+
214
+ @route("/spreadRecordString")
215
+ @operationGroup
216
+ interface SpreadString
217
+ extends ModelOperations<SpreadStringRecord, "{'name': 'SpreadSpringRecord', 'prop': 'abc'}"> {}
218
+
219
+ // ********************************************** Record<float32> **********************************************
220
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
221
+ @doc("The model extends from Record<float32> type.")
222
+ model ExtendsFloatAdditionalProperties extends Record<float32> {
223
+ @doc("The id property")
224
+ id: float32;
225
+ }
226
+
227
+ @route("/extendsRecordFloat")
228
+ @operationGroup
229
+ interface ExtendsFloat
230
+ extends ModelOperations<ExtendsFloatAdditionalProperties, "{'id': 43.125, 'prop': 43.125}"> {}
231
+
232
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
233
+ @doc("The model is from Record<float32> type.")
234
+ model IsFloatAdditionalProperties is Record<float32> {
235
+ @doc("The id property")
236
+ id: float32;
237
+ }
238
+
239
+ @route("/isRecordFloat")
240
+ @operationGroup
241
+ interface IsFloat
242
+ extends ModelOperations<IsFloatAdditionalProperties, "{'id': 43.125, 'prop': 43.125}"> {}
243
+
244
+ @doc("The model spread Record<float32> with the same known property type")
245
+ model SpreadFloatRecord {
246
+ @doc("The id property")
247
+ id: float32;
248
+
249
+ ...Record<float32>;
250
+ }
251
+
252
+ @route("/spreadRecordFloat")
253
+ @operationGroup
254
+ interface SpreadFloat
255
+ extends ModelOperations<SpreadFloatRecord, "{'id': 43.125, 'prop': 43.125}"> {}
256
+
257
+ // ********************************************** Record<Model> **********************************************
258
+ @doc("model for record")
259
+ model ModelForRecord {
260
+ @doc("The state property")
261
+ state: string;
262
+ }
263
+
264
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
265
+ @doc("The model extends from Record<ModelForRecord> type.")
266
+ model ExtendsModelAdditionalProperties extends Record<ModelForRecord> {
267
+ knownProp: ModelForRecord;
268
+ }
269
+
270
+ @route("/extendsRecordModel")
271
+ @operationGroup
272
+ interface ExtendsModel
273
+ extends ModelOperations<
274
+ ExtendsModelAdditionalProperties,
275
+ "{'knownProp': {'state': 'ok'}, 'prop': {'state': 'ok'}}"
276
+ > {}
277
+
278
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
279
+ @doc("The model is from Record<ModelForRecord> type.")
280
+ model IsModelAdditionalProperties is Record<ModelForRecord> {
281
+ knownProp: ModelForRecord;
282
+ }
283
+
284
+ @route("/isRecordModel")
285
+ @operationGroup
286
+ interface IsModel
287
+ extends ModelOperations<
288
+ IsModelAdditionalProperties,
289
+ "{'knownProp': {'state': 'ok'}, 'prop': {'state': 'ok'}}"
290
+ > {}
291
+
292
+ @doc("The model spread Record<ModelForRecord> with the same known property type")
293
+ model SpreadModelRecord {
294
+ knownProp: ModelForRecord;
295
+ ...Record<ModelForRecord>;
296
+ }
297
+
298
+ @route("/spreadRecordModel")
299
+ @operationGroup
300
+ interface SpreadModel
301
+ extends ModelOperations<
302
+ SpreadModelRecord,
303
+ "{'knownProp': {'state': 'ok'}, 'prop': {'state': 'ok'}}"
304
+ > {}
305
+
306
+ // ********************************************** Record<Model[]> **********************************************
307
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
308
+ @doc("The model extends from Record<ModelForRecord[]> type.")
309
+ model ExtendsModelArrayAdditionalProperties extends Record<ModelForRecord[]> {
310
+ knownProp: ModelForRecord[];
311
+ }
312
+
313
+ @route("/extendsRecordModelArray")
314
+ @operationGroup
315
+ interface ExtendsModelArray
316
+ extends ModelOperations<
317
+ ExtendsModelArrayAdditionalProperties,
318
+ "{'knownProp': [{'state': 'ok'}, {'state': 'ok'}], 'prop': [{'state': 'ok'}, {'state': 'ok'}]}"
319
+ > {}
320
+
321
+ #suppress "@azure-tools/typespec-azure-core/bad-record-type" "For testing"
322
+ @doc("The model is from Record<ModelForRecord[]> type.")
323
+ model IsModelArrayAdditionalProperties is Record<ModelForRecord[]> {
324
+ knownProp: ModelForRecord[];
325
+ }
326
+
327
+ @route("/isRecordModelArray")
328
+ @operationGroup
329
+ interface IsModelArray
330
+ extends ModelOperations<
331
+ IsModelArrayAdditionalProperties,
332
+ "{'knownProp': [{'state': 'ok'}, {'state': 'ok'}], 'prop': [{'state': 'ok'}, {'state': 'ok'}]}"
333
+ > {}
334
+
335
+ model SpreadModelArrayRecord {
336
+ knownProp: ModelForRecord[];
337
+ ...Record<ModelForRecord[]>;
338
+ }
339
+
340
+ @route("/spreadRecordModelArray")
341
+ @operationGroup
342
+ interface SpreadModelArray
343
+ extends ModelOperations<
344
+ SpreadModelArrayRecord,
345
+ "{'knownProp': [{'state': 'ok'}, {'state': 'ok'}], 'prop': [{'state': 'ok'}, {'state': 'ok'}]}"
346
+ > {}
347
+
348
+ // ****************** Known properties type is different from additional properties type **************************
349
+ // ********************************************** Record<string> **********************************************
350
+ @doc("The model spread Record<string> with the different known property type")
351
+ model DifferentSpreadStringRecord {
352
+ @doc("The name property")
353
+ id: float32;
354
+
355
+ ...Record<string>;
356
+ }
357
+
358
+ @route("/spreadDifferentRecordString")
359
+ @operationGroup
360
+ interface SpreadDifferentString
361
+ extends ModelOperations<DifferentSpreadStringRecord, "{'id': 43.125, 'prop': 'abc'}"> {}
362
+
363
+ // ********************************************** Record<float32> **********************************************
364
+ @doc("The model spread Record<float32> with the different known property type")
365
+ model DifferentSpreadFloatRecord {
366
+ @doc("The id property")
367
+ name: string;
368
+
369
+ ...Record<float32>;
370
+ }
371
+
372
+ @route("/spreadDifferentRecordFloat")
373
+ @operationGroup
374
+ interface SpreadDifferentFloat
375
+ extends ModelOperations<DifferentSpreadFloatRecord, "{'name': 'abc', 'prop': 43.125}"> {}
376
+
377
+ // ********************************************** Record<Model> **********************************************
378
+ @doc("The model spread Record<ModelForRecord> with the different known property type")
379
+ model DifferentSpreadModelRecord {
380
+ knownProp: string;
381
+ ...Record<ModelForRecord>;
382
+ }
383
+
384
+ @route("/spreadDifferentRecordModel")
385
+ @operationGroup
386
+ interface SpreadDifferentModel
387
+ extends ModelOperations<
388
+ DifferentSpreadModelRecord,
389
+ "{'knownProp': 'abc', 'prop': {'state': 'ok'}}"
390
+ > {}
391
+
392
+ // ********************************************** Record<Model[]> **********************************************
393
+ @doc("The model spread Record<ModelForRecord[]> with the different known property type")
394
+ model DifferentSpreadModelArrayRecord {
395
+ knownProp: string;
396
+ ...Record<ModelForRecord[]>;
397
+ }
398
+
399
+ @route("/spreadDifferentRecordModelArray")
400
+ @operationGroup
401
+ interface SpreadDifferentModelArray
402
+ extends ModelOperations<
403
+ DifferentSpreadModelArrayRecord,
404
+ "{'knownProp': 'abc', 'prop': [{'state': 'ok'}, {'state': 'ok'}]}"
405
+ > {}
406
+
407
+ // ****************** extends model has spread Record<string> **************************
408
+ @doc("The model extends from a model that spread Record<string> with the different known property type")
409
+ model DifferentSpreadStringDerived extends DifferentSpreadStringRecord {
410
+ @doc("The index property")
411
+ derivedProp: string;
412
+ }
413
+
414
+ @route("/extendsDifferentSpreadString")
415
+ @operationGroup
416
+ interface ExtendsDifferentSpreadString
417
+ extends ModelOperations<
418
+ DifferentSpreadStringDerived,
419
+ "{'id': 43.125, 'prop': 'abc', 'derivedProp': 'abc'}"
420
+ > {}
421
+
422
+ // ****************** extends model has spread Record<float32> **************************
423
+ @doc("The model extends from a model that spread Record<float32> with the different known property type")
424
+ model DifferentSpreadFloatDerived extends DifferentSpreadFloatRecord {
425
+ @doc("The index property")
426
+ derivedProp: float32;
427
+ }
428
+
429
+ @route("/extendsDifferentSpreadFloat")
430
+ @operationGroup
431
+ interface ExtendsDifferentSpreadFloat
432
+ extends ModelOperations<
433
+ DifferentSpreadFloatDerived,
434
+ "{'name': 'abc', 'prop': 43.125, 'derivedProp': 43.125}"
435
+ > {}
436
+
437
+ // ****************** extends model has spread Record<Model> **************************
438
+
439
+ @doc("The model extends from a model that spread Record<ModelForRecord> with the different known property type")
440
+ model DifferentSpreadModelDerived extends DifferentSpreadModelRecord {
441
+ @doc("The index property")
442
+ derivedProp: ModelForRecord;
443
+ }
444
+
445
+ @route("/extendsDifferentSpreadModel")
446
+ @operationGroup
447
+ interface ExtendsDifferentSpreadModel
448
+ extends ModelOperations<
449
+ DifferentSpreadModelDerived,
450
+ "{'knownProp': 'abc', 'prop': {'state': 'ok'}, 'derivedProp': {'state': 'ok'}}"
451
+ > {}
452
+
453
+ // ****************** extends model has spread Record<Model[]> **************************
454
+ @doc("The model extends from a model that spread Record<ModelForRecord[]> with the different known property type")
455
+ model DifferentSpreadModelArrayDerived extends DifferentSpreadModelArrayRecord {
456
+ @doc("The index property")
457
+ derivedProp: ModelForRecord[];
458
+ }
459
+
460
+ @route("/extendsDifferentSpreadModelArray")
461
+ @operationGroup
462
+ interface ExtendsDifferentSpreadModelArray
463
+ extends ModelOperations<
464
+ DifferentSpreadModelArrayDerived,
465
+ "{'knownProp': 'abc', 'prop': [{'state': 'ok'}, {'state': 'ok'}], 'derivedProp': [{'state': 'ok'}, {'state': 'ok'}]}"
466
+ > {}
467
+
468
+ // ****************** multiple spread of records **************************
469
+ @doc("The model spread Record<string> and Record<float32>")
470
+ model MultipleSpreadRecord {
471
+ @doc("The name property")
472
+ flag: boolean;
473
+
474
+ ...Record<string>;
475
+ ...Record<float32>;
476
+ }
477
+
478
+ @route("/multipleSpreadRecord")
479
+ @operationGroup
480
+ interface MultipleSpread
481
+ extends ModelOperations<
482
+ MultipleSpreadRecord,
483
+ "{'flag': true, 'prop1': 'abc', 'prop2': 43.125}"
484
+ > {}
485
+
486
+ // ****************** spread record of unions **************************
487
+ @doc("The model spread Record<string | float32>")
488
+ model SpreadRecordForUnion {
489
+ @doc("The name property")
490
+ flag: boolean;
491
+
492
+ ...Record<string | float32>;
493
+ }
494
+
495
+ @route("/spreadRecordUnion")
496
+ @operationGroup
497
+ interface SpreadRecordUnion
498
+ extends ModelOperations<
499
+ SpreadRecordForUnion,
500
+ "{'flag': true, 'prop1': 'abc', 'prop2': 43.125}"
501
+ > {}
502
+
503
+ // ****************** spread record of discriminated unions **************************
504
+ @discriminator("kind")
505
+ union WidgetData {
506
+ kind0: WidgetData0,
507
+ kind1: WidgetData1,
508
+ }
509
+
510
+ model WidgetData0 {
511
+ kind: "kind0";
512
+ fooProp: string;
513
+ }
514
+
515
+ model WidgetData1 {
516
+ kind: "kind1";
517
+ start: utcDateTime;
518
+ end?: utcDateTime;
519
+ }
520
+
521
+ model WidgetData2 {
522
+ kind: "kind1";
523
+ start: string;
524
+ }
525
+
526
+ @doc("The model spread Record<WidgetData>")
527
+ model SpreadRecordForDiscriminatedUnion {
528
+ @doc("The name property")
529
+ name: string;
530
+
531
+ ...Record<WidgetData>;
532
+ }
533
+
534
+ @route("/spreadRecordDiscriminatedUnion")
535
+ @operationGroup
536
+ interface SpreadRecordDiscriminatedUnion
537
+ extends ModelOperations<
538
+ SpreadRecordForDiscriminatedUnion,
539
+ "{'name': 'abc', 'prop1': {'kind': 'kind0', 'fooProp': 'abc'}, 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}}"
540
+ > {}
541
+
542
+ // ****************** spread record of non-discriminated unions but could guess a discriminator **************************
543
+ @doc("The model spread Record<WidgetData0 | WidgetData1>")
544
+ model SpreadRecordForNonDiscriminatedUnion {
545
+ @doc("The name property")
546
+ name: string;
547
+
548
+ ...Record<WidgetData0 | WidgetData1>;
549
+ }
550
+
551
+ @route("/spreadRecordNonDiscriminatedUnion")
552
+ @operationGroup
553
+ interface SpreadRecordNonDiscriminatedUnion
554
+ extends ModelOperations<
555
+ SpreadRecordForNonDiscriminatedUnion,
556
+ "{'name': 'abc', 'prop1': {'kind': 'kind0', 'fooProp': 'abc'}, 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}}"
557
+ > {}
558
+
559
+ // ****************** spread record of non-discriminated unions **************************
560
+ @doc("The model spread Record<WidgetData2 | WidgetData1>")
561
+ model SpreadRecordForNonDiscriminatedUnion2 {
562
+ @doc("The name property")
563
+ name: string;
564
+
565
+ ...Record<WidgetData2 | WidgetData1>;
566
+ }
567
+
568
+ @route("/spreadRecordNonDiscriminatedUnion2")
569
+ @operationGroup
570
+ interface SpreadRecordNonDiscriminatedUnion2
571
+ extends ModelOperations<
572
+ SpreadRecordForNonDiscriminatedUnion2,
573
+ "{'name': 'abc', 'prop1': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z'}, 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}}"
574
+ > {}
575
+
576
+ // ****************** spread record of non-discriminated unions **************************
577
+ @doc("The model spread Record<WidgetData2[] | WidgetData1>")
578
+ model SpreadRecordForNonDiscriminatedUnion3 {
579
+ @doc("The name property")
580
+ name: string;
581
+
582
+ ...Record<WidgetData2[] | WidgetData1>;
583
+ }
584
+
585
+ @route("/spreadRecordNonDiscriminatedUnion3")
586
+ @operationGroup
587
+ interface SpreadRecordNonDiscriminatedUnion3
588
+ extends ModelOperations<
589
+ SpreadRecordForNonDiscriminatedUnion3,
590
+ "{'name': 'abc', 'prop1': [{'kind': 'kind1', 'start': '2021-01-01T00:00:00Z'}, {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z'], 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}}"
591
+ > {}