@typespec/http-specs 0.1.0-alpha.9 → 0.1.0-dev.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 (224) hide show
  1. package/CHANGELOG.md +241 -3
  2. package/README.md +11 -3
  3. package/dist/specs/authentication/noauth/union/mockapi.d.ts +3 -0
  4. package/dist/specs/authentication/noauth/union/mockapi.d.ts.map +1 -0
  5. package/dist/specs/authentication/noauth/union/mockapi.js +25 -0
  6. package/dist/specs/authentication/noauth/union/mockapi.js.map +1 -0
  7. package/dist/specs/documentation/mockapi.d.ts +3 -0
  8. package/dist/specs/documentation/mockapi.d.ts.map +1 -0
  9. package/dist/specs/documentation/mockapi.js +40 -0
  10. package/dist/specs/documentation/mockapi.js.map +1 -0
  11. package/dist/specs/encode/array/mockapi.d.ts +3 -0
  12. package/dist/specs/encode/array/mockapi.d.ts.map +1 -0
  13. package/dist/specs/encode/array/mockapi.js +33 -0
  14. package/dist/specs/encode/array/mockapi.js.map +1 -0
  15. package/dist/specs/encode/bytes/mockapi.js +16 -24
  16. package/dist/specs/encode/bytes/mockapi.js.map +1 -1
  17. package/dist/specs/encode/datetime/mockapi.js +2 -2
  18. package/dist/specs/encode/datetime/mockapi.js.map +1 -1
  19. package/dist/specs/encode/duration/mockapi.d.ts.map +1 -1
  20. package/dist/specs/encode/duration/mockapi.js +110 -3
  21. package/dist/specs/encode/duration/mockapi.js.map +1 -1
  22. package/dist/specs/encode/numeric/mockapi.js +2 -2
  23. package/dist/specs/encode/numeric/mockapi.js.map +1 -1
  24. package/dist/specs/helper.d.ts +2 -2
  25. package/dist/specs/helper.d.ts.map +1 -1
  26. package/dist/specs/parameters/basic/mockapi.d.ts.map +1 -1
  27. package/dist/specs/parameters/basic/mockapi.js +3 -3
  28. package/dist/specs/parameters/basic/mockapi.js.map +1 -1
  29. package/dist/specs/parameters/body-optionality/mockapi.d.ts.map +1 -1
  30. package/dist/specs/parameters/body-optionality/mockapi.js +14 -4
  31. package/dist/specs/parameters/body-optionality/mockapi.js.map +1 -1
  32. package/dist/specs/parameters/collection-format/mockapi.js +4 -15
  33. package/dist/specs/parameters/collection-format/mockapi.js.map +1 -1
  34. package/dist/specs/parameters/path/mockapi.d.ts +3 -0
  35. package/dist/specs/parameters/path/mockapi.d.ts.map +1 -0
  36. package/dist/specs/parameters/path/mockapi.js +29 -0
  37. package/dist/specs/parameters/path/mockapi.js.map +1 -0
  38. package/dist/specs/parameters/query/mockapi.d.ts +3 -0
  39. package/dist/specs/parameters/query/mockapi.d.ts.map +1 -0
  40. package/dist/specs/parameters/query/mockapi.js +14 -0
  41. package/dist/specs/parameters/query/mockapi.js.map +1 -0
  42. package/dist/specs/parameters/spread/mockapi.d.ts.map +1 -1
  43. package/dist/specs/parameters/spread/mockapi.js +19 -19
  44. package/dist/specs/parameters/spread/mockapi.js.map +1 -1
  45. package/dist/specs/payload/json-merge-patch/mockapi.js +4 -4
  46. package/dist/specs/payload/json-merge-patch/mockapi.js.map +1 -1
  47. package/dist/specs/payload/media-type/mockapi.js +2 -2
  48. package/dist/specs/payload/media-type/mockapi.js.map +1 -1
  49. package/dist/specs/payload/multipart/mockapi.d.ts.map +1 -1
  50. package/dist/specs/payload/multipart/mockapi.js +189 -60
  51. package/dist/specs/payload/multipart/mockapi.js.map +1 -1
  52. package/dist/specs/payload/pageable/mockapi.d.ts.map +1 -1
  53. package/dist/specs/payload/pageable/mockapi.js +594 -14
  54. package/dist/specs/payload/pageable/mockapi.js.map +1 -1
  55. package/dist/specs/payload/xml/mockapi.d.ts +3 -0
  56. package/dist/specs/payload/xml/mockapi.d.ts.map +1 -1
  57. package/dist/specs/payload/xml/mockapi.js +35 -5
  58. package/dist/specs/payload/xml/mockapi.js.map +1 -1
  59. package/dist/specs/response/status-code-range/mockapi.d.ts.map +1 -1
  60. package/dist/specs/response/status-code-range/mockapi.js +5 -9
  61. package/dist/specs/response/status-code-range/mockapi.js.map +1 -1
  62. package/dist/specs/routes/mockapi.js +16 -16
  63. package/dist/specs/routes/mockapi.js.map +1 -1
  64. package/dist/specs/serialization/encoded-name/json/mockapi.js +1 -1
  65. package/dist/specs/serialization/encoded-name/json/mockapi.js.map +1 -1
  66. package/dist/specs/server/versions/not-versioned/mockapi.js +1 -1
  67. package/dist/specs/server/versions/not-versioned/mockapi.js.map +1 -1
  68. package/dist/specs/server/versions/versioned/mockapi.js +8 -12
  69. package/dist/specs/server/versions/versioned/mockapi.js.map +1 -1
  70. package/dist/specs/special-words/mockapi.d.ts.map +1 -1
  71. package/dist/specs/special-words/mockapi.js +59 -6
  72. package/dist/specs/special-words/mockapi.js.map +1 -1
  73. package/dist/specs/streaming/jsonl/mockapi.d.ts +3 -0
  74. package/dist/specs/streaming/jsonl/mockapi.d.ts.map +1 -0
  75. package/dist/specs/streaming/jsonl/mockapi.js +30 -0
  76. package/dist/specs/streaming/jsonl/mockapi.js.map +1 -0
  77. package/dist/specs/type/array/mockapi.js +1 -1
  78. package/dist/specs/type/array/mockapi.js.map +1 -1
  79. package/dist/specs/type/dictionary/mockapi.js +1 -1
  80. package/dist/specs/type/dictionary/mockapi.js.map +1 -1
  81. package/dist/specs/type/enum/extensible/mockapi.js +1 -1
  82. package/dist/specs/type/enum/extensible/mockapi.js.map +1 -1
  83. package/dist/specs/type/enum/fixed/mockapi.js +2 -2
  84. package/dist/specs/type/enum/fixed/mockapi.js.map +1 -1
  85. package/dist/specs/type/file/mockapi.d.ts +3 -0
  86. package/dist/specs/type/file/mockapi.d.ts.map +1 -0
  87. package/dist/specs/type/file/mockapi.js +187 -0
  88. package/dist/specs/type/file/mockapi.js.map +1 -0
  89. package/dist/specs/type/model/empty/mockapi.js +2 -2
  90. package/dist/specs/type/model/empty/mockapi.js.map +1 -1
  91. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js +1 -1
  92. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js.map +1 -1
  93. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js +2 -2
  94. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js.map +1 -1
  95. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js +2 -2
  96. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js.map +1 -1
  97. package/dist/specs/type/model/inheritance/recursive/mockapi.js +1 -1
  98. package/dist/specs/type/model/inheritance/recursive/mockapi.js.map +1 -1
  99. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js +2 -2
  100. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js.map +1 -1
  101. package/dist/specs/type/model/usage/mockapi.js +4 -4
  102. package/dist/specs/type/model/usage/mockapi.js.map +1 -1
  103. package/dist/specs/type/model/visibility/mockapi.js +9 -10
  104. package/dist/specs/type/model/visibility/mockapi.js.map +1 -1
  105. package/dist/specs/type/property/additional-properties/mockapi.js +9 -6
  106. package/dist/specs/type/property/additional-properties/mockapi.js.map +1 -1
  107. package/dist/specs/type/property/nullable/mockapi.js +2 -6
  108. package/dist/specs/type/property/nullable/mockapi.js.map +1 -1
  109. package/dist/specs/type/property/optionality/mockapi.js +1 -1
  110. package/dist/specs/type/property/optionality/mockapi.js.map +1 -1
  111. package/dist/specs/type/property/value-types/mockapi.js +3 -3
  112. package/dist/specs/type/property/value-types/mockapi.js.map +1 -1
  113. package/dist/specs/type/scalar/mockapi.js +9 -9
  114. package/dist/specs/type/scalar/mockapi.js.map +1 -1
  115. package/dist/specs/type/union/discriminated/mockapi.d.ts +3 -0
  116. package/dist/specs/type/union/discriminated/mockapi.d.ts.map +1 -0
  117. package/dist/specs/type/union/discriminated/mockapi.js +212 -0
  118. package/dist/specs/type/union/discriminated/mockapi.js.map +1 -0
  119. package/dist/specs/type/union/mockapi.js +2 -2
  120. package/dist/specs/type/union/mockapi.js.map +1 -1
  121. package/dist/specs/versioning/added/mockapi.js +6 -6
  122. package/dist/specs/versioning/added/mockapi.js.map +1 -1
  123. package/dist/specs/versioning/madeOptional/mockapi.js +2 -2
  124. package/dist/specs/versioning/madeOptional/mockapi.js.map +1 -1
  125. package/dist/specs/versioning/removed/mockapi.js +11 -11
  126. package/dist/specs/versioning/removed/mockapi.js.map +1 -1
  127. package/dist/specs/versioning/renamedFrom/mockapi.js +5 -5
  128. package/dist/specs/versioning/renamedFrom/mockapi.js.map +1 -1
  129. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js +1 -1
  130. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js.map +1 -1
  131. package/dist/specs/versioning/typeChangedFrom/mockapi.js +3 -3
  132. package/dist/specs/versioning/typeChangedFrom/mockapi.js.map +1 -1
  133. package/manifest.json +11200 -0
  134. package/package.json +30 -19
  135. package/smoke/petstore/main.tsp +96 -0
  136. package/smoke/todoapp/main.tsp +293 -0
  137. package/spec-summary.md +1745 -121
  138. package/specs/authentication/noauth/union/main.tsp +30 -0
  139. package/specs/authentication/noauth/union/mockapi.ts +27 -0
  140. package/specs/documentation/main.tsp +158 -0
  141. package/specs/documentation/mockapi.ts +59 -0
  142. package/specs/encode/array/main.tsp +339 -0
  143. package/specs/encode/array/mockapi.ts +83 -0
  144. package/specs/encode/bytes/main.tsp +29 -20
  145. package/specs/encode/bytes/mockapi.ts +13 -31
  146. package/specs/encode/datetime/main.tsp +2 -7
  147. package/specs/encode/datetime/mockapi.ts +2 -2
  148. package/specs/encode/duration/main.tsp +420 -7
  149. package/specs/encode/duration/mockapi.ts +216 -2
  150. package/specs/encode/numeric/mockapi.ts +2 -2
  151. package/specs/parameters/basic/mockapi.ts +3 -3
  152. package/specs/parameters/body-optionality/main.tsp +2 -0
  153. package/specs/parameters/body-optionality/mockapi.ts +24 -4
  154. package/specs/parameters/collection-format/main.tsp +5 -25
  155. package/specs/parameters/collection-format/mockapi.ts +4 -16
  156. package/specs/parameters/path/main.tsp +48 -0
  157. package/specs/parameters/path/mockapi.ts +34 -0
  158. package/specs/parameters/query/main.tsp +22 -0
  159. package/specs/parameters/query/mockapi.ts +15 -0
  160. package/specs/parameters/spread/mockapi.ts +19 -19
  161. package/specs/payload/json-merge-patch/main.tsp +2 -2
  162. package/specs/payload/json-merge-patch/mockapi.ts +4 -4
  163. package/specs/payload/media-type/mockapi.ts +2 -2
  164. package/specs/payload/multipart/main.tsp +230 -32
  165. package/specs/payload/multipart/mockapi.ts +200 -59
  166. package/specs/payload/pageable/main.tsp +601 -0
  167. package/specs/payload/pageable/mockapi.ts +656 -14
  168. package/specs/payload/xml/main.tsp +89 -0
  169. package/specs/payload/xml/mockapi.ts +44 -5
  170. package/specs/response/status-code-range/main.tsp +2 -2
  171. package/specs/response/status-code-range/mockapi.ts +5 -9
  172. package/specs/routes/main.tsp +29 -29
  173. package/specs/routes/mockapi.ts +16 -16
  174. package/specs/serialization/encoded-name/json/main.tsp +1 -1
  175. package/specs/serialization/encoded-name/json/mockapi.ts +1 -1
  176. package/specs/server/endpoint/not-defined/main.tsp +1 -3
  177. package/specs/server/path/multiple/main.tsp +3 -5
  178. package/specs/server/versions/not-versioned/mockapi.ts +1 -1
  179. package/specs/server/versions/versioned/main.tsp +1 -1
  180. package/specs/server/versions/versioned/mockapi.ts +6 -12
  181. package/specs/special-headers/conditional-request/main.tsp +1 -1
  182. package/specs/special-headers/repeatability/main.tsp +2 -2
  183. package/specs/special-words/main.tsp +118 -6
  184. package/specs/special-words/mockapi.ts +62 -6
  185. package/specs/streaming/jsonl/main.tsp +33 -0
  186. package/specs/streaming/jsonl/mockapi.ts +32 -0
  187. package/specs/type/array/mockapi.ts +1 -1
  188. package/specs/type/dictionary/mockapi.ts +1 -1
  189. package/specs/type/enum/extensible/main.tsp +18 -2
  190. package/specs/type/enum/extensible/mockapi.ts +1 -1
  191. package/specs/type/enum/fixed/main.tsp +15 -3
  192. package/specs/type/enum/fixed/mockapi.ts +2 -2
  193. package/specs/type/file/main.tsp +109 -0
  194. package/specs/type/file/mockapi.ts +200 -0
  195. package/specs/type/model/empty/mockapi.ts +2 -2
  196. package/specs/type/model/inheritance/enum-discriminator/mockapi.ts +1 -1
  197. package/specs/type/model/inheritance/nested-discriminator/mockapi.ts +2 -2
  198. package/specs/type/model/inheritance/not-discriminated/mockapi.ts +2 -2
  199. package/specs/type/model/inheritance/recursive/mockapi.ts +1 -1
  200. package/specs/type/model/inheritance/single-discriminator/mockapi.ts +2 -2
  201. package/specs/type/model/usage/mockapi.ts +4 -4
  202. package/specs/type/model/visibility/main.tsp +9 -17
  203. package/specs/type/model/visibility/mockapi.ts +9 -10
  204. package/specs/type/property/additional-properties/main.tsp +17 -17
  205. package/specs/type/property/additional-properties/mockapi.ts +10 -10
  206. package/specs/type/property/nullable/mockapi.ts +7 -8
  207. package/specs/type/property/optionality/mockapi.ts +1 -1
  208. package/specs/type/property/value-types/mockapi.ts +3 -3
  209. package/specs/type/scalar/main.tsp +58 -9
  210. package/specs/type/scalar/mockapi.ts +9 -9
  211. package/specs/type/union/discriminated/main.tsp +251 -0
  212. package/specs/type/union/discriminated/mockapi.ts +230 -0
  213. package/specs/type/union/mockapi.ts +2 -2
  214. package/specs/versioning/added/mockapi.ts +6 -6
  215. package/specs/versioning/madeOptional/mockapi.ts +2 -2
  216. package/specs/versioning/removed/main.tsp +5 -5
  217. package/specs/versioning/removed/mockapi.ts +11 -11
  218. package/specs/versioning/renamedFrom/mockapi.ts +5 -5
  219. package/specs/versioning/returnTypeChangedFrom/main.tsp +17 -2
  220. package/specs/versioning/returnTypeChangedFrom/mockapi.ts +1 -1
  221. package/specs/versioning/typeChangedFrom/mockapi.ts +3 -3
  222. package/temp/.tsbuildinfo +1 -1
  223. package/tsconfig.build.json +0 -4
  224. package/tspconfig.yaml +0 -2
