@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,296 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ function createServerTests(url: string, value: unknown) {
6
+ return {
7
+ get: passOnSuccess({
8
+ uri: url,
9
+ method: `get`,
10
+ request: {},
11
+ response: {
12
+ status: 200,
13
+ body: json(value),
14
+ },
15
+ kind: "MockApiDefinition",
16
+ }),
17
+ put: passOnSuccess({
18
+ uri: url,
19
+ method: `put`,
20
+ request: {
21
+ body: value,
22
+ },
23
+ response: {
24
+ status: 204,
25
+ },
26
+ kind: "MockApiDefinition",
27
+ }),
28
+ };
29
+ }
30
+
31
+ const Type_Property_Optional_String_Default = createServerTests(
32
+ `/type/property/optional/string/default`,
33
+ {},
34
+ );
35
+ const Type_Property_Optional_String_All = createServerTests(`/type/property/optional/string/all`, {
36
+ property: "hello",
37
+ });
38
+ Scenarios.Type_Property_Optional_String_getDefault = Type_Property_Optional_String_Default.get;
39
+ Scenarios.Type_Property_Optional_String_putDefault = Type_Property_Optional_String_Default.put;
40
+ Scenarios.Type_Property_Optional_String_getAll = Type_Property_Optional_String_All.get;
41
+ Scenarios.Type_Property_Optional_String_putAll = Type_Property_Optional_String_All.put;
42
+
43
+ const Type_Property_Optional_Bytes_Default = createServerTests(
44
+ `/type/property/optional/bytes/default`,
45
+ {},
46
+ );
47
+ const Type_Property_Optional_Bytes_All = createServerTests(`/type/property/optional/bytes/all`, {
48
+ property: "aGVsbG8sIHdvcmxkIQ==",
49
+ });
50
+ Scenarios.Type_Property_Optional_Bytes_getDefault = Type_Property_Optional_Bytes_Default.get;
51
+ Scenarios.Type_Property_Optional_Bytes_putDefault = Type_Property_Optional_Bytes_Default.put;
52
+ Scenarios.Type_Property_Optional_Bytes_getAll = Type_Property_Optional_Bytes_All.get;
53
+ Scenarios.Type_Property_Optional_Bytes_putAll = Type_Property_Optional_Bytes_All.put;
54
+
55
+ const Type_Property_Optional_DateTime_Default = createServerTests(
56
+ `/type/property/optional/datetime/default`,
57
+ {},
58
+ );
59
+ const Type_Property_Optional_DateTime_All = createServerTests(
60
+ `/type/property/optional/datetime/all`,
61
+ {
62
+ property: "2022-08-26T18:38:00Z",
63
+ },
64
+ );
65
+ Scenarios.Type_Property_Optional_Datetime_getDefault = Type_Property_Optional_DateTime_Default.get;
66
+ Scenarios.Type_Property_Optional_Datetime_putDefault = Type_Property_Optional_DateTime_Default.put;
67
+ Scenarios.Type_Property_Optional_Datetime_getAll = Type_Property_Optional_DateTime_All.get;
68
+ Scenarios.Type_Property_Optional_Datetime_putAll = Type_Property_Optional_DateTime_All.put;
69
+
70
+ const Type_Property_Optional_Duration_Default = createServerTests(
71
+ `/type/property/optional/duration/default`,
72
+ {},
73
+ );
74
+ const Type_Property_Optional_Duration_All = createServerTests(
75
+ `/type/property/optional/duration/all`,
76
+ {
77
+ property: "P123DT22H14M12.011S",
78
+ },
79
+ );
80
+
81
+ Scenarios.Type_Property_Optional_Duration_getDefault = Type_Property_Optional_Duration_Default.get;
82
+ Scenarios.Type_Property_Optional_Duration_putDefault = Type_Property_Optional_Duration_Default.put;
83
+ Scenarios.Type_Property_Optional_Duration_getAll = Type_Property_Optional_Duration_All.get;
84
+ Scenarios.Type_Property_Optional_Duration_putAll = Type_Property_Optional_Duration_All.put;
85
+
86
+ const Type_Property_Optional_PlainDate_Default = createServerTests(
87
+ `/type/property/optional/plainDate/default`,
88
+ {},
89
+ );
90
+ const Type_Property_Optional_PlainDate_All = createServerTests(
91
+ `/type/property/optional/plainDate/all`,
92
+ {
93
+ property: "2022-12-12",
94
+ },
95
+ );
96
+
97
+ Scenarios.Type_Property_Optional_PlainDate_getDefault =
98
+ Type_Property_Optional_PlainDate_Default.get;
99
+ Scenarios.Type_Property_Optional_PlainDate_putDefault =
100
+ Type_Property_Optional_PlainDate_Default.put;
101
+ Scenarios.Type_Property_Optional_PlainDate_getAll = Type_Property_Optional_PlainDate_All.get;
102
+ Scenarios.Type_Property_Optional_PlainDate_putAll = Type_Property_Optional_PlainDate_All.put;
103
+
104
+ const Type_Property_Optional_PlainTime_Default = createServerTests(
105
+ `/type/property/optional/plainTime/default`,
106
+ {},
107
+ );
108
+ const Type_Property_Optional_PlainTime_All = createServerTests(
109
+ `/type/property/optional/plainTime/all`,
110
+ {
111
+ property: "13:06:12",
112
+ },
113
+ );
114
+ Scenarios.Type_Property_Optional_PlainTime_getDefault =
115
+ Type_Property_Optional_PlainTime_Default.get;
116
+ Scenarios.Type_Property_Optional_PlainTime_putDefault =
117
+ Type_Property_Optional_PlainTime_Default.put;
118
+ Scenarios.Type_Property_Optional_PlainTime_getAll = Type_Property_Optional_PlainTime_All.get;
119
+ Scenarios.Type_Property_Optional_PlainTime_putAll = Type_Property_Optional_PlainTime_All.put;
120
+
121
+ const Type_Property_Optional_Collections_Bytes_Default = createServerTests(
122
+ `/type/property/optional/collections/bytes/default`,
123
+ {},
124
+ );
125
+ const Type_Property_Optional_Collections_Bytes_All = createServerTests(
126
+ `/type/property/optional/collections/bytes/all`,
127
+ { property: ["aGVsbG8sIHdvcmxkIQ==", "aGVsbG8sIHdvcmxkIQ=="] },
128
+ );
129
+
130
+ Scenarios.Type_Property_Optional_CollectionsByte_getDefault =
131
+ Type_Property_Optional_Collections_Bytes_Default.get;
132
+ Scenarios.Type_Property_Optional_CollectionsByte_putDefault =
133
+ Type_Property_Optional_Collections_Bytes_Default.put;
134
+ Scenarios.Type_Property_Optional_CollectionsByte_getAll =
135
+ Type_Property_Optional_Collections_Bytes_All.get;
136
+ Scenarios.Type_Property_Optional_CollectionsByte_putAll =
137
+ Type_Property_Optional_Collections_Bytes_All.put;
138
+
139
+ const Type_Property_Optional_Collections_Model_Default = createServerTests(
140
+ `/type/property/optional/collections/model/default`,
141
+ {},
142
+ );
143
+ const Type_Property_Optional_Collections_Model_All = createServerTests(
144
+ `/type/property/optional/collections/model/all`,
145
+ { property: [{ property: "hello" }, { property: "world" }] },
146
+ );
147
+ Scenarios.Type_Property_Optional_CollectionsModel_getDefault =
148
+ Type_Property_Optional_Collections_Model_Default.get;
149
+ Scenarios.Type_Property_Optional_CollectionsModel_putDefault =
150
+ Type_Property_Optional_Collections_Model_Default.put;
151
+ Scenarios.Type_Property_Optional_CollectionsModel_getAll =
152
+ Type_Property_Optional_Collections_Model_All.get;
153
+ Scenarios.Type_Property_Optional_CollectionsModel_putAll =
154
+ Type_Property_Optional_Collections_Model_All.put;
155
+
156
+ const Type_Property_Optional_String_Literal_Default = createServerTests(
157
+ `/type/property/optional/string/literal/default`,
158
+ {},
159
+ );
160
+ const Type_Property_Optional_String_Literal_All = createServerTests(
161
+ `/type/property/optional/string/literal/all`,
162
+ {
163
+ property: "hello",
164
+ },
165
+ );
166
+ Scenarios.Type_Property_Optional_StringLiteral_getDefault =
167
+ Type_Property_Optional_String_Literal_Default.get;
168
+ Scenarios.Type_Property_Optional_StringLiteral_putDefault =
169
+ Type_Property_Optional_String_Literal_Default.put;
170
+ Scenarios.Type_Property_Optional_StringLiteral_getAll =
171
+ Type_Property_Optional_String_Literal_All.get;
172
+ Scenarios.Type_Property_Optional_StringLiteral_putAll =
173
+ Type_Property_Optional_String_Literal_All.put;
174
+
175
+ const Type_Property_Optional_Int_Literal_Default = createServerTests(
176
+ `/type/property/optional/int/literal/default`,
177
+ {},
178
+ );
179
+ const Type_Property_Optional_Int_Literal_All = createServerTests(
180
+ `/type/property/optional/int/literal/all`,
181
+ {
182
+ property: 1,
183
+ },
184
+ );
185
+ Scenarios.Type_Property_Optional_IntLiteral_getDefault =
186
+ Type_Property_Optional_Int_Literal_Default.get;
187
+ Scenarios.Type_Property_Optional_IntLiteral_putDefault =
188
+ Type_Property_Optional_Int_Literal_Default.put;
189
+ Scenarios.Type_Property_Optional_IntLiteral_getAll = Type_Property_Optional_Int_Literal_All.get;
190
+ Scenarios.Type_Property_Optional_IntLiteral_putAll = Type_Property_Optional_Int_Literal_All.put;
191
+
192
+ const Type_Property_Optional_Float_Literal_Default = createServerTests(
193
+ `/type/property/optional/float/literal/default`,
194
+ {},
195
+ );
196
+ const Type_Property_Optional_Float_Literal_All = createServerTests(
197
+ `/type/property/optional/float/literal/all`,
198
+ {
199
+ property: 1.25,
200
+ },
201
+ );
202
+ Scenarios.Type_Property_Optional_FloatLiteral_getDefault =
203
+ Type_Property_Optional_Float_Literal_Default.get;
204
+ Scenarios.Type_Property_Optional_FloatLiteral_putDefault =
205
+ Type_Property_Optional_Float_Literal_Default.put;
206
+ Scenarios.Type_Property_Optional_FloatLiteral_getAll = Type_Property_Optional_Float_Literal_All.get;
207
+ Scenarios.Type_Property_Optional_FloatLiteral_putAll = Type_Property_Optional_Float_Literal_All.put;
208
+
209
+ const Type_Property_Optional_Boolean_Literal_Default = createServerTests(
210
+ `/type/property/optional/boolean/literal/default`,
211
+ {},
212
+ );
213
+ const Type_Property_Optional_Boolean_Literal_All = createServerTests(
214
+ `/type/property/optional/boolean/literal/all`,
215
+ { property: true },
216
+ );
217
+ Scenarios.Type_Property_Optional_BooleanLiteral_getDefault =
218
+ Type_Property_Optional_Boolean_Literal_Default.get;
219
+ Scenarios.Type_Property_Optional_BooleanLiteral_putDefault =
220
+ Type_Property_Optional_Boolean_Literal_Default.put;
221
+ Scenarios.Type_Property_Optional_BooleanLiteral_getAll =
222
+ Type_Property_Optional_Boolean_Literal_All.get;
223
+ Scenarios.Type_Property_Optional_BooleanLiteral_putAll =
224
+ Type_Property_Optional_Boolean_Literal_All.put;
225
+
226
+ const Type_Property_Optional_Union_String_Literal_Default = createServerTests(
227
+ `/type/property/optional/union/string/literal/default`,
228
+ {},
229
+ );
230
+ const Type_Property_Optional_Union_String_Literal_All = createServerTests(
231
+ `/type/property/optional/union/string/literal/all`,
232
+ { property: "world" },
233
+ );
234
+ Scenarios.Type_Property_Optional_UnionStringLiteral_getDefault =
235
+ Type_Property_Optional_Union_String_Literal_Default.get;
236
+ Scenarios.Type_Property_Optional_UnionStringLiteral_putDefault =
237
+ Type_Property_Optional_Union_String_Literal_Default.put;
238
+ Scenarios.Type_Property_Optional_UnionStringLiteral_getAll =
239
+ Type_Property_Optional_Union_String_Literal_All.get;
240
+ Scenarios.Type_Property_Optional_UnionStringLiteral_putAll =
241
+ Type_Property_Optional_Union_String_Literal_All.put;
242
+
243
+ const Type_Property_Optional_Union_Int_Literal_Default = createServerTests(
244
+ `/type/property/optional/union/int/literal/default`,
245
+ {},
246
+ );
247
+ const Type_Property_Optional_Union_Int_Literal_All = createServerTests(
248
+ `/type/property/optional/union/int/literal/all`,
249
+ { property: 2 },
250
+ );
251
+ Scenarios.Type_Property_Optional_UnionIntLiteral_getDefault =
252
+ Type_Property_Optional_Union_Int_Literal_Default.get;
253
+ Scenarios.Type_Property_Optional_UnionIntLiteral_putDefault =
254
+ Type_Property_Optional_Union_Int_Literal_Default.put;
255
+ Scenarios.Type_Property_Optional_UnionIntLiteral_getAll =
256
+ Type_Property_Optional_Union_Int_Literal_All.get;
257
+ Scenarios.Type_Property_Optional_UnionIntLiteral_putAll =
258
+ Type_Property_Optional_Union_Int_Literal_All.put;
259
+
260
+ const Type_Property_Optional_Union_Float_Literal_Default = createServerTests(
261
+ `/type/property/optional/union/float/literal/default`,
262
+ {},
263
+ );
264
+ const Type_Property_Optional_Union_Float_Literal_All = createServerTests(
265
+ `/type/property/optional/union/float/literal/all`,
266
+ { property: 2.375 },
267
+ );
268
+ Scenarios.Type_Property_Optional_UnionFloatLiteral_getDefault =
269
+ Type_Property_Optional_Union_Float_Literal_Default.get;
270
+ Scenarios.Type_Property_Optional_UnionFloatLiteral_putDefault =
271
+ Type_Property_Optional_Union_Float_Literal_Default.put;
272
+ Scenarios.Type_Property_Optional_UnionFloatLiteral_getAll =
273
+ Type_Property_Optional_Union_Float_Literal_All.get;
274
+ Scenarios.Type_Property_Optional_UnionFloatLiteral_putAll =
275
+ Type_Property_Optional_Union_Float_Literal_All.put;
276
+
277
+ const Type_Property_Optional_Required_And_Optional_RequiredOnly = createServerTests(
278
+ `/type/property/optional/requiredAndOptional/requiredOnly`,
279
+ { requiredProperty: 42 },
280
+ );
281
+ Scenarios.Type_Property_Optional_RequiredAndOptional_getRequiredOnly =
282
+ Type_Property_Optional_Required_And_Optional_RequiredOnly.get;
283
+ Scenarios.Type_Property_Optional_RequiredAndOptional_putRequiredOnly =
284
+ Type_Property_Optional_Required_And_Optional_RequiredOnly.put;
285
+
286
+ const Type_Property_Optional_Required_And_Optional_All = createServerTests(
287
+ `/type/property/optional/requiredAndOptional/all`,
288
+ {
289
+ optionalProperty: "hello",
290
+ requiredProperty: 42,
291
+ },
292
+ );
293
+ Scenarios.Type_Property_Optional_RequiredAndOptional_getAll =
294
+ Type_Property_Optional_Required_And_Optional_All.get;
295
+ Scenarios.Type_Property_Optional_RequiredAndOptional_putAll =
296
+ Type_Property_Optional_Required_And_Optional_All.put;
@@ -0,0 +1,244 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Illustrates various property types for models")
8
+ @scenarioService("/type/property/value-types")
9
+ namespace Type.Property.ValueTypes;
10
+
11
+ // TEMPLATES
12
+ @doc("Template type for testing models with specific properties. Pass in the type of the property you are looking for")
13
+ model ModelTemplate<TProperty> {
14
+ @doc("Property")
15
+ property: TProperty;
16
+ }
17
+
18
+ @doc("Template to have models operations")
19
+ interface ModelOperations<TModel, TDoc extends valueof string> {
20
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing"
21
+ @scenario
22
+ @scenarioDoc("""
23
+ Expected response body:
24
+ ```json
25
+ {"property": ${TDoc}}
26
+ ```
27
+ """)
28
+ @get
29
+ @doc("Get call")
30
+ get(): TModel;
31
+
32
+ #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing"
33
+ @scenario
34
+ @scenarioDoc("""
35
+ Expected input body:
36
+ ```json
37
+ {"property": ${TDoc}}
38
+ ```
39
+ """)
40
+ @put
41
+ @doc("Put operation")
42
+ put(@body @doc("body") body: TModel): void;
43
+ }
44
+
45
+ // Test a model with a boolean property
46
+ @doc("Model with a boolean property")
47
+ model BooleanProperty is ModelTemplate<boolean>;
48
+ @route("/boolean")
49
+ interface Boolean extends ModelOperations<BooleanProperty, "true"> {}
50
+
51
+ // Test a model with a string property
52
+ @doc("Model with a string property")
53
+ model StringProperty is ModelTemplate<string>;
54
+ @route("/string")
55
+ interface String extends ModelOperations<StringProperty, "\"hello\""> {}
56
+
57
+ // Test a model with a bytes property
58
+ @doc("Model with a bytes property")
59
+ model BytesProperty is ModelTemplate<bytes>;
60
+ @route("/bytes")
61
+ interface Bytes extends ModelOperations<BytesProperty, "aGVsbG8sIHdvcmxkIQ=="> {}
62
+
63
+ // Test a model with an int property
64
+ @doc("Model with a int property")
65
+ model IntProperty is ModelTemplate<int32>;
66
+ @route("/int")
67
+ interface Int extends ModelOperations<IntProperty, "42"> {}
68
+
69
+ // Test a model with a float property
70
+ @doc("Model with a float property")
71
+ model FloatProperty is ModelTemplate<float32>;
72
+ @route("/float")
73
+ interface Float extends ModelOperations<FloatProperty, "43.125"> {}
74
+
75
+ // Test a model with a decimal property
76
+ @doc("Model with a decimal property")
77
+ model DecimalProperty is ModelTemplate<decimal>;
78
+ @route("/decimal")
79
+ interface Decimal extends ModelOperations<DecimalProperty, "0.33333"> {}
80
+
81
+ // Test a model with a decimal128 property
82
+ @doc("Model with a decimal128 property")
83
+ model Decimal128Property is ModelTemplate<decimal128>;
84
+ @route("/decimal128")
85
+ interface Decimal128 extends ModelOperations<Decimal128Property, "0.33333"> {}
86
+
87
+ // Test a model with a datetime property
88
+ @doc("Model with a datetime property")
89
+ model DatetimeProperty is ModelTemplate<utcDateTime>;
90
+ @route("/datetime")
91
+ interface Datetime extends ModelOperations<DatetimeProperty, "2022-08-26T18:38:00Z"> {}
92
+
93
+ // Test a model with a duration property
94
+ @doc("Model with a duration property")
95
+ model DurationProperty is ModelTemplate<duration>;
96
+ @route("/duration")
97
+ interface Duration extends ModelOperations<DurationProperty, "P123DT22H14M12.011S"> {}
98
+
99
+ // Test a model with an enum property
100
+ @doc("Enum that will be used as a property for model EnumProperty. Extensible.")
101
+ union InnerEnum {
102
+ string,
103
+
104
+ @doc("First value.")
105
+ ValueOne: "ValueOne",
106
+
107
+ @doc("Second value.")
108
+ ValueTwo: "ValueTwo",
109
+ }
110
+
111
+ @doc("Enum that will be used as a property for model EnumProperty. Non-extensible.")
112
+ enum FixedInnerEnum {
113
+ @doc("First value.")
114
+ ValueOne,
115
+
116
+ @doc("Second value.")
117
+ ValueTwo,
118
+ }
119
+
120
+ @doc("Model with enum properties")
121
+ model EnumProperty is ModelTemplate<FixedInnerEnum>;
122
+ @route("/enum")
123
+ interface Enum extends ModelOperations<EnumProperty, "\"ValueOne\""> {}
124
+
125
+ @doc("Model with extensible enum properties")
126
+ model ExtensibleEnumProperty is ModelTemplate<InnerEnum>;
127
+ @route("/extensible-enum")
128
+ interface ExtensibleEnum extends ModelOperations<ExtensibleEnumProperty, "\"UnknownValue\""> {}
129
+
130
+ // Test a model with a model property
131
+ @doc("Inner model. Will be a property type for ModelWithModelProperties")
132
+ model InnerModel {
133
+ @doc("Required string property")
134
+ property: string;
135
+ }
136
+ @doc("Model with model properties")
137
+ model ModelProperty is ModelTemplate<InnerModel>;
138
+ @route("/model")
139
+ interface Model extends ModelOperations<ModelProperty, "{'property': 'hello'}"> {}
140
+
141
+ // Test a model with a string collection property
142
+ @doc("Model with collection string properties")
143
+ model CollectionsStringProperty is ModelTemplate<string[]>;
144
+ @route("/collections/string")
145
+ interface CollectionsString
146
+ extends ModelOperations<CollectionsStringProperty, "['hello', 'world']"> {}
147
+
148
+ // Test a model with an int collection property
149
+ @doc("Model with collection int properties")
150
+ model CollectionsIntProperty is ModelTemplate<int32[]>;
151
+ @route("/collections/int")
152
+ interface CollectionsInt extends ModelOperations<CollectionsIntProperty, "[1, 2]"> {}
153
+
154
+ // Test a model with a model collection property
155
+ @doc("Model with collection model properties")
156
+ model CollectionsModelProperty is ModelTemplate<InnerModel[]>;
157
+ @route("/collections/model")
158
+ interface CollectionsModel
159
+ extends ModelOperations<
160
+ CollectionsModelProperty,
161
+ "[{'property': 'hello'}, {'property': 'world'}]"
162
+ > {}
163
+
164
+ // Test a model with a string dictionary property
165
+ @doc("Model with dictionary string properties")
166
+ model DictionaryStringProperty is ModelTemplate<Record<string>>;
167
+ @route("/dictionary/string")
168
+ interface DictionaryString
169
+ extends ModelOperations<DictionaryStringProperty, "{'k1': 'hello', 'k2': 'world'}"> {}
170
+
171
+ // Test a model with a never property
172
+ @doc("Model with a property never. (This property should not be included).")
173
+ model NeverProperty is ModelTemplate<never>;
174
+ @route("/never")
175
+ interface Never extends ModelOperations<NeverProperty, "<don't include this property>"> {}
176
+
177
+ // Test a model with unknown and string
178
+ @doc("Model with a property unknown, and the data is a string.")
179
+ model UnknownStringProperty is ModelTemplate<unknown>;
180
+ @route("/unknown/string")
181
+ interface UnknownString extends ModelOperations<UnknownStringProperty, "\"hello\""> {}
182
+
183
+ // Test a model with unknown and int
184
+ @doc("Model with a property unknown, and the data is a int32.")
185
+ model UnknownIntProperty is ModelTemplate<unknown>;
186
+ @route("/unknown/int")
187
+ interface UnknownInt extends ModelOperations<UnknownIntProperty, "42"> {}
188
+
189
+ // Test a model with unknown and a dictionnary
190
+ @doc("Model with a property unknown, and the data is a dictionnary.")
191
+ model UnknownDictProperty is ModelTemplate<unknown>;
192
+ @route("/unknown/dict")
193
+ interface UnknownDict extends ModelOperations<UnknownDictProperty, "{'k1': 'hello', 'k2': 42}"> {}
194
+
195
+ // Test a model with unknown and an array
196
+ @doc("Model with a property unknown, and the data is an array.")
197
+ model UnknownArrayProperty is ModelTemplate<unknown>;
198
+ @route("/unknown/array")
199
+ interface UnknownArray extends ModelOperations<UnknownArrayProperty, "['hello', 'world']"> {}
200
+
201
+ @doc("Model with a string literal property.")
202
+ model StringLiteralProperty is ModelTemplate<"hello">;
203
+ @route("/string/literal")
204
+ interface StringLiteral extends ModelOperations<StringLiteralProperty, "\"hello\""> {}
205
+
206
+ @doc("Model with a int literal property.")
207
+ model IntLiteralProperty is ModelTemplate<42>;
208
+ @route("/int/literal")
209
+ interface IntLiteral extends ModelOperations<IntLiteralProperty, "42"> {}
210
+
211
+ @doc("Model with a float literal property.")
212
+ model FloatLiteralProperty is ModelTemplate<43.125>;
213
+ @route("/float/literal")
214
+ interface FloatLiteral extends ModelOperations<FloatLiteralProperty, "43.125"> {}
215
+
216
+ @doc("Model with a boolean literal property.")
217
+ model BooleanLiteralProperty is ModelTemplate<true>;
218
+ @route("/boolean/literal")
219
+ interface BooleanLiteral extends ModelOperations<BooleanLiteralProperty, "true"> {}
220
+
221
+ @doc("Model with a union of string literal as property.")
222
+ model UnionStringLiteralProperty is ModelTemplate<"hello" | "world">;
223
+ @route("/union/string/literal")
224
+ interface UnionStringLiteral extends ModelOperations<UnionStringLiteralProperty, "\"world\""> {}
225
+
226
+ @doc("Model with a union of int literal as property.")
227
+ model UnionIntLiteralProperty is ModelTemplate<42 | 43>;
228
+ @route("/union/int/literal")
229
+ interface UnionIntLiteral extends ModelOperations<UnionIntLiteralProperty, "42"> {}
230
+
231
+ @doc("Model with a union of float literal as property.")
232
+ model UnionFloatLiteralProperty is ModelTemplate<43.125 | 46.875>;
233
+ @route("/union/float/literal")
234
+ interface UnionFloatLiteral extends ModelOperations<UnionFloatLiteralProperty, "46.875"> {}
235
+
236
+ union ExtendedEnum {
237
+ string,
238
+ EnumValue2: "value2",
239
+ }
240
+
241
+ model UnionEnumValueProperty is ModelTemplate<ExtendedEnum.EnumValue2>;
242
+
243
+ @route("/union-enum-value")
244
+ interface UnionEnumValue extends ModelOperations<UnionEnumValueProperty, "\"value2\""> {}