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