@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
@@ -45,6 +45,19 @@ namespace Query {
45
45
  input: duration,
46
46
  ): NoContentResponse;
47
47
 
48
+ @route("/int32-seconds-larger-unit")
49
+ @scenario
50
+ @scenarioDoc("""
51
+ Test int32 seconds encode for a duration parameter where the duration is several minutes.
52
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2) in C#.
53
+ Expected query parameter `input=120`
54
+ """)
55
+ op int32SecondsLargerUnit(
56
+ @query
57
+ @encode(DurationKnownEncoding.seconds, int32)
58
+ input: duration,
59
+ ): NoContentResponse;
60
+
48
61
  @route("/float-seconds")
49
62
  @scenario
50
63
  @scenarioDoc("""
@@ -57,6 +70,19 @@ namespace Query {
57
70
  input: duration,
58
71
  ): NoContentResponse;
59
72
 
73
+ @route("/float-seconds-larger-unit")
74
+ @scenario
75
+ @scenarioDoc("""
76
+ Test float seconds encode for a duration parameter where the duration is several minutes.
77
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2.5) in C#.
78
+ Expected query parameter `input=150.0`
79
+ """)
80
+ op floatSecondsLargerUnit(
81
+ @query
82
+ @encode(DurationKnownEncoding.seconds, float)
83
+ input: duration,
84
+ ): NoContentResponse;
85
+
60
86
  @route("/float64-seconds")
61
87
  @scenario
62
88
  @scenarioDoc("""
@@ -69,6 +95,68 @@ namespace Query {
69
95
  input: duration,
70
96
  ): NoContentResponse;
71
97
 
98
+ @route("/int32-milliseconds")
99
+ @scenario
100
+ @scenarioDoc("""
101
+ Test int32 milliseconds encode for a duration parameter.
102
+ Expected query parameter `input=36000`
103
+ """)
104
+ op int32Milliseconds(
105
+ @query
106
+ @encode(DurationKnownEncoding.milliseconds, int32)
107
+ input: duration,
108
+ ): NoContentResponse;
109
+
110
+ @route("/int32-milliseconds-larger-unit")
111
+ @scenario
112
+ @scenarioDoc("""
113
+ Test int32 milliseconds encode for a duration parameter where the duration is several minutes.
114
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3) in C#.
115
+ Expected query parameter `input=180000`
116
+ """)
117
+ op int32MillisecondsLargerUnit(
118
+ @query
119
+ @encode(DurationKnownEncoding.milliseconds, int32)
120
+ input: duration,
121
+ ): NoContentResponse;
122
+
123
+ @route("/float-milliseconds")
124
+ @scenario
125
+ @scenarioDoc("""
126
+ Test float milliseconds encode for a duration parameter.
127
+ Expected query parameter `input=35625`
128
+ """)
129
+ op floatMilliseconds(
130
+ @query
131
+ @encode(DurationKnownEncoding.milliseconds, float)
132
+ input: duration,
133
+ ): NoContentResponse;
134
+
135
+ @route("/float-milliseconds-larger-unit")
136
+ @scenario
137
+ @scenarioDoc("""
138
+ Test float milliseconds encode for a duration parameter where the duration is several minutes.
139
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3.5) in C#.
140
+ Expected query parameter `input=210000.0`
141
+ """)
142
+ op floatMillisecondsLargerUnit(
143
+ @query
144
+ @encode(DurationKnownEncoding.milliseconds, float)
145
+ input: duration,
146
+ ): NoContentResponse;
147
+
148
+ @route("/float64-milliseconds")
149
+ @scenario
150
+ @scenarioDoc("""
151
+ Test float64 milliseconds encode for a duration parameter.
152
+ Expected query parameter `input=35625`
153
+ """)
154
+ op float64Milliseconds(
155
+ @query
156
+ @encode(DurationKnownEncoding.milliseconds, float64)
157
+ input: duration,
158
+ ): NoContentResponse;
159
+
72
160
  @encode(DurationKnownEncoding.seconds, int32)
73
161
  scalar Int32Duration extends duration;
74
162
 