package/spec-summary.md CHANGED
@@ -39,6 +39,18 @@ Expect error code 403 and error body:
39
39
 
40
40
  Expects header 'Authorization': 'SharedAccessKey valid-key'
41
41
 
42
+ ### Authentication_Noauth_Union_validNoAuth
43
+
44
+ - Endpoint: `get /authentication/noauth/union/valid`
45
+
46
+ Expects no authentication. The server accepts requests without any authentication header.
47
+
48
+ ### Authentication_Noauth_Union_validToken
49
+
50
+ - Endpoint: `get /authentication/noauth/union/validtoken`
51
+
52
+ Expects header 'authorization': 'Bearer https://security.microsoft.com/.default'
53
+
42
54
  ### Authentication_OAuth2_invalid
43
55
 
44
56
  - Endpoint: `get /authentication/oauth2/invalid`
@@ -71,6 +83,292 @@ Expects header 'x-ms-api-key': 'valid-key'
71
83
 
72
84
  Expects header 'authorization': 'Bearer https://security.microsoft.com/.default'
73
85
 
86
+ ### Documentation_Lists_bulletPointsOp
87
+
88
+ - Endpoint: `get /documentation/lists/bullet-points/op`
89
+
90
+ Test simple bullet points in documentation.
91
+ Expected behavior: Should render properly formatted bullet lists.
92
+
93
+ ### Documentation_Lists_numbered
94
+
95
+ - Endpoint: `get /documentation/lists/numbered`
96
+
97
+ Test numbered lists.
98
+ Expected behavior: Should render numbered list properly.
99
+
100
+ ### Documentation_TextFormatting_boldText
101
+
102
+ - Endpoint: `get /documentation/text-formatting/bold`
103
+
104
+ Expected behavior: Text between \*\* should render as bold.
105
+
106
+ ### Documentation_TextFormatting_combinedFormatting
107
+
108
+ - Endpoint: `get /documentation/text-formatting/combined`
109
+
110
+ Test combined bold and italic formatting.
111
+ Expected behavior: Should handle nested and combined formatting.
112
+
113
+ ### Documentation_TextFormatting_italicText
114
+
115
+ - Endpoint: `get /documentation/text-formatting/italic`
116
+
117
+ Test italic text formatting using _single asterisks_.
118
+ Expected behavior: Text between \* should render as italic.
119
+
120
+ ### Encode_Array_Property_commaDelimited
121
+
122
+ - Endpoint: `post /encode/array/property/comma-delimited`
123
+
124
+ Test operation with request and response model contains a string array property with commaDelimited encode.
125
+ Expected request body:
126
+
127
+ ```json
128
+ {
129
+ "value": "blue,red,green"
130
+ }
131
+ ```
132
+
133
+ Expected response body:
134
+
135
+ ```json
136
+ {
137
+ "value": "blue,red,green"
138
+ }
139
+ ```
140
+
141
+ ### Encode_Array_Property_enumCommaDelimited
142
+
143
+ - Endpoint: `post /encode/array/property/enum/comma-delimited`
144
+
145
+ Test operation with request and response model contains an enum array property with commaDelimited encode.
146
+ Expected request body:
147
+
148
+ ```json
149
+ {
150
+ "value": "blue,red,green"
151
+ }
152
+ ```
153
+
154
+ Expected response body:
155
+
156
+ ```json
157
+ {
158
+ "value": "blue,red,green"
159
+ }
160
+ ```
161
+
162
+ ### Encode_Array_Property_enumNewlineDelimited
163
+
164
+ - Endpoint: `post /encode/array/property/enum/newline-delimited`
165
+
166
+ Test operation with request and response model contains an enum array property with newlineDelimited encode.
167
+ Expected request body:
168
+
169
+ ```json
170
+ {
171
+ "value": "blue\nred\ngreen"
172
+ }
173
+ ```
174
+
175
+ Expected response body:
176
+
177
+ ```json
178
+ {
179
+ "value": "blue\nred\ngreen"
180
+ }
181
+ ```
182
+
183
+ ### Encode_Array_Property_enumPipeDelimited
184
+
185
+ - Endpoint: `post /encode/array/property/enum/pipe-delimited`
186
+
187
+ Test operation with request and response model contains an enum array property with pipeDelimited encode.
188
+ Expected request body:
189
+
190
+ ```json
191
+ {
192
+ "value": "blue|red|green"
193
+ }
194
+ ```
195
+
196
+ Expected response body:
197
+
198
+ ```json
199
+ {
200
+ "value": "blue|red|green"
201
+ }
202
+ ```
203
+
204
+ ### Encode_Array_Property_enumSpaceDelimited
205
+
206
+ - Endpoint: `post /encode/array/property/enum/space-delimited`
207
+
208
+ Test operation with request and response model contains an enum array property with spaceDelimited encode.
209
+ Expected request body:
210
+
211
+ ```json
212
+ {
213
+ "value": "blue red green"
214
+ }
215
+ ```
216
+
217
+ Expected response body:
218
+
219
+ ```json
220
+ {
221
+ "value": "blue red green"
222
+ }
223
+ ```
224
+
225
+ ### Encode_Array_Property_extensibleEnumCommaDelimited
226
+
227
+ - Endpoint: `post /encode/array/property/extensible-enum/comma-delimited`
228
+
229
+ Test operation with request and response model contains an extensible enum (union) array property with commaDelimited encode.
230
+ Expected request body:
231
+
232
+ ```json
233
+ {
234
+ "value": "blue,red,green"
235
+ }
236
+ ```
237
+
238
+ Expected response body:
239
+
240
+ ```json
241
+ {
242
+ "value": "blue,red,green"
243
+ }
244
+ ```
245
+
246
+ ### Encode_Array_Property_extensibleEnumNewlineDelimited
247
+
248
+ - Endpoint: `post /encode/array/property/extensible-enum/newline-delimited`
249
+
250
+ Test operation with request and response model contains an extensible enum (union) array property with newlineDelimited encode.
251
+ Expected request body:
252
+
253
+ ```json
254
+ {
255
+ "value": "blue\nred\ngreen"
256
+ }
257
+ ```
258
+
259
+ Expected response body:
260
+
261
+ ```json
262
+ {
263
+ "value": "blue\nred\ngreen"
264
+ }
265
+ ```
266
+
267
+ ### Encode_Array_Property_extensibleEnumPipeDelimited
268
+
269
+ - Endpoint: `post /encode/array/property/extensible-enum/pipe-delimited`
270
+
271
+ Test operation with request and response model contains an extensible enum (union) array property with pipeDelimited encode.
272
+ Expected request body:
273
+
274
+ ```json
275
+ {
276
+ "value": "blue|red|green"
277
+ }
278
+ ```
279
+
280
+ Expected response body:
281
+
282
+ ```json
283
+ {
284
+ "value": "blue|red|green"
285
+ }
286
+ ```
287
+
288
+ ### Encode_Array_Property_extensibleEnumSpaceDelimited
289
+
290
+ - Endpoint: `post /encode/array/property/extensible-enum/space-delimited`
291
+
292
+ Test operation with request and response model contains an extensible enum (union) array property with spaceDelimited encode.
293
+ Expected request body:
294
+
295
+ ```json
296
+ {
297
+ "value": "blue red green"
298
+ }
299
+ ```
300
+
301
+ Expected response body:
302
+
303
+ ```json
304
+ {
305
+ "value": "blue red green"
306
+ }
307
+ ```
308
+
309
+ ### Encode_Array_Property_newlineDelimited
310
+
311
+ - Endpoint: `post /encode/array/property/newline-delimited`
312
+
313
+ Test operation with request and response model contains a string array property with newlineDelimited encode.
314
+ Expected request body:
315
+
316
+ ```json
317
+ {
318
+ "value": "blue\nred\ngreen"
319
+ }
320
+ ```
321
+
322
+ Expected response body:
323
+
324
+ ```json
325
+ {
326
+ "value": "blue\nred\ngreen"
327
+ }
328
+ ```
329
+
330
+ ### Encode_Array_Property_pipeDelimited
331
+
332
+ - Endpoint: `post /encode/array/property/pipe-delimited`
333
+
334
+ Test operation with request and response model contains a string array property with pipeDelimited encode.
335
+ Expected request body:
336
+
337
+ ```json
338
+ {
339
+ "value": "blue|red|green"
340
+ }
341
+ ```
342
+
343
+ Expected response body:
344
+
345
+ ```json
346
+ {
347
+ "value": "blue|red|green"
348
+ }
349
+ ```
350
+
351
+ ### Encode_Array_Property_spaceDelimited
352
+
353
+ - Endpoint: `post /encode/array/property/space-delimited`
354
+
355
+ Test operation with request and response model contains a string array property with spaceDelimited encode.
356
+ Expected request body:
357
+
358
+ ```json
359
+ {
360
+ "value": "blue red green"
361
+ }
362
+ ```
363
+
364
+ Expected response body:
365
+
366
+ ```json
367
+ {
368
+ "value": "blue red green"
369
+ }
370
+ ```
371
+
74
372
  ### Encode_Bytes_Header_base64
