@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,34 @@
1
+ import { json, MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Serialization_EncodedName_Json_Property_send = passOnSuccess({
6
+ uri: "/serialization/encoded-name/json/property",
7
+ method: "post",
8
+ request: { body: { wireName: true } },
9
+ response: { status: 204 },
10
+ handler: (req: MockRequest) => {
11
+ req.expect.bodyEquals({ wireName: true });
12
+ return {
13
+ status: 204,
14
+ };
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+
19
+ Scenarios.Serialization_EncodedName_Json_Property_get = passOnSuccess({
20
+ uri: "/serialization/encoded-name/json/property",
21
+ method: "get",
22
+ request: {},
23
+ response: {
24
+ status: 200,
25
+ body: json({ wireName: true }),
26
+ },
27
+ handler: (req: MockRequest) => {
28
+ return {
29
+ status: 200,
30
+ body: json({ wireName: true }),
31
+ };
32
+ },
33
+ kind: "MockApiDefinition",
34
+ });
@@ -0,0 +1,19 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+
6
+ /**
7
+ * Illustrates server doesn't define endpoint. Client should automatically add an endpoint to let user pass in.
8
+ */
9
+ @route("/server/endpoint/not-defined")
10
+ @service({
11
+ title: "Testserver without any endpoint",
12
+ })
13
+ namespace Server.Endpoint.NotDefined;
14
+
15
+ @scenario
16
+ @scenarioDoc("A simple operation in a server without defining a endpoint. Expected uri: '<endpoint you start cadl-ranch>/valid'")
17
+ @route("/valid")
18
+ @head
19
+ op valid(): OkResponse;
@@ -0,0 +1,16 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Server_Endpoint_NotDefined_valid = passOnSuccess({
6
+ uri: "/server/endpoint/not-defined/valid",
7
+ method: "head",
8
+ request: {},
9
+ response: {
10
+ status: 200,
11
+ },
12
+ handler: (req: MockRequest) => {
13
+ return { status: 200 };
14
+ },
15
+ kind: "MockApiDefinition",
16
+ });
@@ -0,0 +1,46 @@
1
+ import "@typespec/rest";
2
+ import "@typespec/spec-lib";
3
+ import "@typespec/versioning";
4
+
5
+ using TypeSpec.Http;
6
+ using TypeSpec.Versioning;
7
+ using TypeSpec.Rest;
8
+
9
+ @versioned(Versions)
10
+ @service({
11
+ title: "ServerPathMultiple",
12
+ })
13
+ @server(
14
+ "{endpoint}/server/path/multiple/{apiVersion}",
15
+ "Test server with path parameters.",
16
+ {
17
+ @doc("Pass in http://localhost:3000 for endpoint.")
18
+ endpoint: url,
19
+
20
+ @doc("Pass in v1.0 for API version.")
21
+ apiVersion: Versions,
22
+ }
23
+ )
24
+ namespace Server.Path.Multiple;
25
+
26
+ @doc("Service versions")
27
+ enum Versions {
28
+ @doc("Version 1.0")
29
+ v1_0: "v1.0",
30
+ }
31
+
32
+ @scenario
33
+ @scenarioDoc("""
34
+ Operation with client path parameters.
35
+
36
+ Expected path parameter: apiVersion=v1.0
37
+ """)
38
+ op noOperationParams(): NoContentResponse;
39
+
40
+ @scenario
41
+ @scenarioDoc("""
42
+ Operation with client and method path parameters.
43
+
44
+ Expected path parameter: apiVersion=v1.0, keyword=test
45
+ """)
46
+ op withOperationPathParam(@path keyword: string): NoContentResponse;
@@ -0,0 +1,29 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Server_Path_Multiple_noOperationParams = passOnSuccess({
6
+ uri: "/server/path/multiple/v1.0",
7
+ method: "get",
8
+ request: {},
9
+ response: {
10
+ status: 204,
11
+ },
12
+ handler: (req: MockRequest) => {
13
+ return { status: 204 };
14
+ },
15
+ kind: "MockApiDefinition",
16
+ });
17
+
18
+ Scenarios.Server_Path_Multiple_withOperationPathParam = passOnSuccess({
19
+ uri: "/server/path/multiple/v1.0/test",
20
+ method: "get",
21
+ request: {},
22
+ response: {
23
+ status: 204,
24
+ },
25
+ handler: (req: MockRequest) => {
26
+ return { status: 204 };
27
+ },
28
+ kind: "MockApiDefinition",
29
+ });
@@ -0,0 +1,23 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+
6
+ @doc("Illustrates server with a single path parameter @server")
7
+ @service
8
+ @server(
9
+ "{endpoint}",
10
+ "Testserver endpoint",
11
+ {
12
+ @doc("Need to be set as 'http://localhost:3000' in client.")
13
+ endpoint: url,
14
+ }
15
+ )
16
+ @route("/server/path/single")
17
+ namespace Server.Path.Single;
18
+
19
+ @scenario
20
+ @scenarioDoc("An simple operation in a parameterized server.")
21
+ @route("/myOp")
22
+ @head
23
+ op myOp(): OkResponse;
@@ -0,0 +1,16 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Server_Path_Single_myOp = passOnSuccess({
6
+ uri: "/server/path/single/myOp",
7
+ method: "head",
8
+ request: {},
9
+ response: {
10
+ status: 200,
11
+ },
12
+ handler: (req: MockRequest) => {
13
+ return { status: 200 };
14
+ },
15
+ kind: "MockApiDefinition",
16
+ });
@@ -0,0 +1,39 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+
6
+ /**
7
+ * Illustrates not-versioned server.
8
+ */
9
+ @service
10
+ @server(
11
+ "{endpoint}",
12
+ "Testserver endpoint",
13
+ {
14
+ /**
15
+ * Need to be set as 'http://localhost:3000' in client.
16
+ */
17
+ endpoint: url,
18
+ }
19
+ )
20
+ @route("/server/versions/not-versioned")
21
+ namespace Server.Versions.NotVersioned;
22
+
23
+ @scenario
24
+ @scenarioDoc("A simple operation without api-version. Expected url: '/without-api-version', it should not contain any api-version.")
25
+ @route("/without-api-version")
26
+ @head
27
+ op withoutApiVersion(): OkResponse;
28
+
29
+ @scenario
30
+ @scenarioDoc("A simple operation with query api-version, which doesn't have any default value. Expected url: '/with-query-api-version?api-version=v1.0'.")
31
+ @route("/with-query-api-version")
32
+ @head
33
+ op withQueryApiVersion(@query("api-version") apiVersion: string): OkResponse;
34
+
35
+ @scenario
36
+ @scenarioDoc("A simple operation with path api-version, which doesn't have any default value. Expected url: '/with-path-api-version/v1.0'.")
37
+ @route("/with-path-api-version")
38
+ @head
39
+ op withPathApiVersion(@path apiVersion: string): OkResponse;
@@ -0,0 +1,55 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi, ValidationError } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ function createServerTests(uri: string, requestData?: any) {
6
+ let requestObject: any;
7
+ if (requestData) {
8
+ requestObject = requestData;
9
+ } else {
10
+ requestObject = {};
11
+ }
12
+ return passOnSuccess({
13
+ uri,
14
+ method: "head",
15
+ request: requestObject,
16
+ response: {
17
+ status: 200,
18
+ },
19
+ handler: (req: MockRequest) => {
20
+ if (Object.keys(req.query).length > 0) {
21
+ throw new ValidationError(
22
+ "Expected no query parameters including api-version",
23
+ "No query parameters",
24
+ req.query,
25
+ );
26
+ }
27
+ return { status: 200 };
28
+ },
29
+ kind: "MockApiDefinition",
30
+ });
31
+ }
32
+
33
+ Scenarios.Server_Versions_NotVersioned_withoutApiVersion = createServerTests(
34
+ "/server/versions/not-versioned/without-api-version",
35
+ );
36
+ Scenarios.Server_Versions_NotVersioned_withPathApiVersion = createServerTests(
37
+ "/server/versions/not-versioned/with-path-api-version/v1.0",
38
+ );
39
+ Scenarios.Server_Versions_NotVersioned_withQueryApiVersion = passOnSuccess({
40
+ uri: "/server/versions/not-versioned/with-query-api-version",
41
+ method: "head",
42
+ request: {
43
+ params: {
44
+ "api-version": "v1.0",
45
+ },
46
+ },
47
+ response: {
48
+ status: 200,
49
+ },
50
+ handler: (req: MockRequest) => {
51
+ req.expect.containsQueryParam("api-version", "v1.0");
52
+ return { status: 200 };
53
+ },
54
+ kind: "MockApiDefinition",
55
+ });
@@ -0,0 +1,65 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+ import "@typespec/versioning";
4
+
5
+ using TypeSpec.Http;
6
+ using TypeSpec.Versioning;
7
+
8
+ /**
9
+ * Illustrates versioned server.
10
+ */
11
+ @service
12
+ @versioned(Versions)
13
+ @server(
14
+ "{endpoint}",
15
+ "Testserver endpoint",
16
+ {
17
+ /**
18
+ * Need to be set as 'http://localhost:3000' in client.
19
+ */
20
+ endpoint: url,
21
+ }
22
+ )
23
+ @route("/server/versions/versioned")
24
+ namespace Server.Versions.Versioned;
25
+
26
+ /**
27
+ * The version of the API.
28
+ */
29
+ enum Versions {
30
+ /**
31
+ * The version 2022-12-01-preview.
32
+ */
33
+ @useDependency(global.Azure.Core.Versions.v1_0_Preview_2)
34
+ v2021_01_01_preview: "2021-01-01-preview",
35
+
36
+ /**
37
+ * The version 2022-12-01-preview.
38
+ */
39
+ @useDependency(global.Azure.Core.Versions.v1_0_Preview_2)
40
+ v2022_12_01_preview: "2022-12-01-preview",
41
+ }
42
+
43
+ @scenario
44
+ @scenarioDoc("A simple operation without api-version. Expected url: '/without-api-version', it should not contain any api-version.")
45
+ @route("/without-api-version")
46
+ @head
47
+ op withoutApiVersion(): OkResponse;
48
+
49
+ @scenario
50
+ @scenarioDoc("A simple operation with query api-version, whose default value is defined as '2022-12-01-preview'. Expected url: '/with-query-api-version?api-version=2022-12-01-preview'.")
51
+ @route("/with-query-api-version")
52
+ @head
53
+ op withQueryApiVersion(@query("api-version") apiVersion: string): OkResponse;
54
+
55
+ @scenario
56
+ @scenarioDoc("A simple operation with path api-version, whose default value is defined as '2022-12-01-preview'. Expected url: '/with-path-api-version/2022-12-01-preview'.")
57
+ @route("/with-path-api-version")
58
+ @head
59
+ op withPathApiVersion(@path apiVersion: string): OkResponse;
60
+
61
+ @scenario
62
+ @scenarioDoc("A simple operation with query api-version, that do NOT use the default but '2021-01-01-preview'. It's expected to be set at the client level. Expected url: '/with-old-query-api-version?api-version=2021-01-01-preview'.")
63
+ @route("/with-query-old-api-version")
64
+ @head
65
+ op withQueryOldApiVersion(@query("api-version") apiVersion: string): OkResponse;
@@ -0,0 +1,68 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi, ValidationError } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ function createServerTests(uri: string) {
6
+ return passOnSuccess({
7
+ uri,
8
+ method: "head",
9
+ request: {},
10
+ response: {
11
+ status: 200,
12
+ },
13
+ handler: (req: MockRequest) => {
14
+ if (Object.keys(req.query).length > 0) {
15
+ throw new ValidationError(
16
+ "Expected no query parameters including api-version",
17
+ "No query parameters",
18
+ req.query,
19
+ );
20
+ }
21
+ return { status: 200 };
22
+ },
23
+ kind: "MockApiDefinition",
24
+ });
25
+ }
26
+
27
+ Scenarios.Server_Versions_Versioned_withoutApiVersion = createServerTests(
28
+ "/server/versions/versioned/without-api-version",
29
+ );
30
+ Scenarios.Server_Versions_Versioned_withPathApiVersion = createServerTests(
31
+ "/server/versions/versioned/with-path-api-version/2022-12-01-preview",
32
+ );
33
+
34
+ function createAPIVersionTests(uri: string, requestData: any, serverData: string) {
35
+ return passOnSuccess({
36
+ uri,
37
+ method: "head",
38
+ request: requestData,
39
+ response: {
40
+ status: 200,
41
+ },
42
+ handler: (req: MockRequest) => {
43
+ req.expect.containsQueryParam("api-version", serverData);
44
+ return { status: 200 };
45
+ },
46
+ kind: "MockApiDefinition",
47
+ });
48
+ }
49
+
50
+ Scenarios.Server_Versions_Versioned_withQueryOldApiVersion = createAPIVersionTests(
51
+ "/server/versions/versioned/with-query-old-api-version",
52
+ {
53
+ params: {
54
+ "api-version": "2021-01-01-preview",
55
+ },
56
+ },
57
+ "2021-01-01-preview",
58
+ );
59
+
60
+ Scenarios.Server_Versions_Versioned_withQueryApiVersion = createAPIVersionTests(
61
+ "/server/versions/versioned/with-query-api-version",
62
+ {
63
+ params: {
64
+ "api-version": "2022-12-01-preview",
65
+ },
66
+ },
67
+ "2022-12-01-preview",
68
+ );
@@ -0,0 +1,89 @@
1
+ import "@typespec/http";
2
+ import "@typespec/versioning";
3
+ import "@typespec/spec-lib";
4
+
5
+ using TypeSpec.Http;
6
+ using TypeSpec.Versioning;
7
+
8
+ @doc("Illustrates conditional request headers")
9
+ @supportedBy("dpg")
10
+ @scenarioService("/special-headers/conditional-request")
11
+ namespace SpecialHeaders.ConditionalRequest;
12
+
13
+ @scenario
14
+ @doc("""
15
+ Check when only If-Match in header is defined.
16
+ """)
17
+ @scenarioDoc("""
18
+ Check when only If-Match in header is defined.
19
+ Expected header parameters:
20
+ - if-match="valid"
21
+ """)
22
+ @post
23
+ @route("/if-match")
24
+ op postIfMatch(
25
+ @header("If-Match")
26
+ @doc("The request should only proceed if an entity matches this string.")
27
+ ifMatch?: string,
28
+ ): NoContentResponse;
29
+
30
+ @scenario
31
+ @doc("""
32
+ Check when only If-None-Match in header is defined.
33
+ """)
34
+ @scenarioDoc("""
35
+ Check when only If-None-Match in header is defined.
36
+ Expected header parameters:
37
+ - if-nonematch="invalid"
38
+ """)
39
+ @post
40
+ @route("/if-none-match")
41
+ op postIfNoneMatch(
42
+ @header("If-None-Match")
43
+ @doc("The request should only proceed if no entity matches this string.")
44
+ ifNoneMatch?: string,
45
+ ): NoContentResponse;
46
+
47
+ @scenario
48
+ @doc("""
49
+ Check when only If-Modified-Since in header is defined.
50
+ """)
51
+ @scenarioDoc("""
52
+ Check when only If-Modified-Since in header is defined.
53
+ Expected header parameters:
54
+ - if-modified-since=Fri, 26 Aug 2022 14:38:00 GMT
55
+ """)
56
+ @head
57
+ @route("/if-modified-since")
58
+ op headIfModifiedSince(
59
+ @doc("""
60
+ A timestamp indicating the last modified time of the resource known to the
61
+ client. The operation will be performed only if the resource on the service has
62
+ been modified since the specified time.
63
+ """)
64
+ @header("If-Modified-Since")
65
+ @encode(DateTimeKnownEncoding.rfc7231)
66
+ ifModifiedSince?: utcDateTime,
67
+ ): NoContentResponse;
68
+
69
+ @scenario
70
+ @doc("""
71
+ Check when only If-Unmodified-Since in header is defined.
72
+ """)
73
+ @scenarioDoc("""
74
+ Check when only If-Unmodified-Since in header is defined.
75
+ Expected header parameters:
76
+ - if-unmodified-since=Fri, 26 Aug 2022 14:38:00 GMT
77
+ """)
78
+ @post
79
+ @route("/if-unmodified-since")
80
+ op postIfUnmodifiedSince(
81
+ @doc("""
82
+ A timestamp indicating the last modified time of the resource known to the
83
+ client. The operation will be performed only if the resource on the service has
84
+ not been modified since the specified time.
85
+ """)
86
+ @header("If-Unmodified-Since")
87
+ @encode(DateTimeKnownEncoding.rfc7231)
88
+ ifUnmodifiedSince?: utcDateTime,
89
+ ): NoContentResponse;
@@ -0,0 +1,83 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.SpecialHeaders_ConditionalRequest_postIfUnmodifiedSince = passOnSuccess({
6
+ uri: "/special-headers/conditional-request/if-unmodified-since",
7
+ method: "post",
8
+ request: {
9
+ headers: {
10
+ "if-unmodified-since": "Fri, 26 Aug 2022 14:38:00 GMT",
11
+ },
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ handler: (req: MockRequest) => {
17
+ req.expect.containsHeader("if-unmodified-since", "Fri, 26 Aug 2022 14:38:00 GMT");
18
+ return {
19
+ status: 204,
20
+ };
21
+ },
22
+ kind: "MockApiDefinition",
23
+ });
24
+
25
+ Scenarios.SpecialHeaders_ConditionalRequest_headIfModifiedSince = passOnSuccess({
26
+ uri: "/special-headers/conditional-request/if-modified-since",
27
+ method: "head",
28
+ request: {
29
+ headers: {
30
+ "if-modified-since": "Fri, 26 Aug 2022 14:38:00 GMT",
31
+ },
32
+ },
33
+ response: {
34
+ status: 204,
35
+ },
36
+ handler: (req: MockRequest) => {
37
+ req.expect.containsHeader("if-modified-since", "Fri, 26 Aug 2022 14:38:00 GMT");
38
+ return {
39
+ status: 204,
40
+ };
41
+ },
42
+ kind: "MockApiDefinition",
43
+ });
44
+
45
+ Scenarios.SpecialHeaders_ConditionalRequest_postIfMatch = passOnSuccess({
46
+ uri: "/special-headers/conditional-request/if-match",
47
+ method: "post",
48
+ request: {
49
+ headers: {
50
+ "if-match": '"valid"',
51
+ },
52
+ },
53
+ response: {
54
+ status: 204,
55
+ },
56
+ handler: (req: MockRequest) => {
57
+ req.expect.containsHeader("if-match", '"valid"');
58
+ return {
59
+ status: 204,
60
+ };
61
+ },
62
+ kind: "MockApiDefinition",
63
+ });
64
+
65
+ Scenarios.SpecialHeaders_ConditionalRequest_postIfNoneMatch = passOnSuccess({
66
+ uri: "/special-headers/conditional-request/if-none-match",
67
+ method: "post",
68
+ request: {
69
+ headers: {
70
+ "if-none-match": '"invalid"',
71
+ },
72
+ },
73
+ response: {
74
+ status: 204,
75
+ },
76
+ handler: (req: MockRequest) => {
77
+ req.expect.containsHeader("if-none-match", '"invalid"');
78
+ return {
79
+ status: 204,
80
+ };
81
+ },
82
+ kind: "MockApiDefinition",
83
+ });
@@ -0,0 +1,39 @@
1
+ import "@typespec/http";
2
+ import "@typespec/versioning";
3
+ import "@typespec/spec-lib";
4
+
5
+ using TypeSpec.Http;
6
+ using TypeSpec.Versioning;
7
+
8
+ @doc("Illustrates OASIS repeatability headers")
9
+ @supportedBy("dpg")
10
+ @scenarioService("/special-headers/repeatability")
11
+ namespace SpecialHeaders.Repeatability;
12
+
13
+ model RepeatableResponse {
14
+ @doc("The status code.")
15
+ @statusCode
16
+ statusCode: 204;
17
+
18
+ @visibility("read")
19
+ @header("Repeatability-Result")
20
+ @doc("Indicates whether the repeatable request was accepted or rejected.")
21
+ repeatabilityResult?: "accepted" | "rejected";
22
+ }
23
+
24
+ @scenario
25
+ @scenarioDoc("""
26
+ Check we recognize Repeatability-Request-ID and Repeatability-First-Sent.
27
+ """)
28
+ @doc("""
29
+ Check we recognize Repeatability-Request-ID and Repeatability-First-Sent.
30
+ """)
31
+ @post
32
+ @route("/immediateSuccess")
33
+ op immediateSuccess(
34
+ @header("Repeatability-Request-ID")
35
+ repeatabilityRequestID: string,
36
+
37
+ @header("Repeatability-First-Sent")
38
+ repeatabilityFirstSent: utcDateTime,
39
+ ): RepeatableResponse;
@@ -0,0 +1,47 @@
1
+ import {
2
+ MockRequest,
3
+ passOnSuccess,
4
+ ScenarioMockApi,
5
+ validateValueFormat,
6
+ ValidationError,
7
+ } from "@typespec/spec-api";
8
+
9
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
10
+
11
+ Scenarios.SpecialHeaders_Repeatability_immediateSuccess = passOnSuccess({
12
+ uri: "/special-headers/repeatability/immediateSuccess",
13
+ method: "post",
14
+ request: {
15
+ headers: {
16
+ "Repeatability-First-Sent": "Tue, 15 Nov 2022 12:45:26 GMT",
17
+ "Repeatability-Request-ID": "2378d9bc-1726-11ee-be56-0242ac120002", // fake uuid
18
+ },
19
+ },
20
+ response: {
21
+ status: 204,
22
+ headers: {
23
+ "repeatability-result": "accepted",
24
+ },
25
+ },
26
+ handler: (req: MockRequest) => {
27
+ if (!("repeatability-request-id" in req.headers)) {
28
+ throw new ValidationError("Repeatability-Request-ID is missing", "A UUID string", undefined);
29
+ }
30
+ if (!("repeatability-first-sent" in req.headers)) {
31
+ throw new ValidationError(
32
+ "Repeatability-First-Sent is missing",
33
+ "A date-time in headers format",
34
+ undefined,
35
+ );
36
+ }
37
+ validateValueFormat(req.headers["repeatability-request-id"], "uuid");
38
+ validateValueFormat(req.headers["repeatability-first-sent"], "rfc7231");
39
+ return {
40
+ status: 204,
41
+ headers: {
42
+ "repeatability-result": "accepted",
43
+ },
44
+ };
45
+ },
46
+ kind: "MockApiDefinition",
47
+ });