@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,3 @@
1
+ # HTTP Test scenarios
2
+
3
+ **_Pending_**
@@ -0,0 +1,40 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @scenarioService("/authentication/api-key")
8
+ @doc("Illustrates clients generated with ApiKey authentication.")
9
+ @useAuth(ApiKeyAuth<ApiKeyLocation.header, "x-ms-api-key">)
10
+ namespace Authentication.ApiKey;
11
+
12
+ @scenario
13
+ @scenarioDoc("Expects header 'x-ms-api-key': 'valid-key'")
14
+ @doc("Check whether client is authenticated")
15
+ @get
16
+ @route("/valid")
17
+ op valid(): NoContentResponse;
18
+
19
+ @scenario
20
+ @scenarioDoc("""
21
+ Expect error code 403 and error body:
22
+ ```json
23
+ {
24
+ "error": {
25
+ "code": "InvalidApiKey",
26
+ "message": "API key is invalid"
27
+ }
28
+ }
29
+ ```
30
+ """)
31
+ @doc("Check whether client is authenticated.")
32
+ @get
33
+ @route("/invalid")
34
+ op invalid(): NoContentResponse | InvalidAuth;
35
+
36
+ @error
37
+ model InvalidAuth {
38
+ @statusCode _: 403;
39
+ error: string;
40
+ }
@@ -0,0 +1,35 @@
1
+ import { json, passOnCode, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Authentication_ApiKey_invalid = passOnCode(403, {
6
+ uri: `/authentication/api-key/invalid`,
7
+ method: `get`,
8
+ request: {
9
+ headers: {
10
+ "x-ms-api-key": "valid-key",
11
+ },
12
+ status: 403,
13
+ },
14
+ response: {
15
+ status: 403,
16
+ body: json({
17
+ error: "invalid-api-key",
18
+ }),
19
+ },
20
+ kind: "MockApiDefinition",
21
+ });
22
+
23
+ Scenarios.Authentication_ApiKey_valid = passOnSuccess({
24
+ uri: `/authentication/api-key/valid`,
25
+ method: `get`,
26
+ request: {
27
+ headers: {
28
+ "x-ms-api-key": "valid-key",
29
+ },
30
+ },
31
+ response: {
32
+ status: 204,
33
+ },
34
+ kind: "MockApiDefinition",
35
+ });
@@ -0,0 +1,40 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using TypeSpec.Http;
5
+ using Spector;
6
+
7
+ @scenarioService("/authentication/http/custom")
8
+ @doc("Illustrates clients generated with generic HTTP auth.")
9
+ @useAuth({
10
+ type: AuthType.http,
11
+ scheme: "SharedAccessKey",
12
+ })
13
+ namespace Authentication.Http.Custom;
14
+
15
+ @scenario
16
+ @scenarioDoc("Expects header 'Authorization': 'SharedAccessKey valid-key'")
17
+ @doc("Check whether client is authenticated")
18
+ @get
19
+ @route("/valid")
20
+ op valid(): NoContentResponse;
21
+
22
+ @scenario
23
+ @scenarioDoc("""
24
+ Expect error code 403 and error body:
25
+ ```json
26
+ {
27
+ "error": "invalid-api-key"
28
+ }
29
+ ```
30
+ """)
31
+ @doc("Check whether client is authenticated.")
32
+ @get
33
+ @route("/invalid")
34
+ op invalid(): NoContentResponse | InvalidAuth;
35
+
36
+ @error
37
+ model InvalidAuth {
38
+ @statusCode _: 403;
39
+ error: string;
40
+ }
@@ -0,0 +1,35 @@
1
+ import { json, passOnCode, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Authentication_Http_Custom_valid = passOnSuccess({
6
+ uri: `/authentication/http/custom/valid`,
7
+ method: "get",
8
+ request: {
9
+ headers: {
10
+ authorization: "SharedAccessKey valid-key",
11
+ },
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+
19
+ Scenarios.Authentication_Http_Custom_invalid = passOnCode(403, {
20
+ uri: `/authentication/http/custom/invalid`,
21
+ method: "get",
22
+ request: {
23
+ headers: {
24
+ authorization: "SharedAccessKey invalid-key",
25
+ },
26
+ status: 403,
27
+ },
28
+ response: {
29
+ status: 403,
30
+ body: json({
31
+ error: "invalid-api-key",
32
+ }),
33
+ },
34
+ kind: "MockApiDefinition",
35
+ });
@@ -0,0 +1,45 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @scenarioService("/authentication/oauth2")
8
+ @doc("Illustrates clients generated with OAuth2 authentication.")
9
+ @useAuth(OAuth2Auth<[MyFlow]>)
10
+ namespace Authentication.OAuth2;
11
+
12
+ model MyFlow {
13
+ type: OAuth2FlowType.implicit;
14
+ authorizationUrl: "https://login.microsoftonline.com/common/oauth2/authorize";
15
+ scopes: ["https://security.microsoft.com/.default"];
16
+ }
17
+
18
+ @scenario
19
+ @scenarioDoc("Expects header 'authorization': 'Bearer https://security.microsoft.com/.default'")
20
+ @doc("Check whether client is authenticated")
21
+ @get
22
+ @route("/valid")
23
+ op valid(): NoContentResponse;
24
+
25
+ @scenario
26
+ @scenarioDoc("""
27
+ Expect error code 400 and error body:
28
+ ```json
29
+ {
30
+ "message": "Expected Bearer x but got Bearer y",
31
+ "expected": "Bearer x",
32
+ "actual": "Bearer y",
33
+ }
34
+ ```
35
+ """)
36
+ @doc("Check whether client is authenticated. Will return an invalid bearer error.")
37
+ @get
38
+ @route("/invalid")
39
+ op invalid(): NoContentResponse | InvalidAuth;
40
+
41
+ @error
42
+ model InvalidAuth {
43
+ @statusCode _: 403;
44
+ error: string;
45
+ }
@@ -0,0 +1,32 @@
1
+ import { json, passOnCode, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Authentication_OAuth2_valid = passOnSuccess({
6
+ uri: `/authentication/oauth2/valid`,
7
+ method: "get",
8
+ request: {
9
+ headers: {
10
+ authorization: "Bearer https://security.microsoft.com/.default",
11
+ },
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+
19
+ Scenarios.Authentication_OAuth2_invalid = passOnCode(403, {
20
+ uri: `/authentication/oauth2/invalid`,
21
+ method: "get",
22
+ request: {
23
+ status: 403,
24
+ },
25
+ response: {
26
+ status: 403,
27
+ body: json({
28
+ error: "invalid-grant",
29
+ }),
30
+ },
31
+ kind: "MockApiDefinition",
32
+ });
@@ -0,0 +1,30 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @scenarioService("/authentication/union")
8
+ @doc("Illustrates clients generated with ApiKey and OAuth2 authentication.")
9
+ @useAuth(ApiKeyAuth<ApiKeyLocation.header, "x-ms-api-key"> | OAuth2Auth<[MyFlow]>)
10
+ namespace Authentication.Union;
11
+
12
+ model MyFlow {
13
+ type: OAuth2FlowType.implicit;
14
+ authorizationUrl: "https://login.microsoftonline.com/common/oauth2/authorize";
15
+ scopes: ["https://security.microsoft.com/.default"];
16
+ }
17
+
18
+ @scenario
19
+ @scenarioDoc("Expects header 'x-ms-api-key': 'valid-key'")
20
+ @doc("Check whether client is authenticated")
21
+ @get
22
+ @route("/validkey")
23
+ op validKey(): NoContentResponse;
24
+
25
+ @scenario
26
+ @scenarioDoc("Expects header 'authorization': 'Bearer https://security.microsoft.com/.default'")
27
+ @doc("Check whether client is authenticated")
28
+ @get
29
+ @route("/validtoken")
30
+ op validToken(): NoContentResponse;
@@ -0,0 +1,31 @@
1
+ import { passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Authentication_Union_validKey = passOnSuccess({
6
+ uri: `/authentication/union/validkey`,
7
+ method: "get",
8
+ request: {
9
+ headers: {
10
+ "x-ms-api-key": "valid-key",
11
+ },
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+
19
+ Scenarios.Authentication_Union_validToken = passOnSuccess({
20
+ uri: `/authentication/union/validtoken`,
21
+ method: "get",
22
+ request: {
23
+ headers: {
24
+ authorization: "Bearer https://security.microsoft.com/.default",
25
+ },
26
+ },
27
+ response: {
28
+ status: 204,
29
+ },
30
+ kind: "MockApiDefinition",
31
+ });
@@ -0,0 +1,363 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test for encode decorator on bytes.")
8
+ @scenarioService("/encode/bytes")
9
+ namespace Encode.Bytes;
10
+
11
+ @encode(BytesKnownEncoding.base64url)
12
+ scalar base64urlBytes extends bytes;
13
+
14
+ @route("/query")
15
+ namespace Query {
16
+ @route("/default")
17
+ @scenario
18
+ @scenarioDoc("""
19
+ Test default encode (base64) for bytes query parameter.
20
+ Expected query parameter:
21
+ value=dGVzdA== (base64 encode of test)
22
+ """)
23
+ op default(
24
+ @query
25
+ value: bytes,
26
+ ): NoContentResponse;
27
+
28
+ @route("/base64")
29
+ @scenario
30
+ @scenarioDoc("""
31
+ Test base64 encode for bytes query parameter.
32
+ Expected query parameter:
33
+ value=dGVzdA== (base64 encode of test)
34
+ """)
35
+ op base64(
36
+ @query
37
+ @encode(BytesKnownEncoding.base64)
38
+ value: bytes,
39
+ ): NoContentResponse;
40
+
41
+ @route("/base64url")
42
+ @scenario
43
+ @scenarioDoc("""
44
+ Test base64url encode for bytes query parameter.
45
+ Expected query parameter:
46
+ value=dGVzdA (base64url encode of test)
47
+ """)
48
+ op base64url(
49
+ @query
50
+ @encode(BytesKnownEncoding.base64url)
51
+ value: bytes,
52
+ ): NoContentResponse;
53
+
54
+ @route("/base64url-array")
55
+ @scenario
56
+ @scenarioDoc("""
57
+ Test base64url encode for bytes array query parameter.
58
+ Expected query parameter:
59
+ value=dGVzdA, dGVzdA
60
+ """)
61
+ op base64urlArray(
62
+ #suppress "deprecated" "Deprecated in next release"
63
+ @query({
64
+ format: "csv",
65
+ })
66
+ value: base64urlBytes[],
67
+ ): NoContentResponse;
68
+ }
69
+
70
+ model DefaultBytesProperty {
71
+ value: bytes;
72
+ }
73
+
74
+ model Base64BytesProperty {
75
+ @encode(BytesKnownEncoding.base64)
76
+ value: bytes;
77
+ }
78
+
79
+ model Base64urlBytesProperty {
80
+ @encode(BytesKnownEncoding.base64url)
81
+ value: bytes;
82
+ }
83
+
84
+ model Base64urlArrayBytesProperty {
85
+ value: base64urlBytes[];
86
+ }
87
+
88
+ @route("/property")
89
+ namespace Property {
90
+ @route("/default")
91
+ @scenario
92
+ @scenarioDoc("""
93
+ Test operation with request and response model contains bytes properties with default encode (base64).
94
+ Expected request body:
95
+ ```json
96
+ {
97
+ "value": "dGVzdA==" // base64 encode of test
98
+ }
99
+ ```
100
+ Expected response body:
101
+ ```json
102
+ {
103
+ "value": "dGVzdA=="
104
+ }
105
+ ```
106
+ """)
107
+ @post
108
+ op default(@body body: DefaultBytesProperty): DefaultBytesProperty;
109
+
110
+ @route("/base64")
111
+ @scenario
112
+ @scenarioDoc("""
113
+ Test operation with request and response model contains bytes properties with base64 encode.
114
+ Expected request body:
115
+ ```json
116
+ {
117
+ "value": "dGVzdA==" // base64 encode of test
118
+ }
119
+ ```
120
+ Expected response body:
121
+ ```json
122
+ {
123
+ "value": "dGVzdA=="
124
+ }
125
+ ```
126
+ """)
127
+ @post
128
+ op base64(@body body: Base64BytesProperty): Base64BytesProperty;
129
+
130
+ @route("/base64url")
131
+ @scenario
132
+ @scenarioDoc("""
133
+ Test operation with request and response model contains bytes properties with base64url encode.
134
+ Expected request body:
135
+ ```json
136
+ {
137
+ "value": "dGVzdA" // base64url encode of test
138
+ }
139
+ ```
140
+ Expected response body:
141
+ ```json
142
+ {
143
+ "value": "dGVzdA"
144
+ }
145
+ ```
146
+ """)
147
+ @post
148
+ op base64url(@body body: Base64urlBytesProperty): Base64urlBytesProperty;
149
+
150
+ @route("/base64url-array")
151
+ @scenario
152
+ @scenarioDoc("""
153
+ Test operation with request and response model contains bytes array properties with base64url encode.
154
+ Expected request body:
155
+ ```json
156
+ {
157
+ "value": ["dGVzdA", "dGVzdA"]
158
+ }
159
+ ```
160
+ Expected response body:
161
+ ```json
162
+ {
163
+ "value": ["dGVzdA", "dGVzdA"]
164
+ }
165
+ ```
166
+ """)
167
+ @post
168
+ op base64urlArray(@body body: Base64urlArrayBytesProperty): Base64urlArrayBytesProperty;
169
+ }
170
+
171
+ @route("/header")
172
+ namespace Header {
173
+ @route("/default")
174
+ @scenario
175
+ @scenarioDoc("""
176
+ Test default encode (base64) for bytes header.
177
+ Expected header:
178
+ value=dGVzdA== (base64 encode of test)
179
+ """)
180
+ op default(
181
+ @header
182
+ value: bytes,
183
+ ): NoContentResponse;
184
+
185
+ @route("/base64")
186
+ @scenario
187
+ @scenarioDoc("""
188
+ Test base64 encode for bytes header.
189
+ Expected header:
190
+ value=dGVzdA== (base64 encode of test)
191
+ """)
192
+ op base64(
193
+ @header
194
+ @encode(BytesKnownEncoding.base64)
195
+ value: bytes,
196
+ ): NoContentResponse;
197
+
198
+ @route("/base64url")
199
+ @scenario
200
+ @scenarioDoc("""
201
+ Test base64url encode for bytes header.
202
+ Expected header:
203
+ value=dGVzdA (base64url encode of test)
204
+ """)
205
+ op base64url(
206
+ @header
207
+ @encode(BytesKnownEncoding.base64url)
208
+ value: bytes,
209
+ ): NoContentResponse;
210
+
211
+ @route("/base64url-array")
212
+ @scenario
213
+ @scenarioDoc("""
214
+ Test base64url encode for bytes array header.
215
+ Expected header:
216
+ value=dGVzdA,dGVzdA
217
+ """)
218
+ op base64urlArray(
219
+ @header({
220
+ format: "csv",
221
+ })
222
+ value: base64urlBytes[],
223
+ ): NoContentResponse;
224
+ }
225
+
226
+ @route("/body/request")
227
+ namespace RequestBody {
228
+ @route("/default")
229
+ @scenario
230
+ @scenarioDoc("""
231
+ Test default encode (base64) for bytes in a json body.
232
+ Expected body:
233
+ "dGVzdA==" (base64 encode of test, in JSON string)
234
+ """)
235
+ @post
236
+ op default(
237
+ @body
238
+ value: bytes,
239
+ ): NoContentResponse;
240
+
241
+ @route("/octet-stream")
242
+ @scenario
243
+ @scenarioDoc("""
244
+ When content type is application/octet-stream and body is `bytes` the payload is a binary file.
245
+ File should match packages/cadl-ranch-specs/assets/image.png
246
+ """)
247
+ @post
248
+ op octetStream(
249
+ @header
250
+ contentType: "application/octet-stream",
251
+
252
+ @body
253
+ value: bytes,
254
+ ): NoContentResponse;
255
+
256
+ @route("/custom-content-type")
257
+ @scenario
258
+ @scenarioDoc("""
259
+ When content type is a custom type(image/png here) and body is `bytes` the payload is a binary file.
260
+ File should match packages/cadl-ranch-specs/assets/image.png
261
+ """)
262
+ @post
263
+ op customContentType(
264
+ @header
265
+ contentType: "image/png",
266
+
267
+ @body
268
+ value: bytes,
269
+ ): NoContentResponse;
270
+
271
+ @route("/base64")
272
+ @scenario
273
+ @scenarioDoc("""
274
+ Test base64 encode for bytes body.
275
+ Expected body:
276
+ "dGVzdA==" (base64 encode of test, in JSON string)
277
+ """)
278
+ @post
279
+ op base64(
280
+ @body
281
+ @encode(BytesKnownEncoding.base64)
282
+ value: bytes,
283
+ ): NoContentResponse;
284
+
285
+ @route("/base64url")
286
+ @scenario
287
+ @scenarioDoc("""
288
+ Test base64url encode for bytes body.
289
+ Expected body:
290
+ "dGVzdA" (base64url encode of test, in JSON string)
291
+ """)
292
+ @post
293
+ op base64url(
294
+ @body
295
+ @encode(BytesKnownEncoding.base64url)
296
+ value: bytes,
297
+ ): NoContentResponse;
298
+ }
299
+
300
+ @route("/body/response")
301
+ namespace ResponseBody {
302
+ @route("/default")
303
+ @scenario
304
+ @scenarioDoc("""
305
+ Test default encode (base64) for bytes in a json body.
306
+ Expected body:
307
+ "dGVzdA==" (base64 encode of test, in JSON string)
308
+ """)
309
+ op default(): {
310
+ @body
311
+ value: bytes;
312
+ };
313
+
314
+ @route("/octet-stream")
315
+ @scenario
316
+ @scenarioDoc("""
317
+ When content type is application/octet-stream and body is `bytes` the payload is a binary file.
318
+ File should match packages/cadl-ranch-specs/assets/image.png
319
+ """)
320
+ op octetStream(): {
321
+ @header
322
+ contentType: "application/octet-stream";
323
+
324
+ @body
325
+ value: bytes;
326
+ };
327
+
328
+ @route("/custom-content-type")
329
+ @scenario
330
+ @scenarioDoc("""
331
+ When content type is a custom type(image/png here) and body is `bytes` the payload is a binary file.
332
+ File should match packages/cadl-ranch-specs/assets/image.png
333
+ """)
334
+ op customContentType(): {
335
+ @header
336
+ contentType: "image/png";
337
+
338
+ @body
339
+ value: bytes;
340
+ };
341
+
342
+ @route("/base64")
343
+ @scenario
344
+ @scenarioDoc("""
345
+ Test base64 encode for bytes body.
346
+ Expected body:
347
+ "dGVzdA==" (base64 encode of test, in JSON string)
348
+ """)
349
+ op base64(): {
350
+ @body
351
+ @encode(BytesKnownEncoding.base64)
352
+ value: bytes;
353
+ };
354
+
355
+ @route("/base64url")
356
+ @scenario
357
+ @scenarioDoc("""
358
+ Test base64url encode for bytes body.
359
+ Expected body:
360
+ "dGVzdA" (base64url encode of test, in JSON string)
361
+ """)
362
+ op base64url(): base64urlBytes;
363
+ }