75
373
 
76
374
  - Endpoint: `get /encode/bytes/header/base64`
@@ -240,22 +538,21 @@ Expected body:
240
538
  - Endpoint: `post /encode/bytes/body/request/custom-content-type`
241
539
 
242
540
  When content type is a custom type(image/png here) and body is `bytes` the payload is a binary file.
243
- File should match packages/cadl-ranch-specs/assets/image.png
541
+ File should match packages/http-specs/assets/image.png.
244
542
 
245
543
  ### Encode_Bytes_RequestBody_default
246
544
 
247
545
  - Endpoint: `post /encode/bytes/body/request/default`
248
546
 
249
- Test default encode (base64) for bytes in a json body.
250
- Expected body:
251
- "dGVzdA==" (base64 encode of test, in JSON string)
547
+ When content type is not defined and body is `bytes` the payload is a binary stream.
548
+ Stream should match packages/http-specs/assets/image.png file.
252
549
 
253
550
  ### Encode_Bytes_RequestBody_octetStream
254
551
 
255
552
  - Endpoint: `post /encode/bytes/body/request/octet-stream`
256
553
 
257
- When content type is application/octet-stream and body is `bytes` the payload is a binary file.
258
- File should match packages/cadl-ranch-specs/assets/image.png
554
+ When content type is application/octet-stream and body is `bytes` the payload is a binary stream.
555
+ Stream should match packages/http-specs/assets/image.png file.
259
556
 
260
557
  ### Encode_Bytes_ResponseBody_base64
261
558
 
@@ -278,22 +575,21 @@ Expected body:
278
575
  - Endpoint: `get /encode/bytes/body/response/custom-content-type`
279
576
 
280
577
  When content type is a custom type(image/png here) and body is `bytes` the payload is a binary file.
281
- File should match packages/cadl-ranch-specs/assets/image.png
578
+ File should match packages/http-specs/assets/image.png
282
579
 
283
580
  ### Encode_Bytes_ResponseBody_default
284
581
 
285
582
  - Endpoint: `get /encode/bytes/body/response/default`
286
583
 
287
- Test default encode (base64) for bytes in a json body.
288
- Expected body:
289
- "dGVzdA==" (base64 encode of test, in JSON string)
584
+ When content type is not defined and body is `bytes` the payload is a binary stream.
585
+ Stream should match packages/http-specs/assets/image.png file.
290
586
 
291
587
  ### Encode_Bytes_ResponseBody_octetStream
292
588
 
293
589
  - Endpoint: `get /encode/bytes/body/response/octet-stream`
294
590
 
295
- When content type is application/octet-stream and body is `bytes` the payload is a binary file.
296
- File should match packages/cadl-ranch-specs/assets/image.png
591
+ When content type is application/octet-stream and body is `bytes` the payload is a binary stream.
592
+ Stream should match packages/http-specs/assets/image.png file.
297
593
 
298
594
  ### Encode_Datetime_Header_default
299
595
 
@@ -519,6 +815,13 @@ value=1686566864
519
815
  Test default encode for a duration header.
520
816
  Expected header `input=P40D`
521
817
 
818
+ ### Encode_Duration_Header_float64Milliseconds
819
+
820
+ - Endpoint: `get /encode/duration/header/float64-milliseconds`
821
+
822
+ Test float64 milliseconds encode for a duration header.
823
+ Expected header `duration: 35625`
824
+
522
825
  ### Encode_Duration_Header_float64Seconds
523
826
 
524
827
  - Endpoint: `get /encode/duration/header/float64-seconds`
@@ -526,6 +829,21 @@ Expected header `input=P40D`
526
829
  Test float64 seconds encode for a duration header.
527
830
  Expected header `duration: 35.625`
528
831
 
832
+ ### Encode_Duration_Header_floatMilliseconds
833
+
834
+ - Endpoint: `get /encode/duration/header/float-milliseconds`
835
+
836
+ Test float milliseconds encode for a duration header.
837
+ Expected header `duration: 35625`
838
+
839
+ ### Encode_Duration_Header_floatMillisecondsLargerUnit
840
+
841
+ - Endpoint: `get /encode/duration/header/float-milliseconds-larger-unit`
842
+
843
+ Test float milliseconds encode for a duration header where the duration is several minutes.
844
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3.5) in C#.
845
+ Expected header `duration: 210000.0`
846
+
529
847
  ### Encode_Duration_Header_floatSeconds
530
848
 
531
849
  - Endpoint: `get /encode/duration/header/float-seconds`
@@ -533,6 +851,36 @@ Expected header `duration: 35.625`
533
851
  Test float seconds encode for a duration header.
534
852
  Expected header `duration: 35.625`
535
853
 
854
+ ### Encode_Duration_Header_floatSecondsLargerUnit
855
+
856
+ - Endpoint: `get /encode/duration/header/float-seconds-larger-unit`
857
+
858
+ Test float seconds encode for a duration header where the duration is several minutes.
859
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2.5) in C#.
860
+ Expected header `duration: 150.0`
861
+
862
+ ### Encode_Duration_Header_int32Milliseconds
863
+
864
+ - Endpoint: `get /encode/duration/header/int32-milliseconds`
865
+
866
+ Test int32 milliseconds encode for a duration header.
867
+ Expected header `duration: 36000`
868
+
869
+ ### Encode_Duration_Header_int32MillisecondsArray
870
+
871
+ - Endpoint: `get /encode/duration/header/int32-milliseconds-array`
872
+
873
+ Test int32 milliseconds encode for a duration array header.
874
+ Expected header `duration: [36000,47000]`
875
+
876
+ ### Encode_Duration_Header_int32MillisecondsLargerUnit
877
+
878
+ - Endpoint: `get /encode/duration/header/int32-milliseconds-larger-unit`
879
+
880
+ Test int32 milliseconds encode for a duration header where the duration is several minutes.
881
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3) in C#.
882
+ Expected header `duration: 180000`
883
+
536
884
  ### Encode_Duration_Header_int32Seconds
537
885
 
538
886
  - Endpoint: `get /encode/duration/header/int32-seconds`
@@ -540,6 +888,14 @@ Expected header `duration: 35.625`
540
888
  Test int32 seconds encode for a duration header.
541
889
  Expected header `duration: 36`
542
890
 
891
+ ### Encode_Duration_Header_int32SecondsLargerUnit
892
+
893
+ - Endpoint: `get /encode/duration/header/int32-seconds-larger-unit`
894
+
895
+ Test int32 seconds encode for a duration header where the duration is several minutes.
896
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2) in C#.
897
+ Expected header `duration: 120`
898
+
543
899
  ### Encode_Duration_Header_iso8601
544
900
 
545
901
  - Endpoint: `get /encode/duration/header/iso8601`
@@ -575,16 +931,16 @@ Expected response body:
575
931
  }
576
932
  ```
577
933
 
578
- ### Encode_Duration_Property_float64Seconds
934
+ ### Encode_Duration_Property_float64Milliseconds
579
935
 
580
- - Endpoint: `get /encode/duration/property/float64-seconds`
936
+ - Endpoint: `get /encode/duration/property/float64-milliseconds`
581
937
 
582
- Test operation with request and response model contains a duration property with float64 seconds encode.
938
+ Test operation with request and response model contains a duration property with float64 milliseconds encode.
583
939
  Expected request body:
584
940
 
585
941
  ```json
586
942
  {
587
- "value": 35.625
943
+ "value": 35625
588
944
  }
589
945
  ```
590
946
 
@@ -592,15 +948,15 @@ Expected response body:
592
948
 
593
949
  ```json
594
950
  {
595
- "value": 35.625
951
+ "value": 35625
596
952
  }
597
953
  ```
598
954
 
599
- ### Encode_Duration_Property_floatSeconds
955
+ ### Encode_Duration_Property_float64Seconds
600
956
 
601
- - Endpoint: `get /encode/duration/property/float-seconds`
957
+ - Endpoint: `get /encode/duration/property/float64-seconds`
602
958
 
603
- Test operation with request and response model contains a duration property with float seconds encode.
959
+ Test operation with request and response model contains a duration property with float64 seconds encode.
604
960
  Expected request body:
605
961
 
606
962
  ```json
@@ -617,11 +973,96 @@ Expected response body:
617
973
  }
618
974
  ```
619
975
 
620
- ### Encode_Duration_Property_floatSecondsArray
976
+ ### Encode_Duration_Property_floatMilliseconds
621
977
 
622
- - Endpoint: `get /encode/duration/property/float-seconds-array`
978
+ - Endpoint: `get /encode/duration/property/float-milliseconds`
623
979
 
624
- Test operation with request and response model contains an array property which elements are duration with float seconds encode.
980
+ Test operation with request and response model contains a duration property with float milliseconds encode.
981
+ Expected request body:
982
+
983
+ ```json
984
+ {
985
+ "value": 35625
986
+ }
987
+ ```
988
+
989
+ Expected response body:
990
+
991
+ ```json
992
+ {
993
+ "value": 35625
994
+ }
995
+ ```
996
+
997
+ ### Encode_Duration_Property_floatMillisecondsArray
998
+
999
+ - Endpoint: `get /encode/duration/property/float-milliseconds-array`
1000
+
1001
+ Test operation with request and response model contains an array property which elements are duration with float milliseconds encode.
1002
+ Expected request body:
1003
+
1004
+ ```json
1005
+ {
1006
+ "value": [35625, 46750]
1007
+ }
1008
+ ```
1009
+
1010
+ Expected response body:
1011
+
1012
+ ```json
1013
+ {
1014
+ "value": [35625, 46750]
1015
+ }
1016
+ ```
1017
+
1018
+ ### Encode_Duration_Property_floatMillisecondsLargerUnit
1019
+
1020
+ - Endpoint: `get /encode/duration/property/float-milliseconds-larger-unit`
1021
+
1022
+ Test operation with request and response model contains a duration property with float milliseconds encode where the duration is several minutes.
1023
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3.5) in C#.
1024
+ Expected request body:
1025
+
1026
+ ```json
1027
+ {
1028
+ "value": 210000.0
1029
+ }
1030
+ ```
1031
+
1032
+ Expected response body:
1033
+
1034
+ ```json
1035
+ {
1036
+ "value": 210000.0
1037
+ }
1038
+ ```
1039
+
1040
+ ### Encode_Duration_Property_floatSeconds
1041
+
1042
+ - Endpoint: `get /encode/duration/property/float-seconds`
1043
+
1044
+ Test operation with request and response model contains a duration property with float seconds encode.
1045
+ Expected request body:
1046
+
1047
+ ```json
1048
+ {
1049
+ "value": 35.625
1050
+ }
1051
+ ```
1052
+
1053
+ Expected response body:
1054
+
1055
+ ```json
1056
+ {
1057
+ "value": 35.625
1058
+ }
1059
+ ```
1060
+
1061
+ ### Encode_Duration_Property_floatSecondsArray
1062
+
1063
+ - Endpoint: `get /encode/duration/property/float-seconds-array`
1064
+
1065
+ Test operation with request and response model contains an array property which elements are duration with float seconds encode.
625
1066
  Expected request body:
626
1067
 
627
1068
  ```json
