@typespec/http-specs 0.1.0-alpha.9 → 0.1.0-dev.1

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 +260 -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 +115 -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 +196 -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 +626 -14
  54. package/dist/specs/payload/pageable/mockapi.js.map +1 -1
  55. package/dist/specs/payload/xml/mockapi.d.ts +19 -5
  56. package/dist/specs/payload/xml/mockapi.d.ts.map +1 -1
  57. package/dist/specs/payload/xml/mockapi.js +311 -55
  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 +11545 -0
  134. package/package.json +31 -20
  135. package/smoke/petstore/main.tsp +96 -0
  136. package/smoke/todoapp/main.tsp +293 -0
  137. package/spec-summary.md +2137 -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 +221 -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 +207 -59
  166. package/specs/payload/pageable/main.tsp +648 -0
  167. package/specs/payload/pageable/mockapi.ts +691 -14
  168. package/specs/payload/xml/main.tsp +532 -132
  169. package/specs/payload/xml/mockapi.ts +402 -67
  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 +124 -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
@@ -40,7 +40,7 @@ Scenarios.Type_Model_Inheritance_SingleDiscriminator_putModel = passOnSuccess({
40
40
  uri: "/type/model/inheritance/single-discriminator/model",
41
41
  method: "put",
42
42
  request: {
43
- body: validPolymorphicBody,
43
+ body: json(validPolymorphicBody),
44
44
  },
45
45
  response: {
46
46
  status: 204,
@@ -62,7 +62,7 @@ Scenarios.Type_Model_Inheritance_SingleDiscriminator_putRecursiveModel = passOnS
62
62
  uri: "/type/model/inheritance/single-discriminator/recursivemodel",
63
63
  method: "put",
64
64
  request: {
65
- body: validRecursiveBody,
65
+ body: json(validRecursiveBody),
66
66
  },
67
67
  response: {
68
68
  status: 204,
@@ -8,9 +8,9 @@ Scenarios.Type_Model_Usage_input = passOnSuccess({
8
8
  uri: "/type/model/usage/input",
9
9
  method: "post",
10
10
  request: {
11
- body: {
11
+ body: json({
12
12
  requiredProp: "example-value",
13
- },
13
+ }),
14
14
  },
15
15
  response: {
16
16
  status: 204,
@@ -33,9 +33,9 @@ Scenarios.Type_Model_Usage_inputAndOutput = passOnSuccess({
33
33
  uri: "/type/model/usage/input-output",
34
34
  method: "post",
35
35
  request: {
36
- body: {
36
+ body: json({
37
37
  requiredProp: "example-value",
38
- },
38
+ }),
39
39
  },
40
40
  response: {
41
41
  status: 200,
@@ -14,8 +14,10 @@ model VisibilityModel {
14
14
  @visibility(Lifecycle.Read)
15
15
  readProp: string;
16
16
 
17
+ #suppress "@typespec/http/metadata-ignored" "For test"
17
18
  @doc("Required int32, illustrating a query property.")
18
19
  @visibility(Lifecycle.Query)
20
+ @query
19
21
  queryProp: int32;
20
22
 
21
23
  @doc("Required string[], illustrating a create property.")
@@ -38,23 +40,18 @@ model VisibilityModel {
38
40
  /** RoundTrip model with readonly optional properties. */
39
41
  model ReadOnlyModel {
40
42
  /** Optional readonly nullable int list. */
41
- @visibility("read")
43
+ @visibility(Lifecycle.Read)
42
44
  optionalNullableIntList?: int32[] | null;
43
45
 
44
46
  /** Optional readonly string dictionary. */
45
- @visibility("read")
47
+ @visibility(Lifecycle.Read)
46
48
  optionalStringRecord?: Record<string>;
47
49
  }
48
50
 
49
51
  @scenario
50
52
  @scenarioDoc("""
51
53
  Generate and receive output model with readonly properties.
52
- Expected input body:
53
- ```json
54
- {
55
- queryProp: 123,
56
- }
57
- ```
54
+ Expected no body with `?queryProp=123`.
58
55
 
59
56
  Expected response body:
60
57
  ```json
@@ -64,7 +61,7 @@ model ReadOnlyModel {
64
61
  ```
65
62
  """)
66
63
  @get
67
- op getModel(@body input: VisibilityModel): {
64
+ op getModel(@bodyRoot input: VisibilityModel): {
68
65
  @body
69
66
  output: VisibilityModel;
70
67
  };
@@ -72,15 +69,10 @@ op getModel(@body input: VisibilityModel): {
72
69
  @scenario
73
70
  @scenarioDoc("""
74
71
  Generate abd send put model with write/create properties.
75
- Expected input body:
76
- ```json
77
- {
78
- queryProp: 123,
79
- }
80
- ```
72
+ Expected no body with `?queryProp=123`.
81
73
  """)
82
74
  @head
83
- op headModel(@body input: VisibilityModel): OkResponse;
75
+ op headModel(@bodyRoot input: VisibilityModel): OkResponse;
84
76
 
85
77
  @scenario
86
78
  @scenarioDoc("""
@@ -106,7 +98,7 @@ op putModel(@body input: VisibilityModel): void;
106
98
  }
107
99
  ```
108
100
  """)
109
- @patch
101
+ @patch(#{ implicitOptionality: true })
110
102
  op patchModel(@body input: VisibilityModel): void;
111
103
 
112
104
  @scenario
@@ -6,7 +6,6 @@ function genData(keys: string[]): Record<string, any> {
6
6
  const ret: Record<string, any> = {};
7
7
  const fullData: Record<string, any> = {
8
8
  readProp: "abc",
9
- queryProp: 123,
10
9
  createProp: ["foo", "bar"],
11
10
  updateProp: [1, 2],
12
11
  deleteProp: true,
@@ -36,7 +35,7 @@ Scenarios.Type_Model_Visibility_headModel = passOnSuccess({
36
35
  uri: "/type/model/visibility",
37
36
  method: "head",
38
37
  request: {
39
- body: { queryProp: 123 },
38
+ query: { queryProp: 123 },
40
39
  },
41
40
  response: {
42
41
  status: 200,
@@ -47,7 +46,7 @@ Scenarios.Type_Model_Visibility_getModel = passOnSuccess({
47
46
  uri: "/type/model/visibility",
48
47
  method: "get",
49
48
  request: {
50
- body: { queryProp: 123 },
49
+ query: { queryProp: 123 },
51
50
  },
52
51
  response: {
53
52
  status: 200,
@@ -59,10 +58,10 @@ Scenarios.Type_Model_Visibility_putModel = passOnSuccess({
59
58
  uri: "/type/model/visibility",
60
59
  method: "put",
61
60
  request: {
62
- body: {
61
+ body: json({
63
62
  createProp: ["foo", "bar"],
64
63
  updateProp: [1, 2],
65
- },
64
+ }),
66
65
  },
67
66
  response: {
68
67
  status: 204,
@@ -73,9 +72,9 @@ Scenarios.Type_Model_Visibility_patchModel = passOnSuccess({
73
72
  uri: "/type/model/visibility",
74
73
  method: "patch",
75
74
  request: {
76
- body: {
75
+ body: json({
77
76
  updateProp: [1, 2],
78
- },
77
+ }),
79
78
  },
80
79
  response: {
81
80
  status: 204,
@@ -86,9 +85,9 @@ Scenarios.Type_Model_Visibility_postModel = passOnSuccess({
86
85
  uri: "/type/model/visibility",
87
86
  method: "post",
88
87
  request: {
89
- body: {
88
+ body: json({
90
89
  createProp: ["foo", "bar"],
91
- },
90
+ }),
92
91
  },
93
92
  response: {
94
93
  status: 204,
@@ -99,7 +98,7 @@ Scenarios.Type_Model_Visibility_deleteModel = passOnSuccess({
99
98
  uri: "/type/model/visibility",
100
99
  method: "delete",
101
100
  request: {
102
- body: { deleteProp: true },
101
+ body: json({ deleteProp: true }),
103
102
  },
104
103
  response: {
105
104
  status: 204,
@@ -463,11 +463,11 @@ interface SpreadRecordUnion
463
463
  > {}
464
464
 
465
465
  // ****************** spread record of discriminated unions **************************
466
- @discriminator("kind")
467
- union WidgetData {
468
- kind0: WidgetData0,
469
- kind1: WidgetData1,
470
- }
466
+ // @discriminated(#{ envelope: "none" })
467
+ // union WidgetData {
468
+ // kind0: WidgetData0,
469
+ // kind1: WidgetData1,
470
+ // }
471
471
 
472
472
  model WidgetData0 {
473
473
  kind: "kind0";
@@ -485,20 +485,20 @@ model WidgetData2 {
485
485
  start: string;
486
486
  }
487
487
 
488
- @doc("The model spread Record<WidgetData>")
489
- model SpreadRecordForDiscriminatedUnion {
490
- @doc("The name property")
491
- name: string;
488
+ // @doc("The model spread Record<WidgetData>")
489
+ // model SpreadRecordForDiscriminatedUnion {
490
+ // @doc("The name property")
491
+ // name: string;
492
492
 
493
- ...Record<WidgetData>;
494
- }
493
+ // ...Record<WidgetData>;
494
+ // }
495
495
 
496
- @route("/spreadRecordDiscriminatedUnion")
497
- interface SpreadRecordDiscriminatedUnion
498
- extends ModelOperations<
499
- SpreadRecordForDiscriminatedUnion,
500
- "{'name': 'abc', 'prop1': {'kind': 'kind0', 'fooProp': 'abc'}, 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}}"
501
- > {}
496
+ // @route("/spreadRecordDiscriminatedUnion")
497
+ // interface SpreadRecordDiscriminatedUnion
498
+ // extends ModelOperations<
499
+ // SpreadRecordForDiscriminatedUnion,
500
+ // "{'name': 'abc', 'prop1': {'kind': 'kind0', 'fooProp': 'abc'}, 'prop2': {'kind': 'kind1', 'start': '2021-01-01T00:00:00Z', 'end': '2021-01-02T00:00:00Z'}}"
501
+ // > {}
502
502
 
503
503
  // ****************** spread record of non-discriminated unions but could guess a discriminator **************************
504
504
  @doc("The model spread Record<WidgetData0 | WidgetData1>")
@@ -98,7 +98,7 @@ const recordNonDiscriminatedUnion3Body = {
98
98
  end: "2021-01-02T00:00:00Z",
99
99
  },
100
100
  };
101
- function createServerTests(url: string, value: any) {
101
+ function createServerTests(url: string, value: unknown) {
102
102
  return {
103
103
  get: passOnSuccess({
104
104
  uri: url,
@@ -114,7 +114,7 @@ function createServerTests(url: string, value: any) {
114
114
  uri: url,
115
115
  method: `put`,
116
116
  request: {
117
- body: value,
117
+ body: json(value),
118
118
  },
119
119
  response: {
120
120
  status: 204,
@@ -432,14 +432,14 @@ Scenarios.Type_Property_AdditionalProperties_SpreadRecordUnion_get =
432
432
  Scenarios.Type_Property_AdditionalProperties_SpreadRecordUnion_put =
433
433
  Type_Property_Additional_Properties_Spread_Record_Union.put;
434
434
 
435
- const Type_Property_Additional_Properties_Spread_Record_Discriminated_Union = createServerTests(
436
- `/type/property/additionalProperties/spreadRecordDiscriminatedUnion`,
437
- recordDiscriminatedUnionBody,
438
- );
439
- Scenarios.Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_get =
440
- Type_Property_Additional_Properties_Spread_Record_Discriminated_Union.get;
441
- Scenarios.Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_put =
442
- Type_Property_Additional_Properties_Spread_Record_Discriminated_Union.put;
435
+ // const Type_Property_Additional_Properties_Spread_Record_Discriminated_Union = createServerTests(
436
+ // `/type/property/additionalProperties/spreadRecordDiscriminatedUnion`,
437
+ // recordDiscriminatedUnionBody,
438
+ // );
439
+ // Scenarios.Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_get =
440
+ // Type_Property_Additional_Properties_Spread_Record_Discriminated_Union.get;
441
+ // Scenarios.Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_put =
442
+ // Type_Property_Additional_Properties_Spread_Record_Discriminated_Union.put;
443
443
 
444
444
  const Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union = createServerTests(
445
445
  `/type/property/additionalProperties/spreadRecordNonDiscriminatedUnion`,
@@ -7,7 +7,6 @@ function createServerTests(url: string, value: unknown, patchNullableProperty?:
7
7
  get: passOnSuccess({
8
8
  uri: url,
9
9
  method: `get`,
10
- request: {},
11
10
  response: {
12
11
  status: 200,
13
12
  body: json(value),
@@ -18,13 +17,13 @@ function createServerTests(url: string, value: unknown, patchNullableProperty?:
18
17
  uri: url,
19
18
  method: `patch`,
20
19
  request: {
21
- body: {
22
- requiredProperty: "foo",
23
- nullableProperty: patchNullableProperty || null,
24
- },
25
- headers: {
26
- "Content-Type": "application/merge-patch+json",
27
- },
20
+ body: json(
21
+ {
22
+ requiredProperty: "foo",
23
+ nullableProperty: patchNullableProperty || null,
24
+ },
25
+ "application/merge-patch+json",
26
+ ),
28
27
  },
29
28
  response: {
30
29
  status: 204,
@@ -18,7 +18,7 @@ function createServerTests(url: string, value: unknown) {
18
18
  uri: url,
19
19
  method: `put`,
20
20
  request: {
21
- body: value,
21
+ body: json(value),
22
22
  },
23
23
  response: {
24
24
  status: 204,
@@ -18,7 +18,7 @@ function createServerTests(url: string, data: unknown) {
18
18
  uri: url,
19
19
  method: `put`,
20
20
  request: {
21
- body: data,
21
+ body: json(data),
22
22
  },
23
23
  response: {
24
24
  status: 204,
@@ -166,9 +166,9 @@ Scenarios.Type_Property_ValueTypes_Never_put = passOnSuccess({
166
166
  uri: `/type/property/value-types/never`,
167
167
  method: `put`,
168
168
  request: {
169
- body: {
169
+ body: json({
170
170
  property: undefined,
171
- },
171
+ }),
172
172
  },
173
173
  response: {
174
174
  status: 204,
@@ -14,14 +14,25 @@ interface String {
14
14
  @scenarioDoc("Expect to handle a string value. Mock api will return 'test'")
15
15
  @get
16
16
  @doc("get string value")
17
- get(): string;
17
+ get(): {
18
+ @header
19
+ contentType: "application/json";
20
+
21
+ @body
22
+ body: string;
23
+ };
18
24
 
19
25
  #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing"
20
26
  @scenario
21
27
  @scenarioDoc("Expect to send a string value. Mock api expect to receive 'test'")
22
28
  @put
23
29
  @doc("put string value")
24
- put(@body @doc("_") body: string): void;
30
+ put(
31
+ @header
32
+ contentType: "application/json",
33
+
34
+ @body @doc("_") body: string,
35
+ ): void;
25
36
  }
26
37
 
27
38
  @route("/boolean")
@@ -31,14 +42,25 @@ interface Boolean {
31
42
  @scenarioDoc("Expect to handle a boolean value. Mock api will return true ")
32
43
  @get
33
44
  @doc("get boolean value")
34
- get(): boolean;
45
+ get(): {
46
+ @header
47
+ contentType: "application/json";
48
+
49
+ @body
50
+ body: boolean;
51
+ };
35
52
 
36
53
  #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing"
37
54
  @scenario
38
55
  @scenarioDoc("Expect to send a boolean value. Mock api expect to receive 'true'")
39
56
  @put
40
57
  @doc("put boolean value")
41
- put(@body @doc("_") body: boolean): void;
58
+ put(
59
+ @header
60
+ contentType: "application/json",
61
+
62
+ @body @doc("_") body: boolean,
63
+ ): void;
42
64
  }
43
65
 
44
66
  @route("/unknown")
@@ -48,14 +70,25 @@ interface Unknown {
48
70
  @scenarioDoc("Expect to handle a unknown type value. Mock api will return 'test'")
49
71
  @get
50
72
  @doc("get unknown value")
51
- get(): unknown;
73
+ get(): {
74
+ @header
75
+ contentType: "application/json";
76
+
77
+ @body
78
+ body: unknown;
79
+ };
52
80
 
53
81
  #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing"
54
82
  @scenario
55
83
  @scenarioDoc("Expect to send a string value. Mock api expect to receive 'test'")
56
84
  @put
57
85
  @doc("put unknown value")
58
- put(@body @doc("_") body: unknown): void;
86
+ put(
87
+ @header
88
+ contentType: "application/json",
89
+
90
+ @body @doc("_") body: unknown,
91
+ ): void;
59
92
  }
60
93
 
61
94
  @doc("Template to have scalar types operations")
@@ -69,7 +102,13 @@ interface ScalarTypesOperations<T, TDoc extends valueof string> {
69
102
  """)
70
103
  @get
71
104
  @route("/response_body")
72
- responseBody(): T;
105
+ responseBody(): {
106
+ @header
107
+ contentType: "application/json";
108
+
109
+ @body
110
+ body: T;
111
+ };
73
112
 
74
113
  @scenario
75
114
  @scenarioDoc("""
@@ -80,7 +119,12 @@ interface ScalarTypesOperations<T, TDoc extends valueof string> {
80
119
  """)
81
120
  @put
82
121
  @route("/resquest_body")
83
- requestBody(@body body: T): void;
122
+ requestBody(
123
+ @header
124
+ contentType: "application/json",
125
+
126
+ @body body: T,
127
+ ): void;
84
128
 
85
129
  @scenario
86
130
  @scenarioDoc("""
@@ -124,7 +168,12 @@ interface NumberTypesVerifyOperations<
124
168
  """)
125
169
  @post
126
170
  @route("/verify")
127
- verify(@body body: T): void;
171
+ verify(
172
+ @header
173
+ contentType: "application/json",
174
+
175
+ @body body: T,
176
+ ): void;
128
177
  }
129
178
 
130
179
  @doc("Decimal type verification")
@@ -17,7 +17,7 @@ Scenarios.Type_Scalar_String_put = passOnSuccess({
17
17
  uri: "/type/scalar/string",
18
18
  method: `put`,
19
19
  request: {
20
- body: "test",
20
+ body: json("test"),
21
21
  headers: {
22
22
  "Content-Type": "text/plain",
23
23
  },
@@ -43,7 +43,7 @@ Scenarios.Type_Scalar_Boolean_put = passOnSuccess({
43
43
  uri: "/type/scalar/boolean",
44
44
  method: `put`,
45
45
  request: {
46
- body: true,
46
+ body: json(true),
47
47
  headers: {
48
48
  "Content-Type": "application/json; charset=utf-8",
49
49
  },
@@ -68,7 +68,7 @@ Scenarios.Type_Scalar_Unknown_put = passOnSuccess({
68
68
  uri: "/type/scalar/unknown",
69
69
  method: `put`,
70
70
  request: {
71
- body: "test",
71
+ body: json("test"),
72
72
  headers: {
73
73
  "Content-Type": "text/plain",
74
74
  },
@@ -103,7 +103,7 @@ Scenarios.Type_Scalar_DecimalType_requestBody = passOnSuccess({
103
103
  uri: "/type/scalar/decimal/resquest_body",
104
104
  method: `put`,
105
105
  request: {
106
- body: 0.33333,
106
+ body: json(0.33333),
107
107
  headers: {
108
108
  "Content-Type": "application/json; charset=utf-8",
109
109
  },
@@ -117,7 +117,7 @@ Scenarios.Type_Scalar_Decimal128Type_requestBody = passOnSuccess({
117
117
  uri: "/type/scalar/decimal128/resquest_body",
118
118
  method: `put`,
119
119
  request: {
120
- body: 0.33333,
120
+ body: json(0.33333),
121
121
  headers: {
122
122
  "Content-Type": "application/json; charset=utf-8",
123
123
  },
@@ -131,7 +131,7 @@ Scenarios.Type_Scalar_DecimalType_requestParameter = passOnSuccess({
131
131
  uri: "/type/scalar/decimal/request_parameter",
132
132
  method: `get`,
133
133
  request: {
134
- params: { value: "0.33333" },
134
+ query: { value: "0.33333" },
135
135
  },
136
136
  response: {
137
137
  status: 204,
@@ -142,7 +142,7 @@ Scenarios.Type_Scalar_Decimal128Type_requestParameter = passOnSuccess({
142
142
  uri: "/type/scalar/decimal128/request_parameter",
143
143
  method: `get`,
144
144
  request: {
145
- params: { value: "0.33333" },
145
+ query: { value: "0.33333" },
146
146
  },
147
147
  response: {
148
148
  status: 204,
@@ -173,7 +173,7 @@ Scenarios.Type_Scalar_DecimalVerify_verify = passOnSuccess({
173
173
  uri: "/type/scalar/decimal/verify",
174
174
  method: `post`,
175
175
  request: {
176
- body: 0.3,
176
+ body: json(0.3),
177
177
  headers: {
178
178
  "Content-Type": "application/json; charset=utf-8",
179
179
  },
@@ -187,7 +187,7 @@ Scenarios.Type_Scalar_Decimal128Verify_verify = passOnSuccess({
187
187
  uri: "/type/scalar/decimal128/verify",
188
188
  method: `post`,
189
189
  request: {
190
- body: 0.3,
190
+ body: json(0.3),
191
191
  headers: {
192
192
  "Content-Type": "application/json; charset=utf-8",
193
193
  },