@@ -79,12 +167,23 @@ namespace Query {
79
167
  Expected query parameter `input=36,47`
80
168
  """)
81
169
  op int32SecondsArray(
82
- #suppress "deprecated" "Deprecated in next release"
83
- @query({
84
- format: "csv",
85
- })
170
+ @query
86
171
  input: Int32Duration[],
87
172
  ): NoContentResponse;
173
+
174
+ @encode(DurationKnownEncoding.milliseconds, int32)
175
+ scalar Int32MillisecondsDuration extends duration;
176
+
177
+ @route("/int32-milliseconds-array")
178
+ @scenario
179
+ @scenarioDoc("""
180
+ Test int32 milliseconds encode for a duration array parameter.
181
+ Expected query parameter `input=36000,47000`
182
+ """)
183
+ op int32MillisecondsArray(
184
+ @query
185
+ input: Int32MillisecondsDuration[],
186
+ ): NoContentResponse;
88
187
  }
89
188
 
90
189
  @route("/property")
@@ -113,6 +212,41 @@ namespace Property {
113
212
  value: duration;
114
213
  }
115
214
 
215
+ model Int32MillisecondsDurationProperty {
216
+ @encode(DurationKnownEncoding.milliseconds, int32)
217
+ value: duration;
218
+ }
219
+
220
+ model FloatMillisecondsDurationProperty {
221
+ @encode(DurationKnownEncoding.milliseconds, float)
222
+ value: duration;
223
+ }
224
+
225
+ model Float64MillisecondsDurationProperty {
226
+ @encode(DurationKnownEncoding.milliseconds, float64)
227
+ value: duration;
228
+ }
229
+
230
+ model Int32SecondsLargerUnitDurationProperty {
231
+ @encode(DurationKnownEncoding.seconds, int32)
232
+ value: duration;
233
+ }
234
+
235
+ model FloatSecondsLargerUnitDurationProperty {
236
+ @encode(DurationKnownEncoding.seconds, float)
237
+ value: duration;
238
+ }
239
+
240
+ model Int32MillisecondsLargerUnitDurationProperty {
241
+ @encode(DurationKnownEncoding.milliseconds, int32)
242
+ value: duration;
243
+ }
244
+
245
+ model FloatMillisecondsLargerUnitDurationProperty {
246
+ @encode(DurationKnownEncoding.milliseconds, float)
247
+ value: duration;
248
+ }
249
+
116
250
  @encode(DurationKnownEncoding.seconds, float32)
117
251
  scalar Float32Duration extends duration;
118
252
 
@@ -120,6 +254,13 @@ namespace Property {
120
254
  value: Float32Duration[];
121
255
  }
122
256
 
257
+ @encode(DurationKnownEncoding.milliseconds, float32)
258
+ scalar Float32MillisecondsDuration extends duration;
259
+
260
+ model FloatMillisecondsDurationArrayProperty {
261
+ value: Float32MillisecondsDuration[];
262
+ }
263
+
123
264
  @route("/default")
124
265
  @scenario
125
266
  @scenarioDoc("""
@@ -217,6 +358,69 @@ namespace Property {
217
358
  """)
218
359
  op float64Seconds(@body body: Float64SecondsDurationProperty): Float64SecondsDurationProperty;
219
360
 
361
+ @route("/int32-milliseconds")
362
+ @scenario
363
+ @scenarioDoc("""
364
+ Test operation with request and response model contains a duration property with int32 milliseconds encode.
365
+ Expected request body:
366
+ ```json
367
+ {
368
+ "value": 36000
369
+ }
370
+ ```
371
+ Expected response body:
372
+ ```json
373
+ {
374
+ "value": 36000
375
+ }
376
+ ```
377
+ """)
378
+ op int32Milliseconds(
379
+ @body body: Int32MillisecondsDurationProperty,
380
+ ): Int32MillisecondsDurationProperty;
381
+
382
+ @route("/float-milliseconds")
383
+ @scenario
384
+ @scenarioDoc("""
385
+ Test operation with request and response model contains a duration property with float milliseconds encode.
386
+ Expected request body:
387
+ ```json
388
+ {
389
+ "value": 35625
390
+ }
391
+ ```
392
+ Expected response body:
393
+ ```json
394
+ {
395
+ "value": 35625
396
+ }
397
+ ```
398
+ """)
399
+ op floatMilliseconds(
400
+ @body body: FloatMillisecondsDurationProperty,
401
+ ): FloatMillisecondsDurationProperty;
402
+
403
+ @route("/float64-milliseconds")
404
+ @scenario
405
+ @scenarioDoc("""
406
+ Test operation with request and response model contains a duration property with float64 milliseconds encode.
407
+ Expected request body:
408
+ ```json
409
+ {
410
+ "value": 35625
411
+ }
412
+ ```
413
+ Expected response body:
414
+ ```json
415
+ {
416
+ "value": 35625
417
+ }
418
+ ```
419
+ """)
420
+ op float64Milliseconds(
421
+ @body body: Float64MillisecondsDurationProperty,
422
+ ): Float64MillisecondsDurationProperty;
423
+
220
424
  @route("/float-seconds-array")
221
425
  @scenario
222
426
  @scenarioDoc("""
@@ -237,6 +441,115 @@ namespace Property {
237
441
  op floatSecondsArray(
238
442
  @body body: FloatSecondsDurationArrayProperty,
239
443
  ): FloatSecondsDurationArrayProperty;
444
+
445
+ @route("/float-milliseconds-array")
446
+ @scenario
447
+ @scenarioDoc("""
448
+ Test operation with request and response model contains an array property which elements are duration with float milliseconds encode.
449
+ Expected request body:
450
+ ```json
451
+ {
452
+ "value": [35625, 46750]
453
+ }
454
+ ```
455
+ Expected response body:
456
+ ```json
457
+ {
458
+ "value": [35625, 46750]
459
+ }
460
+ ```
461
+ """)
462
+ op floatMillisecondsArray(
463
+ @body body: FloatMillisecondsDurationArrayProperty,
464
+ ): FloatMillisecondsDurationArrayProperty;
465
+
466
+ @route("/int32-seconds-larger-unit")
467
+ @scenario
468
+ @scenarioDoc("""
469
+ Test operation with request and response model contains a duration property with int32 seconds encode where the duration is several minutes.
470
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2) in C#.
471
+ Expected request body:
472
+ ```json
473
+ {
474
+ "value": 120
475
+ }
476
+ ```
477
+ Expected response body:
478
+ ```json
479
+ {
480
+ "value": 120
481
+ }
482
+ ```
483
+ """)
484
+ op int32SecondsLargerUnit(
485
+ @body body: Int32SecondsLargerUnitDurationProperty,
486
+ ): Int32SecondsLargerUnitDurationProperty;
487
+
488
+ @route("/float-seconds-larger-unit")
489
+ @scenario
490
+ @scenarioDoc("""
491
+ Test operation with request and response model contains a duration property with float seconds encode where the duration is several minutes.
492
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2.5) in C#.
493
+ Expected request body:
494
+ ```json
495
+ {
496
+ "value": 150.0
497
+ }
498
+ ```
499
+ Expected response body:
500
+ ```json
501
+ {
502
+ "value": 150.0
503
+ }
504
+ ```
505
+ """)
506
+ op floatSecondsLargerUnit(
507
+ @body body: FloatSecondsLargerUnitDurationProperty,
508
+ ): FloatSecondsLargerUnitDurationProperty;
509
+
510
+ @route("/int32-milliseconds-larger-unit")
511
+ @scenario
512
+ @scenarioDoc("""
513
+ Test operation with request and response model contains a duration property with int32 milliseconds encode where the duration is several minutes.
514
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3) in C#.
515
+ Expected request body:
516
+ ```json
517
+ {
518
+ "value": 180000
519
+ }
520
+ ```
521
+ Expected response body:
522
+ ```json
523
+ {
524
+ "value": 180000
525
+ }
526
+ ```
527
+ """)
528
+ op int32MillisecondsLargerUnit(
529
+ @body body: Int32MillisecondsLargerUnitDurationProperty,
530
+ ): Int32MillisecondsLargerUnitDurationProperty;
531
+
532
+ @route("/float-milliseconds-larger-unit")
533
+ @scenario
534
+ @scenarioDoc("""
535
+ Test operation with request and response model contains a duration property with float milliseconds encode where the duration is several minutes.
536
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3.5) in C#.
537
+ Expected request body:
538
+ ```json
539
+ {
540
+ "value": 210000.0
541
+ }
542
+ ```
543
+ Expected response body:
544
+ ```json
545
+ {
546
+ "value": 210000.0
547
+ }
548
+ ```
549
+ """)
550
+ op floatMillisecondsLargerUnit(
551
+ @body body: FloatMillisecondsLargerUnitDurationProperty,
552
+ ): FloatMillisecondsLargerUnitDurationProperty;
240
553
  }
241
554
 
242
555
  @route("/header")
@@ -274,9 +587,7 @@ namespace Header {
274
587
  Expected header `duration: [P40D,P50D]`
275
588
  """)
276
589
  op iso8601Array(
277
- @header({
278
- format: "csv",
279
- })
590
+ @header
280
591
  duration: Iso8601Duration[],
281
592
  ): NoContentResponse;
282
593
 
@@ -292,6 +603,19 @@ namespace Header {
292
603
  duration: duration,
293
604
  ): NoContentResponse;
294
605
 
606
+ @route("/int32-seconds-larger-unit")
607
+ @scenario
608
+ @scenarioDoc("""
609
+ Test int32 seconds encode for a duration header where the duration is several minutes.
610
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2) in C#.
611
+ Expected header `duration: 120`
612
+ """)
613
+ op int32SecondsLargerUnit(
614
+ @header
615
+ @encode(DurationKnownEncoding.seconds, int32)
616
+ duration: duration,
617
+ ): NoContentResponse;
618
+
295
619
  @route("/float-seconds")
296
620
  @scenario
297
621
  @scenarioDoc("""
@@ -304,6 +628,19 @@ namespace Header {
304
628
  duration: duration,
305
629
  ): NoContentResponse;
306
630
 
631
+ @route("/float-seconds-larger-unit")
632
+ @scenario
633
+ @scenarioDoc("""
634
+ Test float seconds encode for a duration header where the duration is several minutes.
635
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(2.5) in C#.
636
+ Expected header `duration: 150.0`
637
+ """)
638
+ op floatSecondsLargerUnit(
639
+ @header
640
+ @encode(DurationKnownEncoding.seconds, float)
641
+ duration: duration,
642
+ ): NoContentResponse;
643
+
307
644
  @route("/float64-seconds")
308
645
  @scenario
309
646
  @scenarioDoc("""
@@ -315,4 +652,80 @@ namespace Header {
315
652
  @encode(DurationKnownEncoding.seconds, float64)
316
653
  duration: duration,
317
654
  ): NoContentResponse;
655
+
656
+ @route("/int32-milliseconds")
657
+ @scenario
658
+ @scenarioDoc("""
659
+ Test int32 milliseconds encode for a duration header.
660
+ Expected header `duration: 36000`
661
+ """)
662
+ op int32Milliseconds(
663
+ @header
664
+ @encode(DurationKnownEncoding.milliseconds, int32)
665
+ duration: duration,
666
+ ): NoContentResponse;
667
+
668
+ @route("/int32-milliseconds-larger-unit")
669
+ @scenario
670
+ @scenarioDoc("""
671
+ Test int32 milliseconds encode for a duration header where the duration is several minutes.
672
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3) in C#.
673
+ Expected header `duration: 180000`
674
+ """)
675
+ op int32MillisecondsLargerUnit(
676
+ @header
677
+ @encode(DurationKnownEncoding.milliseconds, int32)
678
+ duration: duration,
679
+ ): NoContentResponse;
680
+
681
+ @route("/float-milliseconds")
682
+ @scenario
683
+ @scenarioDoc("""
684
+ Test float milliseconds encode for a duration header.
685
+ Expected header `duration: 35625`
686
+ """)
687
+ op floatMilliseconds(
688
+ @header
689
+ @encode(DurationKnownEncoding.milliseconds, float)
690
+ duration: duration,
691
+ ): NoContentResponse;
692
+
693
+ @route("/float-milliseconds-larger-unit")
694
+ @scenario
695
+ @scenarioDoc("""
696
+ Test float milliseconds encode for a duration header where the duration is several minutes.
697
+ Languages that support duration primitives should use the largest possible unit, e.g. TimeSpan.FromMinutes(3.5) in C#.
698
+ Expected header `duration: 210000.0`
699
+ """)
700
+ op floatMillisecondsLargerUnit(
701
+ @header
702
+ @encode(DurationKnownEncoding.milliseconds, float)
703
+ duration: duration,
704
+ ): NoContentResponse;
705
+
706
+ @route("/float64-milliseconds")
707
+ @scenario
708
+ @scenarioDoc("""
709
+ Test float64 milliseconds encode for a duration header.
710
+ Expected header `duration: 35625`
711
+ """)
712
+ op float64Milliseconds(
713
+ @header
714
+ @encode(DurationKnownEncoding.milliseconds, float64)
715
+ duration: duration,
716
+ ): NoContentResponse;
717
+
718
+ @encode(DurationKnownEncoding.milliseconds, int32)
719
+ scalar Int32MillisecondsDuration extends duration;
720
+
721
+ @route("/int32-milliseconds-array")
722
+ @scenario
723
+ @scenarioDoc("""
724
+ Test int32 milliseconds encode for a duration array header.
725
+ Expected header `duration: [36000,47000]`
726
+ """)
727
+ op int32MillisecondsArray(
728
+ @header
729
+ duration: Int32MillisecondsDuration[],
730
+ ): NoContentResponse;
318
731
  }