@@ -638,6 +1079,71 @@ Expected response body:
638
1079
  }
639
1080
  ```
640
1081
 
1082
+ ### Encode_Duration_Property_floatSecondsLargerUnit
1083
+
1084
+ - Endpoint: `get /encode/duration/property/float-seconds-larger-unit`
1085
+
1086
+ Test operation with request and response model contains a duration property with float seconds encode where the duration is several minutes.
1087
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2.5) in C#.
1088
+ Expected request body:
1089
+
1090
+ ```json
1091
+ {
1092
+ "value": 150.0
1093
+ }
1094
+ ```
1095
+
1096
+ Expected response body:
1097
+
1098
+ ```json
1099
+ {
1100
+ "value": 150.0
1101
+ }
1102
+ ```
1103
+
1104
+ ### Encode_Duration_Property_int32Milliseconds
1105
+
1106
+ - Endpoint: `get /encode/duration/property/int32-milliseconds`
1107
+
1108
+ Test operation with request and response model contains a duration property with int32 milliseconds encode.
1109
+ Expected request body:
1110
+
1111
+ ```json
1112
+ {
1113
+ "value": 36000
1114
+ }
1115
+ ```
1116
+
1117
+ Expected response body:
1118
+
1119
+ ```json
1120
+ {
1121
+ "value": 36000
1122
+ }
1123
+ ```
1124
+
1125
+ ### Encode_Duration_Property_int32MillisecondsLargerUnit
1126
+
1127
+ - Endpoint: `get /encode/duration/property/int32-milliseconds-larger-unit`
1128
+
1129
+ Test operation with request and response model contains a duration property with int32 milliseconds encode where the duration is several minutes.
1130
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3) in C#.
1131
+ Expected request body:
1132
+
1133
+ ```json
1134
+ {
1135
+ "value": 180000
1136
+ }
1137
+ ```
1138
+
1139
+ Expected response body:
1140
+
1141
+ ```json
1142
+ {
1143
+ "value": 180000
1144
+ }
1145
+ ```
1146
+
641
1147
  ### Encode_Duration_Property_int32Seconds
642
1148
 
643
1149
  - Endpoint: `get /encode/duration/property/int32-seconds`
@@ -659,6 +1165,28 @@ Expected response body:
659
1165
  }
660
1166
  ```
661
1167
 
1168
+ ### Encode_Duration_Property_int32SecondsLargerUnit
1169
+
1170
+ - Endpoint: `get /encode/duration/property/int32-seconds-larger-unit`
1171
+
1172
+ Test operation with request and response model contains a duration property with int32 seconds encode where the duration is several minutes.
1173
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2) in C#.
1174
+ Expected request body:
1175
+
1176
+ ```json
1177
+ {
1178
+ "value": 120
1179
+ }
1180
+ ```
1181
+
1182
+ Expected response body:
1183
+
1184
+ ```json
1185
+ {
1186
+ "value": 120
1187
+ }
1188
+ ```
1189
+
662
1190
  ### Encode_Duration_Property_iso8601
663
1191
 
664
1192
  - Endpoint: `post /encode/duration/property/iso8601`
@@ -687,6 +1215,13 @@ Expected response body:
687
1215
  Test default encode for a duration parameter.
688
1216
  Expected query parameter `input=P40D`
689
1217
 
1218
+ ### Encode_Duration_Query_float64Milliseconds
1219
+
1220
+ - Endpoint: `get /encode/duration/query/float64-milliseconds`
1221
+
1222
+ Test float64 milliseconds encode for a duration parameter.
1223
+ Expected query parameter `input=35625`
1224
+
690
1225
  ### Encode_Duration_Query_float64Seconds
691
1226
 
692
1227
  - Endpoint: `get /encode/duration/query/float64-seconds`
@@ -694,6 +1229,21 @@ Expected query parameter `input=P40D`
694
1229
  Test float64 seconds encode for a duration parameter.
695
1230
  Expected query parameter `input=35.625`
696
1231
 
1232
+ ### Encode_Duration_Query_floatMilliseconds
1233
+
1234
+ - Endpoint: `get /encode/duration/query/float-milliseconds`
1235
+
1236
+ Test float milliseconds encode for a duration parameter.
1237
+ Expected query parameter `input=35625`
1238
+
1239
+ ### Encode_Duration_Query_floatMillisecondsLargerUnit
1240
+
1241
+ - Endpoint: `get /encode/duration/query/float-milliseconds-larger-unit`
1242
+
1243
+ Test float milliseconds encode for a duration parameter where the duration is several minutes.
1244
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3.5) in C#.
1245
+ Expected query parameter `input=210000.0`
1246
+
697
1247
  ### Encode_Duration_Query_floatSeconds
698
1248
 
699
1249
  - Endpoint: `get /encode/duration/query/float-seconds`
@@ -701,6 +1251,36 @@ Expected query parameter `input=35.625`
701
1251
  Test float seconds encode for a duration parameter.
702
1252
  Expected query parameter `input=35.625`
703
1253
 
1254
+ ### Encode_Duration_Query_floatSecondsLargerUnit
1255
+
1256
+ - Endpoint: `get /encode/duration/query/float-seconds-larger-unit`
1257
+
1258
+ Test float seconds encode for a duration parameter where the duration is several minutes.
1259
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2.5) in C#.
1260
+ Expected query parameter `input=150.0`
1261
+
1262
+ ### Encode_Duration_Query_int32Milliseconds
1263
+
1264
+ - Endpoint: `get /encode/duration/query/int32-milliseconds`
1265
+
1266
+ Test int32 milliseconds encode for a duration parameter.
1267
+ Expected query parameter `input=36000`
1268
+
1269
+ ### Encode_Duration_Query_int32MillisecondsArray
1270
+
1271
+ - Endpoint: `get /encode/duration/query/int32-milliseconds-array`
1272
+
1273
+ Test int32 milliseconds encode for a duration array parameter.
1274
+ Expected query parameter `input=36000,47000`
1275
+
1276
+ ### Encode_Duration_Query_int32MillisecondsLargerUnit
1277
+
1278
+ - Endpoint: `get /encode/duration/query/int32-milliseconds-larger-unit`
1279
+
1280
+ Test int32 milliseconds encode for a duration parameter where the duration is several minutes.
1281
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3) in C#.
1282
+ Expected query parameter `input=180000`
1283
+
704
1284
  ### Encode_Duration_Query_int32Seconds
705
1285
 
706
1286
  - Endpoint: `get /encode/duration/query/int32-seconds`
@@ -715,6 +1295,14 @@ Expected query parameter `input=36`
715
1295
  Test int32 seconds encode for a duration array parameter.
716
1296
  Expected query parameter `input=36,47`
717
1297
 
1298
+ ### Encode_Duration_Query_int32SecondsLargerUnit
1299
+
1300
+ - Endpoint: `get /encode/duration/query/int32-seconds-larger-unit`
1301
+
1302
+ Test int32 seconds encode for a duration parameter where the duration is several minutes.
1303
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2) in C#.
1304
+ Expected query parameter `input=120`
1305
+
718
1306
  ### Encode_Duration_Query_iso8601
719
1307
 
720
1308
  - Endpoint: `get /encode/duration/query/iso8601`
@@ -838,7 +1426,10 @@ Expected request body for `set`
838
1426
  { "name": "foo" }
839
1427
  ```
840
1428
 
1429
+ Expected Content-Type header: application/json
1430
+
841
1431
  Expected no request body for `omit`
1432
+ Expected Content-Type header: must NOT be present
842
1433
 
843
1434
  ### Parameters_BodyOptionality_requiredExplicit
844
1435
 
@@ -894,11 +1485,54 @@ This test is testing sending a pipes collection format array query parameters
894
1485
 
895
1486
  This test is testing sending a ssv collection format array query parameters
896
1487
 
897
- ### Parameters_CollectionFormat_Query_tsv
1488
+ ### Parameters_Path_normal
1489
+
1490
+ - Endpoint: `get /parameters/path/normal/{name}`
1491
+
1492
+ Test case for normal path parameter.
1493
+
1494
+ Should generate an operation like below:
1495
+
1496
+ ```
1497
+ normal(name: string)
1498
+ ```
1499
+
1500
+ Expected request path:
1501
+
1502
+ ```
1503
+ /normal/foo
1504
+ ```
1505
+
1506
+ ### Parameters_Path_optional
1507
+
1508
+ - Endpoint: `get /parameters/path/optional{/name}`
1509
+
1510
+ Test case for optional path parameter.
1511
+
1512
+ Should generate an operation like below:
1513
+
1514
+ ```
1515
+ optional(name?: string)
1516
+ ```
1517
+
1518
+ Expected two request:
1519
+ First request path:
1520
+
1521
+ ```
1522
+ /optional
1523
+ ```
898
1524
 
899
- - Endpoint: `get /parameters/collection-format/query/tsv`
1525
+ Second request path:
900
1526
 
901
- This test is testing sending a tsv collection format array query parameters
1527
+ ```
1528
+ /optional/foo
1529
+ ```
1530
+
1531
+ ### Parameters_Query_Constant_post
1532
+
1533
+ - Endpoint: `post /parameters/query/constant`
1534
+
1535
+ Expect to handle a constant value for query and mock api returns nothing
902
1536
 
903
1537
  ### Parameters_Spread_Alias_spreadAsRequestBody
904
1538
 
@@ -1165,7 +1799,7 @@ Expected input body:
1165
1799
  }
1166
1800
  ],
1167
1801
  "intValue": 1,
1168
- "floatValue": 1.1,
1802
+ "floatValue": 1.25,
1169
1803
  "innerModel": {
1170
1804
  "name": "InnerMadge",
1171
1805
  "description": "innerDesc"
@@ -1193,7 +1827,7 @@ Expected response body:
1193
1827
  }
1194
1828
  ],
1195
1829
  "intValue": 1,
1196
- "floatValue": 1.1,
1830
+ "floatValue": 1.25,
1197
1831
  "innerModel": {
1198
1832
  "name": "InnerMadge",
1199
1833
  "description": "innerDesc"
@@ -1309,9 +1943,9 @@ Expected request body is a string '{cat}'.
1309
1943
  Expect request (
1310
1944
 
1311
1945
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
1312
- appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
1946
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
1313
1947
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
1314
- If there are duplicated filename in same filedName, cadl-ranch can't parse them all.
1948
+ If there are duplicated filename in same filedName, server can't parse them all.
1315
1949
  ):
1316
1950
 
1317
1951
  ```
@@ -1334,9 +1968,9 @@ Content-Type: application/octet-stream;
1334
1968
  Expect request (
1335
1969
 
1336
1970
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
1337
- appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
1971
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
1338
1972
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
1339
- If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
1973
+ If there are duplicated filename in same fieldName, server can't parse them all.
1340
1974
  ):
1341
1975
 
1342
1976
  ```
@@ -1364,9 +1998,9 @@ Content-Type: application/octet-stream;
1364
1998
  Expect request (
1365
1999
 
1366
2000
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
1367
- appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
2001
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
1368
2002
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
1369
- If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
2003
+ If there are duplicated filename in same fieldName, server can't parse them all.
1370
2004
  ):
1371
2005
 
1372
2006
  ```
@@ -1416,6 +2050,68 @@ Content-Type: image/jpg
1416
2050
  --abcde12345--
1417
2051
  ```
1418
2052
 
2053
+ ### Payload_MultiPart_FormData_File_uploadFileArray
2054
+
2055
+ - Endpoint: `post /multipart/form-data/file/file-array`
2056
+
2057
+ Test multiple File instances in multipart form data.
2058
+ Expected request:
2059
+
2060
+ ```
2061
+ POST /multipart/form-data/file/file-array HTTP/1.1
2062
+ Content-Type: multipart/form-data; boundary=abcde12345
2063
+
2064
+ --abcde12345
2065
+ Content-Disposition: form-data; name="files"; filename="image1.png"
2066
+ Content-Type: image/png
2067
+
2068
+ {…file content of image.png…}
2069
+ --abcde12345
2070
+ Content-Disposition: form-data; name="files"; filename="image2.png"
2071
+ Content-Type: image/png
2072
+
2073
+ {…file content of image.png…}
2074
+ --abcde12345--
2075
+ ```
2076
+
2077
+ ### Payload_MultiPart_FormData_File_uploadFileRequiredFilename
2078
+
2079
+ - Endpoint: `post /multipart/form-data/file/required-filename`
2080
+
2081
+ Test File type in multipart form data with required filename.
2082
+ Expected request:
2083
+
2084
+ ```
2085
+ POST /multipart/form-data/file/required-filename HTTP/1.1
2086
+ Content-Type: multipart/form-data; boundary=abcde12345
2087
+
2088
+ --abcde12345
2089
+ Content-Disposition: form-data; name="file"; filename="image.png"
2090
+ Content-Type: image/png
2091
+
2092
+ {…file content of image.png…}
2093
+ --abcde12345--
2094
+ ```
2095
+
2096
+ ### Payload_MultiPart_FormData_File_uploadFileSpecificContentType
2097
+
2098
+ - Endpoint: `post /multipart/form-data/file/specific-content-type`
2099
+
2100
+ Test File type in multipart form data with specific content type.
2101
+ Expected request:
2102
+
2103
+ ```
2104
+ POST /multipart/form-data/file/specific-content-type HTTP/1.1
2105
+ Content-Type: multipart/form-data; boundary=abcde12345
2106
+
2107
+ --abcde12345
2108
+ Content-Disposition: form-data; name="file"; filename="image.png"
2109
+ Content-Type: image/png
2110
+
2111
+ {…file content of image.png…}
2112
+ --abcde12345--
2113
+ ```
2114
+
1419
2115
  ### Payload_MultiPart_FormData_fileArrayAndBasic
1420
2116
 
1421
2117
  - Endpoint: `post /multipart/form-data/complex-parts`
@@ -1423,9 +2119,9 @@ Content-Type: image/jpg
1423
2119
  Expect request (
1424
2120
 
1425
2121
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
1426
- appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
2122
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
1427
2123
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
1428
- If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
2124
+ If there are duplicated filename in same fieldName, server can't parse them all.
1429
2125
  ):
1430
2126
 
1431
2127
  ```
@@ -1533,7 +2229,7 @@ Content-Type: application/octet-stream
1533
2229
 
1534
2230
  - Endpoint: `post /multipart/form-data/complex-parts-with-httppart`
1535
2231
 
1536
- For File part, filename will not be checked but it is necessary otherwise cadl-ranch can't parse it;
2232
+ For File part, filename will not be checked but it is necessary otherwise server can't parse it;
1537
2233
  content-type will be checked with value "application/octet-stream". Expect request:
1538
2234
 
1539
2235
  ```
@@ -1606,9 +2302,9 @@ Content-Type: text/plain
1606
2302
  Expect request (
1607
2303
 
1608
2304
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
1609
- appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
2305
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
1610
2306
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
1611
- If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
2307
+ If there are duplicated filename in same fieldName, server can't parse them all.
1612
2308
  ):
1613
2309
 
1614
2310
  ```
@@ -1638,9 +2334,9 @@ Content-Type: application/octet-stream
1638
2334
  Please send request twice, first time with only profileImage, second time with both profileImage and picture(
1639
2335
 
1640
2336
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
1641
- appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
2337
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
1642
2338
  - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
1643
- If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
2339
+ If there are duplicated filename in same fieldName, server can't parse them all.
1644
2340
  ):
1645
2341
 
1646
2342
  ```
@@ -1661,39 +2357,642 @@ Content-Type: application/octet-stream
1661
2357
  --abcde12345--
1662
2358
  ```
1663
2359
 
1664
- ### Payload_Pageable_ServerDrivenPagination_link
2360
+ ### Payload_MultiPart_FormData_optionalParts
1665
2361
 
1666
- - Endpoint: `get /payload/pageable/server-driven-pagination/link`
2362
+ - Endpoint: `post /multipart/form-data/optional-parts`
1667
2363
 
1668
- Test case for using link as pagination.
2364
+ Please send request three times:
2365
+
2366
+ - First time with only id
2367
+ - Second time with only profileImage
2368
+ - Third time with both id and profileImage
2369
+
2370
+ Expect requests (
2371
+
2372
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
2373
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
2374
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
2375
+ If there are duplicated filename in same fieldName, server can't parse them all.
2376
+ ):
2377
+
2378
+ ```
2379
+ POST /upload HTTP/1.1
2380
+ Content-Length: 428
2381
+ Content-Type: multipart/form-data; boundary=abcde12345
2382
+
2383
+ --abcde12345
2384
+ Content-Disposition: form-data; name="id"
2385
+ Content-Type: text/plain
2386
+
2387
+ 123
2388
+ --abcde12345--
2389
+ ```
2390
+
2391
+ ```
2392
+ POST /upload HTTP/1.1
2393
+ Content-Length: 428
2394
+ Content-Type: multipart/form-data; boundary=abcde12345
2395
+
2396
+ --abcde12345
2397
+ Content-Disposition: form-data; name="profileImage"; filename="<any-or-no-name-is-ok>"
2398
+ Content-Type: application/octet-stream
2399
+
2400
+ {…file content of .jpg file…}
2401
+ --abcde12345--
2402
+ ```
2403
+
2404
+ ```
2405
+ POST /upload HTTP/1.1
2406
+ Content-Length: 428
2407
+ Content-Type: multipart/form-data; boundary=abcde12345
2408
+
2409
+ --abcde12345
2410
+ Content-Disposition: form-data; name="id"
2411
+ Content-Type: text/plain
2412
+
2413
+ 123
2414
+ --abcde12345
2415
+ Content-Disposition: form-data; name="profileImage"; filename="<any-or-no-name-is-ok>"
2416
+ Content-Type: application/octet-stream
2417
+
2418
+ {…file content of .jpg file…}
2419
+ --abcde12345--
2420
+ ```
2421
+
2422
+ ### Payload_MultiPart_FormData_withWireName
2423
+
2424
+ - Endpoint: `post /multipart/form-data/mixed-parts-with-wire-name`
2425
+
2426
+ Expect request with wire names (
2427
+
2428
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
2429
+ appropriate media type, server will check it; content-type of other parts is optional, server will ignore it.
2430
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
2431
+ If there are duplicated filename in same fieldName, server can't parse them all.
2432
+ ):
2433
+
2434
+ ```
2435
+ POST /upload HTTP/1.1
2436
+ Content-Length: 428
2437
+ Content-Type: multipart/form-data; boundary=abcde12345
2438
+
2439
+ --abcde12345
2440
+ Content-Disposition: form-data; name="id"
2441
+ Content-Type: text/plain
2442
+
2443
+ 123
2444
+ --abcde12345
2445
+ Content-Disposition: form-data; name="profileImage"; filename="<any-or-no-name-is-ok>"
2446
+ Content-Type: application/octet-stream;
2447
+
2448
+ {…file content of .jpg file…}
2449
+ --abcde12345--
2450
+ ```
2451
+
2452
+ ### Payload_Pageable_PageSize_listWithoutContinuation
2453
+
2454
+ - Endpoint: `get /payload/pageable/pagesize/without-continuation`
2455
+
2456
+ Test case for simple pagination without nextlink or continuationToken.
2457
+
2458
+ Single request:
2459
+ Expected route: /payload/pageable/pagesize/without-continuation
2460
+
2461
+ Expected response body:
2462
+
2463
+ ```json
2464
+ {
2465
+ "pets": [
2466
+ { "id": "1", "name": "dog" },
2467
+ { "id": "2", "name": "cat" },
2468
+ { "id": "3", "name": "bird" },
2469
+ { "id": "4", "name": "fish" }
2470
+ ]
2471
+ }
2472
+ ```
2473
+
2474
+ ### Payload_Pageable_PageSize_listWithPageSize
2475
+
2476
+ - Endpoint: `get /payload/pageable/pagesize/list`
2477
+
2478
+ Test case for pagination with a regular @pageSize parameter.
2479
+
2480
+ Two requests need to be tested:
2481
+
2482
+ 1. Request with pageSize=2:
2483
+ Expected route: /payload/pageable/pagesize/list?pageSize=2
2484
+
2485
+ Expected response body:
2486
+
2487
+ ```json
2488
+ {
2489
+ "pets": [
2490
+ { "id": "1", "name": "dog" },
2491
+ { "id": "2", "name": "cat" }
2492
+ ]
2493
+ }
2494
+ ```
2495
+
2496
+ 2. Request with pageSize=4:
2497
+ Expected route: /payload/pageable/pagesize/list?pageSize=4
2498
+
2499
+ Expected response body:
2500
+
2501
+ ```json
2502
+ {
2503
+ "pets": [
2504
+ { "id": "1", "name": "dog" },
2505
+ { "id": "2", "name": "cat" },
2506
+ { "id": "3", "name": "bird" },
2507
+ { "id": "4", "name": "fish" }
2508
+ ]
2509
+ }
2510
+ ```
2511
+
2512
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderNestedResponseBody
2513
+
2514
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body`
2515
+
2516
+ Test case for using continuation token as pagination with nested response structure. Continuation token is passed in the request header and nested within response body.
2517
+
2518
+ Two requests need to be tested.
2519
+
2520
+ 1. Initial request:
2521
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body?bar=bar
2522
+
2523
+ Expected request header:
2524
+ foo=foo
2525
+
2526
+ Expected response body:
2527
+
2528
+ ```json
2529
+ {
2530
+ "nestedItems": {
2531
+ "pets": [
2532
+ { "id": "1", "name": "dog" },
2533
+ { "id": "2", "name": "cat" }
2534
+ ]
2535
+ },
2536
+ "next": {
2537
+ "nextToken": "page2"
2538
+ }
2539
+ }
2540
+ ```
2541
+
2542
+ 2. Next page request:
2543
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body?bar=bar
2544
+
2545
+ Expected request header:
2546
+ token=page2
2547
+ foo=foo
2548
+
2549
+ Expected response body:
2550
+
2551
+ ```json
2552
+ {
2553
+ "nestedItems": {
2554
+ "pets": [
2555
+ { "id": "3", "name": "bird" },
2556
+ { "id": "4", "name": "fish" }
2557
+ ]
2558
+ }
2559
+ }
2560
+ ```
2561
+
2562
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderResponseBody
2563
+
2564
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-header-response-body`
2565
+
2566
+ Test case for using continuation token as pagination. Continuation token is passed in the request header and response body.
2567
+
2568
+ Two requests need to be tested.
2569
+
2570
+ 1. Initial request:
2571
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-response-body?bar=bar
2572
+
2573
+ Expected request header:
2574
+ foo=foo
2575
+
2576
+ Expected response body:
2577
+
2578
+ ```json
2579
+ {
2580
+ "pets": [
2581
+ { "id": "1", "name": "dog" },
2582
+ { "id": "2", "name": "cat" }
2583
+ ],
2584
+ "nextToken": "page2"
2585
+ }
2586
+ ```
2587
+
2588
+ 2. Next page request:
2589
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-response-body?bar=bar
2590
+
2591
+ Expected request header:
2592
+ token=page2
2593
+ foo=foo
2594
+
2595
+ Expected response body:
2596
+
2597
+ ```json
2598
+ {
2599
+ "pets": [
2600
+ { "id": "3", "name": "bird" },
2601
+ { "id": "4", "name": "fish" }
2602
+ ]
2603
+ }
2604
+ ```
2605
+
2606
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderResponseHeader
2607
+
2608
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-header-response-header`
2609
+
2610
+ Test case for using continuation token as pagination. Continuation token is passed in the request header and response header.
2611
+
2612
+ Two requests need to be tested.
2613
+
2614
+ 1. Initial request:
2615
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-response-header?bar=bar
2616
+
2617
+ Expected request header:
2618
+ foo=foo
2619
+
2620
+ Expected response body:
2621
+
2622
+ ```json
2623
+ {
2624
+ "pets": [
2625
+ { "id": "1", "name": "dog" },
2626
+ { "id": "2", "name": "cat" }
2627
+ ]
2628
+ }
2629
+ ```
2630
+
2631
+ Expected response header:
2632
+ next-token=page2
2633
+
2634
+ 2. Next page request:
2635
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-response-header?bar=bar
2636
+
2637
+ Expected request header:
2638
+ token=page2
2639
+ foo=foo
2640
+
2641
+ Expected response body:
2642
+
2643
+ ```json
2644
+ {
2645
+ "pets": [
2646
+ { "id": "3", "name": "bird" },
2647
+ { "id": "4", "name": "fish" }
2648
+ ]
2649
+ }
2650
+ ```
2651
+
2652
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryNestedResponseBody
2653
+
2654
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body`
2655
+
2656
+ Test case for using continuation token as pagination with nested response structure. Continuation token is passed in the request query and nested within response body.
2657
+
2658
+ Two requests need to be tested.
2659
+
2660
+ 1. Initial request:
2661
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body?bar=bar
2662
+
2663
+ Expected request header:
2664
+ foo=foo
2665
+
2666
+ Expected response body:
2667
+
2668
+ ```json
2669
+ {
2670
+ "nestedItems": {
2671
+ "pets": [
2672
+ { "id": "1", "name": "dog" },
2673
+ { "id": "2", "name": "cat" }
2674
+ ]
2675
+ },
2676
+ "nestedNext": {
2677
+ "nextToken": "page2"
2678
+ }
2679
+ }
2680
+ ```
2681
+
2682
+ 2. Next page request:
2683
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body?bar=bar&token=page2
2684
+
2685
+ Expected request header:
2686
+ foo=foo
2687
+
2688
+ Expected response body:
2689
+
2690
+ ```json
2691
+ {
2692
+ "nestedItems": {
2693
+ "pets": [
2694
+ { "id": "3", "name": "bird" },
2695
+ { "id": "4", "name": "fish" }
2696
+ ]
2697
+ }
2698
+ }
2699
+ ```
2700
+
2701
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryResponseBody
2702
+
2703
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-query-response-body`
2704
+
2705
+ Test case for using continuation token as pagination. Continuation token is passed in the request query and response body.
2706
+
2707
+ Two requests need to be tested.
2708
+
2709
+ 1. Initial request:
2710
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-response-body?bar=bar
2711
+
2712
+ Expected request header:
2713
+ foo=foo
2714
+
2715
+ Expected response body:
2716
+
2717
+ ```json
2718
+ {
2719
+ "pets": [
2720
+ { "id": "1", "name": "dog" },
2721
+ { "id": "2", "name": "cat" }
2722
+ ],
2723
+ "nextToken": "page2"
2724
+ }
2725
+ ```
2726
+
2727
+ 2. Next page request:
2728
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-response-body?bar=bar&token=page2
2729
+
2730
+ Expected request header:
2731
+ foo=foo
2732
+
2733
+ Expected response body:
2734
+
2735
+ ```json
2736
+ {
2737
+ "pets": [
2738
+ { "id": "3", "name": "bird" },
2739
+ { "id": "4", "name": "fish" }
2740
+ ]
2741
+ }
2742
+ ```
2743
+
2744
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryResponseHeader
2745
+
2746
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-query-response-header`
2747
+
2748
+ Test case for using continuation token as pagination. Continuation token is passed in the request query and response header.
2749
+
2750
+ Two requests need to be tested.
2751
+
2752
+ 1. Initial request:
2753
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-response-header?bar=bar
2754
+
2755
+ Expected request header:
2756
+ foo=foo
2757
+
2758
+ Expected response body:
2759
+
2760
+ ```json
2761
+ {
2762
+ "pets": [
2763
+ { "id": "1", "name": "dog" },
2764
+ { "id": "2", "name": "cat" }
2765
+ ]
2766
+ }
2767
+ ```
2768
+
2769
+ Expected response header:
2770
+ next-token=page2
2771
+
2772
+ 2. Next page request:
2773
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-response-header?bar=bar&token=page2
2774
+
2775
+ Expected request header:
2776
+ foo=foo
2777
+
2778
+ Expected response body:
2779
+
2780
+ ```json
2781
+ {
2782
+ "pets": [
2783
+ { "id": "3", "name": "bird" },
2784
+ { "id": "4", "name": "fish" }
2785
+ ]
2786
+ }
2787
+ ```
2788
+
2789
+ ### Payload_Pageable_ServerDrivenPagination_link
2790
+
2791
+ - Endpoint: `get /payload/pageable/server-driven-pagination/link`
2792
+
2793
+ Test case for using link as pagination.
2794
+
2795
+ Two requests need to be tested.
2796
+
2797
+ 1. Initial request:
2798
+ Expected route: /payload/pageable/server-driven-pagination/link
2799
+ Expected response body:
2800
+
2801
+ ```json
2802
+ {
2803
+ "pets": [
2804
+ { "id": "1", "name": "dog" },
2805
+ { "id": "2", "name": "cat" }
2806
+ ],
2807
+ "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/link/nextPage"
2808
+ }
2809
+ ```
2810
+
2811
+ 2. Next page request:
2812
+ Expected route: /payload/pageable/server-driven-pagination/link/nextPage
2813
+ Expected response body:
2814
+
2815
+ ```json
2816
+ {
2817
+ "pets": [
2818
+ { "id": "3", "name": "bird" },
2819
+ { "id": "4", "name": "fish" }
2820
+ ]
2821
+ }
2822
+ ```
2823
+
2824
+ ### Payload_Pageable_ServerDrivenPagination_linkString
2825
+
2826
+ - Endpoint: `get /payload/pageable/server-driven-pagination/link-string`
2827
+
2828
+ Test case for using link as pagination with string nextLink.
2829
+
2830
+ Two requests need to be tested.
2831
+
2832
+ 1. Initial request:
2833
+ Expected route: /payload/pageable/server-driven-pagination/link-string
2834
+ Expected response body:
2835
+
2836
+ ```json
2837
+ {
2838
+ "pets": [
2839
+ { "id": "1", "name": "dog" },
2840
+ { "id": "2", "name": "cat" }
2841
+ ],
2842
+ "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/link-string/nextPage"
2843
+ }
2844
+ ```
2845
+
2846
+ 2. Next page request:
2847
+ Expected route: /payload/pageable/server-driven-pagination/link-string/nextPage
2848
+ Expected response body:
2849
+
2850
+ ```json
2851
+ {
2852
+ "pets": [
2853
+ { "id": "3", "name": "bird" },
2854
+ { "id": "4", "name": "fish" }
2855
+ ]
2856
+ }
2857
+ ```
2858
+
2859
+ ### Payload_Pageable_ServerDrivenPagination_nestedLink
2860
+
2861
+ - Endpoint: `get /payload/pageable/server-driven-pagination/nested-link`
2862
+
2863
+ Test case for using link as pagination with nested structure.
2864
+
2865
+ Two requests need to be tested.
2866
+
2867
+ 1. Initial request:
2868
+ Expected route: /payload/pageable/server-driven-pagination/nested-link
2869
+ Expected response body:
2870
+
2871
+ ```json
2872
+ {
2873
+ "nestedItems": {
2874
+ "pets": [
2875
+ { "id": "1", "name": "dog" },
2876
+ { "id": "2", "name": "cat" }
2877
+ ]
2878
+ },
2879
+ "nestedNext": {
2880
+ "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/nested-link/nextPage"
2881
+ }
2882
+ }
2883
+ ```
2884
+
2885
+ 2. Next page request:
2886
+ Expected route: /payload/pageable/server-driven-pagination/nested-link/nextPage
2887
+ Expected response body:
2888
+
2889
+ ```json
2890
+ {
2891
+ "nestedItems": {
2892
+ "pets": [
2893
+ { "id": "3", "name": "bird" },
2894
+ { "id": "4", "name": "fish" }
2895
+ ]
2896
+ }
2897
+ }
2898
+ ```
2899
+
2900
+ ### Payload_Pageable_XmlPagination_listWithContinuation
2901
+
2902
+ - Endpoint: `get /payload/pageable/xml/list-with-continuation`
2903
+
2904
+ Test case for XML pagination with continuation token. Continuation token is passed in the request query and response body.
2905
+
2906
+ Two requests need to be tested.
2907
+
2908
+ 1. Initial request:
2909
+ Expected route: /payload/pageable/xml/list
2910
+
2911
+ Expected response body:
2912
+
2913
+ ```xml
2914
+ <PetListResult>
2915
+ <Pets>
2916
+ <Pet>
2917
+ <Id>1</Id>
2918
+ <Name>dog</Name>
2919
+ </Pet>
2920
+ <Pet>
2921
+ <Id>2</Id>
2922
+ <Name>cat</Name>
2923
+ </Pet>
2924
+ </Pets>
2925
+ <NextMarker>page2</NextMarker>
2926
+ </PetListResult>
2927
+ ```
2928
+
2929
+ 2. Next page request:
2930
+ Expected route: /payload/pageable/xml/list?marker=page2
2931
+
2932
+ Expected response body:
2933
+
2934
+ ```xml
2935
+ <PetListResult>
2936
+ <Pets>
2937
+ <Pet>
2938
+ <Id>3</Id>
2939
+ <Name>bird</Name>
2940
+ </Pet>
2941
+ <Pet>
2942
+ <Id>4</Id>
2943
+ <Name>fish</Name>
2944
+ </Pet>
2945
+ </Pets>
2946
+ </PetListResult>
2947
+ ```
2948
+
2949
+ ### Payload_Pageable_XmlPagination_listWithNextLink
2950
+
2951
+ - Endpoint: `get /payload/pageable/xml/list-with-next-link`
2952
+
2953
+ Test case for XML pagination with next link.
1669
2954
 
1670
2955
  Two requests need to be tested.
1671
2956
 
1672
2957
  1. Initial request:
1673
- Expected route: /payload/pageable/server-driven-pagination/link
1674
- Expected response body:
2958
+ Expected route: /payload/pageable/xml/list-with-next-link
1675
2959
 
1676
- ```json
1677
- {
1678
- "pets": [
1679
- { "id": "1", "name": "dog" },
1680
- { "id": "2", "name": "cat" }
1681
- ],
1682
- "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/link/nextPage"
1683
- }
2960
+ Expected response body:
2961
+
2962
+ ```xml
2963
+ <PetListResult>
2964
+ <Pets>
2965
+ <Pet>
2966
+ <Id>1</Id>
2967
+ <Name>dog</Name>
2968
+ </Pet>
2969
+ <Pet>
2970
+ <Id>2</Id>
2971
+ <Name>cat</Name>
2972
+ </Pet>
2973
+ </Pets>
2974
+ <NextLink>http://[host]:[port]/payload/pageable/xml/list-with-next-link/nextPage</NextLink>
2975
+ </PetListResult>
1684
2976
  ```
1685
2977
 
1686
2978
  2. Next page request:
1687
- Expected route: /payload/pageable/server-driven-pagination/link/nextPage
1688
- Expected response body:
2979
+ Expected route: /payload/pageable/xml/list-with-next-link/nextPage
1689
2980
 
1690
- ```json
1691
- {
1692
- "pets": [
1693
- { "id": "3", "name": "bird" },
1694
- { "id": "4", "name": "fish" }
1695
- ]
1696
- }
2981
+ Expected response body:
2982
+
2983
+ ```xml
2984
+ <PetListResult>
2985
+ <Pets>
2986
+ <Pet>
2987
+ <Id>3</Id>
2988
+ <Name>bird</Name>
2989
+ </Pet>
2990
+ <Pet>
2991
+ <Id>4</Id>
2992
+ <Name>fish</Name>
2993
+ </Pet>
2994
+ </Pets>
2995
+ </PetListResult>
1697
2996
  ```
1698
2997
 
1699
2998
  ### Payload_Xml_ModelWithArrayOfModelValue_get
@@ -1762,6 +3061,32 @@ Expected request body:
1762
3061
  </ModelWithAttributes>
1763
3062
  ```
1764
3063
 
3064
+ ### Payload_Xml_ModelWithDatetimeValue_get
3065
+
3066
+ - Endpoint: `get /payload/xml/modelWithDatetime`
3067
+
3068
+ Expected response body:
3069
+
3070
+ ```xml
3071
+ <ModelWithDatetime>
3072
+ <rfc3339>2022-08-26T18:38:00.000Z</rfc3339>
3073
+ <rfc7231>Fri, 26 Aug 2022 14:38:00 GMT</rfc7231>
3074
+ </ModelWithDatetime>
3075
+ ```
3076
+
3077
+ ### Payload_Xml_ModelWithDatetimeValue_put
3078
+
3079
+ - Endpoint: `put /payload/xml/modelWithDatetime`
3080
+
3081
+ Expected request body:
3082
+
3083
+ ```xml
3084
+ <ModelWithDatetime>
3085
+ <rfc3339>2022-08-26T18:38:00.000Z</rfc3339>
3086
+ <rfc7231>Fri, 26 Aug 2022 14:38:00 GMT</rfc7231>
3087
+ </ModelWithDatetime>
3088
+ ```
3089
+
1765
3090
  ### Payload_Xml_ModelWithDictionaryValue_get
1766
3091
 
1767
3092
  - Endpoint: `get /payload/xml/modelWithDictionary`
@@ -1858,6 +3183,30 @@ Expected request body:
1858
3183
  </ModelWithEncodedNamesSrc>
1859
3184
  ```
1860
3185
 
3186
+ ### Payload_Xml_ModelWithEnumValue_get
3187
+
3188
+ - Endpoint: `get /payload/xml/modelWithEnum`
3189
+
3190
+ Expected response body:
3191
+
3192
+ ```xml
3193
+ <ModelWithEnum>
3194
+ <status>success</status>
3195
+ </ModelWithEnum>
3196
+ ```
3197
+
3198
+ ### Payload_Xml_ModelWithEnumValue_put
3199
+
3200
+ - Endpoint: `put /payload/xml/modelWithEnum`
3201
+
3202
+ Expected request body:
3203
+
3204
+ ```xml
3205
+ <ModelWithEnum>
3206
+ <status>success</status>
3207
+ </ModelWithEnum>
3208
+ ```
3209
+
1861
3210
  ### Payload_Xml_ModelWithOptionalFieldValue_get
1862
3211
 
1863
3212
  - Endpoint: `get /payload/xml/modelWithOptionalField`
@@ -2082,6 +3431,19 @@ Expected request body:
2082
3431
  </SimpleModel>
2083
3432
  ```
2084
3433
 
3434
+ ### Payload_Xml_XmlErrorValue_get
3435
+
3436
+ - Endpoint: `get /payload/xml/error`
3437
+
3438
+ Expected error response body:
3439
+
3440
+ ```xml
3441
+ <XmlErrorBody>
3442
+ <message>Something went wrong</message>
3443
+ <code>400</code>
3444
+ </XmlErrorBody>
3445
+ ```
3446
+
2085
3447
  ### Response_StatusCodeRange_errorResponseStatusCode404
2086
3448
 
2087
3449
  - Endpoint: `get /response/status-code-range/error-response-status-code-404`
@@ -2200,7 +3562,7 @@ Expected path: /routes/path/label/standard/record.a,1,b,2
2200
3562
 
2201
3563
  Test matrix expansion with explode: true when passed an array value.
2202
3564
  Param value: ["a","b"]
2203
- Expected path: /routes/path/matrix/explode/array;a.b
3565
+ Expected path: /routes/path/matrix/explode/array;param=a;param=b
2204
3566
 
2205
3567
  ### Routes_PathParameters_MatrixExpansion_Explode_primitive
2206
3568
 
@@ -2208,7 +3570,7 @@ Expected path: /routes/path/matrix/explode/array;a.b
2208
3570
 
2209
3571
  Test matrix expansion with explode: true when passed a primitive value.
2210
3572
  Param value: "a"
2211
- Expected path: /routes/path/matrix/explode/primitive;a
3573
+ Expected path: /routes/path/matrix/explode/primitive;param=a
2212
3574
 
2213
3575
  ### Routes_PathParameters_MatrixExpansion_Explode_record
2214
3576
 
@@ -2224,7 +3586,7 @@ Expected path: /routes/path/matrix/explode/record;a=1;b=2
2224
3586
 
2225
3587
  Test matrix expansion with explode: false when passed an array value.
2226
3588
  Param value: ["a","b"]
2227
- Expected path: /routes/path/matrix/standard/array;a,b
3589
+ Expected path: /routes/path/matrix/standard/array;param=a;param=b
2228
3590
 
2229
3591
  ### Routes_PathParameters_MatrixExpansion_Standard_primitive
2230
3592
 
@@ -2232,7 +3594,7 @@ Expected path: /routes/path/matrix/standard/array;a,b
2232
3594
 
2233
3595
  Test matrix expansion with explode: false when passed a primitive value.
2234
3596
  Param value: "a"
2235
- Expected path: /routes/path/matrix/standard/primitive;a
3597
+ Expected path: /routes/path/matrix/standard/primitive;param=a
2236
3598
 
2237
3599
  ### Routes_PathParameters_MatrixExpansion_Standard_record
2238
3600
 
@@ -2240,7 +3602,7 @@ Expected path: /routes/path/matrix/standard/primitive;a
2240
3602
 
2241
3603
  Test matrix expansion with explode: false when passed a record value.
2242
3604
  Param value: {a: 1, b: 2}
2243
- Expected path: /routes/path/matrix/standard/record;a,1,b,2
3605
+ Expected path: /routes/path/matrix/standard/record;a=1;b=2
2244
3606
 
2245
3607
  ### Routes_PathParameters_PathExpansion_Explode_array
2246
3608
 
@@ -2615,6 +3977,36 @@ Expected header parameters:
2615
3977
 
2616
3978
  Check we recognize Repeatability-Request-ID and Repeatability-First-Sent.
2617
3979
 
3980
+ ### SpecialWords_ExtensibleStrings_putExtensibleStringValue
3981
+
3982
+ - Endpoint: `put /special-words/extensible-strings/string`
3983
+
3984
+ Verify that enum members with special word names can be sent and received properly.
3985
+ Send 'class' and expect the same value back.
3986
+
3987
+ ### SpecialWords_ModelProperties_dictMethods
3988
+
3989
+ - Endpoint: `get /special-words/model-properties/dict-methods`
3990
+
3991
+ Verify that model properties can use names that are Python dict methods. These names (keys, items, values, etc.) may conflict with Python's dict class methods.
3992
+
3993
+ Send
3994
+
3995
+ ```json
3996
+ {
3997
+ "keys": "ok",
3998
+ "items": "ok",
3999
+ "values": "ok",
4000
+ "popitem": "ok",
4001
+ "clear": "ok",
4002
+ "update": "ok",
4003
+ "setdefault": "ok",
4004
+ "pop": "ok",
4005
+ "get": "ok",
4006
+ "copy": "ok"
4007
+ }
4008
+ ```
4009
+
2618
4010
  ### SpecialWords_ModelProperties_sameAsModel
2619
4011
 
2620
4012
  - Endpoint: `get /special-words/model-properties/same-as-model`
@@ -2627,6 +4019,18 @@ Send
2627
4019
  { "SameAsModel": "ok" }
2628
4020
  ```
2629
4021
 
4022
+ ### SpecialWords_ModelProperties_withList
4023
+
4024
+ - Endpoint: `get /special-words/model-properties/list`
4025
+
4026
+ Verify that a property can be named "list", which is a reserved word in many languages like Python.
4027
+
4028
+ Send
4029
+
4030
+ ```json
4031
+ { "list": "ok" }
4032
+ ```
4033
+
2630
4034
  ### SpecialWords_Models_and
2631
4035
 
2632
4036
  - Endpoint: `get /special-words/models/and`
@@ -3359,6 +4763,18 @@ Verify that the name "with" works. Send this parameter to pass with value `ok`.
3359
4763
 
3360
4764
  Verify that the name "yield" works. Send this parameter to pass with value `ok`.
3361
4765
 
4766
+ ### Streaming_Jsonl_Basic_receive
4767
+
4768
+ - Endpoint: `get /streaming/jsonl/basic/receive`
4769
+
4770
+ Basic jsonl streaming for response.
4771
+
4772
+ ### Streaming_Jsonl_Basic_send
4773
+
4774
+ - Endpoint: `post /streaming/jsonl/basic/send`
4775
+
4776
+ Basic jsonl streaming for request.
4777
+
3362
4778
  ### Type_Array_BooleanValue_get
3363
4779
 
3364
4780
  - Endpoint: `get /type/array/boolean`
@@ -3913,6 +5329,90 @@ Expect to send a known value. Mock api expect to receive 'Monday'
3913
5329
 
3914
5330
  Expect to handle an unknown value. Mock api expect to receive 'Weekend'
3915
5331
 
5332
+ ### Type_File_Body_downloadFileDefaultContentType
5333
+
5334
+ - Endpoint: `get /type/file/body/response/default-content-type`
5335
+
5336
+ Test File type as response body with unspecified content type.
5337
+ The File type accepts any content type. For testing, server will return image/png.
5338
+ Expected response:
5339
+
5340
+ - Content-Type header: image/png
5341
+ - Body: binary content matching packages/http-specs/assets/image.png
5342
+
5343
+ ### Type_File_Body_downloadFileJsonContentType
5344
+
5345
+ - Endpoint: `get /type/file/body/response/json-content-type`
5346
+
5347
+ Test File type as response body with JSON content type.
5348
+ Expected response:
5349
+
5350
+ - Content-Type header: application/json
5351
+ - Body: JSON content with file data
5352
+
5353
+ ### Type_File_Body_downloadFileMultipleContentTypes
5354
+
5355
+ - Endpoint: `get /type/file/body/response/multiple-content-types`
5356
+
5357
+ Test File type as response body with multiple allowed content types.
5358
+ Service will return image/png.
5359
+ Expected response:
5360
+
5361
+ - Content-Type header: image/png
5362
+ - Body: binary content matching packages/http-specs/assets/image.png
5363
+
5364
+ ### Type_File_Body_downloadFileSpecificContentType
5365
+
5366
+ - Endpoint: `get /type/file/body/response/specific-content-type`
5367
+
5368
+ Test File type as response body with specific content type.
5369
+ Expected response:
5370
+
5371
+ - Content-Type header: image/png
5372
+ - Body: binary content matching packages/http-specs/assets/image.png
5373
+
5374
+ ### Type_File_Body_uploadFileDefaultContentType
5375
+
5376
+ - Endpoint: `post /type/file/body/request/default-content-type`
5377
+
5378
+ Test File type as request body with unspecified content type.
5379
+ The File type accepts any content type. For testing, sender will use image/png.
5380
+ Expected request:
5381
+
5382
+ - Content-Type header: image/png
5383
+ - Body: binary content matching packages/http-specs/assets/image.png
5384
+
5385
+ ### Type_File_Body_uploadFileJsonContentType
5386
+
5387
+ - Endpoint: `post /type/file/body/request/json-content-type`
5388
+
5389
+ Test File type as request body with JSON content type.
5390
+ Expected request:
5391
+
5392
+ - Content-Type header: application/json
5393
+ - Body: JSON content with file data
5394
+
5395
+ ### Type_File_Body_uploadFileMultipleContentTypes
5396
+
5397
+ - Endpoint: `post /type/file/body/request/multiple-content-types`
5398
+
5399
+ Test File type as request body with multiple allowed content types (image/png or image/jpeg).
5400
+ Client should send image/png.
5401
+ Expected request:
5402
+
5403
+ - Content-Type header: image/png
5404
+ - Body: binary content matching packages/http-specs/assets/image.png
5405
+
5406
+ ### Type_File_Body_uploadFileSpecificContentType
5407
+
5408
+ - Endpoint: `post /type/file/body/request/specific-content-type`
5409
+
5410
+ Test File type as request body with specific content type.
5411
+ Expected request:
5412
+
5413
+ - Content-Type header: image/png
5414
+ - Body: binary content matching packages/http-specs/assets/image.png
5415
+
3916
5416
  ### Type_Model_Empty_getEmpty
3917
5417
 
3918
5418
  - Endpoint: `get /type/model/empty/alone`
@@ -4428,13 +5928,7 @@ Expected input body:
4428
5928
  - Endpoint: `get /type/model/visibility`
4429
5929
 
4430
5930
  Generate and receive output model with readonly properties.
4431
- Expected input body:
4432
-
4433
- ```json
4434
- {
4435
- "queryProp": 123
4436
- }
4437
- ```
5931
+ Expected no body with `?queryProp=123`.
4438
5932
 
4439
5933
  Expected response body:
4440
5934
 
@@ -4449,13 +5943,7 @@ Expected response body:
4449
5943
  - Endpoint: `head /type/model/visibility`
4450
5944
 
4451
5945
  Generate abd send put model with write/create properties.
4452
- Expected input body:
4453
-
4454
- ```json
4455
- {
4456
- "queryProp": 123
4457
- }
4458
- ```
5946
+ Expected no body with `?queryProp=123`.
4459
5947
 
4460
5948
  ### Type_Model_Visibility_patchModel
4461
5949
 
@@ -5152,42 +6640,6 @@ Expected input body:
5152
6640
  }
5153
6641
  ```
5154
6642
 
5155
- ### Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_get
5156
-
5157
- - Endpoint: `get /type/property/additionalProperties/spreadRecordDiscriminatedUnion`
5158
-
5159
- Expected response body:
5160
-
5161
- ```json
5162
- {
5163
- "name": "abc",
5164
- "prop1": { "kind": "kind0", "fooProp": "abc" },
5165
- "prop2": {
5166
- "kind": "kind1",
5167
- "start": "2021-01-01T00:00:00Z",
5168
- "end": "2021-01-02T00:00:00Z"
5169
- }
5170
- }
5171
- ```
5172
-
5173
- ### Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_put
5174
-
5175
- - Endpoint: `put /type/property/additionalProperties/spreadRecordDiscriminatedUnion`
5176
-
5177
- Expected input body:
5178
-
5179
- ```json
5180
- {
5181
- "name": "abc",
5182
- "prop1": { "kind": "kind0", "fooProp": "abc" },
5183
- "prop2": {
5184
- "kind": "kind1",
5185
- "start": "2021-01-01T00:00:00Z",
5186
- "end": "2021-01-02T00:00:00Z"
5187
- }
5188
- }
5189
- ```
5190
-
5191
6643
  ### Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion_get
5192
6644
 
5193
6645
  - Endpoint: `get /type/property/additionalProperties/spreadRecordNonDiscriminatedUnion`
@@ -6950,6 +8402,178 @@ Expect to handle a unknown type value. Mock api will return 'test'
6950
8402
 
6951
8403
  Expect to send a string value. Mock api expect to receive 'test'
6952
8404
 
8405
+ ### Type_Union_Discriminated_Envelope_Object_CustomProperties_get
8406
+
8407
+ - Endpoint: `get /type/union/discriminated/envelope/object/custom-properties`
8408
+
8409
+ Test discriminated union with custom property names.
8410
+ When value of query parameter "petType" is "cat" or no query parameter input, the expected response is:
8411
+
8412
+ ```json
8413
+ {
8414
+ "petType": "cat",
8415
+ "petData": {
8416
+ "name": "Whiskers",
8417
+ "meow": true
8418
+ }
8419
+ }
8420
+ ```
8421
+
8422
+ When it is "dog", expected response is:
8423
+
8424
+ ```json
8425
+ {
8426
+ "petType": "dog",
8427
+ "petData": {
8428
+ "name": "Rex",
8429
+ "bark": false
8430
+ }
8431
+ }
8432
+ ```
8433
+
8434
+ ### Type_Union_Discriminated_Envelope_Object_CustomProperties_put
8435
+
8436
+ - Endpoint: `put /type/union/discriminated/envelope/object/custom-properties`
8437
+
8438
+ Test discriminated union with custom property names.
8439
+ Send the union as:
8440
+
8441
+ ```json
8442
+ {
8443
+ "petType": "cat",
8444
+ "petData": {
8445
+ "name": "Whiskers",
8446
+ "meow": true
8447
+ }
8448
+ }
8449
+ ```
8450
+
8451
+ ### Type_Union_Discriminated_Envelope_Object_Default_get
8452
+
8453
+ - Endpoint: `get /type/union/discriminated/envelope/object/default`
8454
+
8455
+ Test discriminated union with envelope serialization.
8456
+ When value of query parameter "kind" is "cat" or no query parameter input, the expected response is:
8457
+
8458
+ ```json
8459
+ {
8460
+ "kind": "cat",
8461
+ "value": {
8462
+ "name": "Whiskers",
8463
+ "meow": true
8464
+ }
8465
+ }
8466
+ ```
8467
+
8468
+ When it is "dog", expected response is:
8469
+
8470
+ ```json
8471
+ {
8472
+ "kind": "dog",
8473
+ "value": {
8474
+ "name": "Rex",
8475
+ "bark": false
8476
+ }
8477
+ }
8478
+ ```
8479
+
8480
+ ### Type_Union_Discriminated_Envelope_Object_Default_put
8481
+
8482
+ - Endpoint: `put /type/union/discriminated/envelope/object/default`
8483
+
8484
+ Test discriminated union with envelope serialization.
8485
+ Send the union as:
8486
+
8487
+ ```json
8488
+ {
8489
+ "kind": "cat",
8490
+ "value": {
8491
+ "name": "Whiskers",
8492
+ "meow": true
8493
+ }
8494
+ }
8495
+ ```
8496
+
8497
+ ### Type_Union_Discriminated_NoEnvelope_CustomDiscriminator_get
8498
+
8499
+ - Endpoint: `get /type/union/discriminated/no-envelope/custom-discriminator`
8500
+
8501
+ Test discriminated union with inline discriminator and custom discriminator property name.
8502
+ When value of query parameter "type" is "cat" or no query parameter input, the expected response is:
8503
+
8504
+ ```json
8505
+ {
8506
+ "type": "cat",
8507
+ "name": "Whiskers",
8508
+ "meow": true
8509
+ }
8510
+ ```
8511
+
8512
+ When it is "dog", expected response is:
8513
+
8514
+ ```json
8515
+ {
8516
+ "type": "dog",
8517
+ "name": "Rex",
8518
+ "bark": false
8519
+ }
8520
+ ```
8521
+
8522
+ ### Type_Union_Discriminated_NoEnvelope_CustomDiscriminator_put
8523
+
8524
+ - Endpoint: `put /type/union/discriminated/no-envelope/custom-discriminator`
8525
+
8526
+ Test discriminated union with inline discriminator and custom discriminator property name.
8527
+ Send the union as:
8528
+
8529
+ ```json
8530
+ {
8531
+ "type": "cat",
8532
+ "name": "Whiskers",
8533
+ "meow": true
8534
+ }
8535
+ ```
8536
+
8537
+ ### Type_Union_Discriminated_NoEnvelope_Default_get
8538
+
8539
+ - Endpoint: `get /type/union/discriminated/no-envelope/default`
8540
+
8541
+ Test discriminated union with inline discriminator.
8542
+ When value of query parameter "kind" is "cat" or no query parameter input, the expected response is:
8543
+
8544
+ ```json
8545
+ {
8546
+ "kind": "cat",
8547
+ "name": "Whiskers",
8548
+ "meow": true
8549
+ }
8550
+ ```
8551
+
8552
+ When it is "dog", expected response is:
8553
+
8554
+ ```json
8555
+ {
8556
+ "kind": "dog",
8557
+ "name": "Rex",
8558
+ "bark": false
8559
+ }
8560
+ ```
8561
+
8562
+ ### Type_Union_Discriminated_NoEnvelope_Default_put
8563
+
8564
+ - Endpoint: `put /type/union/discriminated/no-envelope/default`
8565
+
8566
+ Test discriminated union with inline discriminator.
8567
+ Send the union as:
8568
+
8569
+ ```json
8570
+ {
8571
+ "kind": "cat",
8572
+ "name": "Whiskers",
8573
+ "meow": true
8574
+ }
8575
+ ```
8576
+
6953
8577
  ### Type_Union_EnumsOnly_get
6954
8578
 
6955
8579
  - Endpoint: `get /type/union/enums-only`
@@ -7401,7 +9025,7 @@ Expected request body:
7401
9025
 
7402
9026
  - Endpoint: `post /versioning/removed/api-version:{version}/v3`
7403
9027
 
7404
- path: "/versioning/removed/api-version[:]v1/v3"
9028
+ path: "/versioning/removed/api-version:v1/v3"
7405
9029
  Expected request body:
7406
9030
 
7407
9031
  ```json
@@ -7414,7 +9038,7 @@ Expected response body:
7414
9038
  { "id": "123", "enumProp": "enumMemberV1" }
7415
9039
  ```
7416
9040
 
7417
- path: "/versioning/removed/api-version[:]v2preview/v3"
9041
+ path: "/versioning/removed/api-version:v2preview/v3"
7418
9042
  Expected request body:
7419
9043
 
7420
9044
  ```json
@@ -7427,7 +9051,7 @@ Expected response body:
7427
9051
  { "id": "123" }
7428
9052
  ```
7429
9053
 
7430
- path: "/versioning/removed/api-version[:]v2/v3"
9054
+ path: "/versioning/removed/api-version:v2/v3"
7431
9055
  Expected request body:
7432
9056
 
7433
9057
  ```json