@azure-tools/typespec-azure-resource-manager 0.58.0-dev.3 → 0.58.0-dev.5

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.
@@ -2,6 +2,16 @@ using Reflection;
2
2
 
3
3
  namespace Azure.ResourceManager.Legacy;
4
4
 
5
+ /**
6
+ * Route options for an operation
7
+ */
8
+ model ArmOperationOptions {
9
+ /** Should a static route be used */
10
+ useStaticRoute?: boolean;
11
+
12
+ /** The status route for operations to use */
13
+ route?: string;
14
+ }
5
15
  /**
6
16
  * This decorator is used on resources that do not satisfy the definition of a resource
7
17
  * but need to be identified as such.
@@ -13,3 +23,11 @@ extern dec customAzureResource(target: Model);
13
23
  * @param jsonRef - External reference(e.g. "../../common.json#/definitions/Foo")
14
24
  */
15
25
  extern dec externalTypeRef(entity: Model | ModelProperty, jsonRef: valueof string);
26
+
27
+ /**
28
+ * Signifies that an operation is an Azure Resource Manager operation
29
+ * and optionally associates the operation with a route template.
30
+ * @param target The operation to associate the model with
31
+ * @param route Optional route to associate with the operation
32
+ */
33
+ extern dec armOperationRoute(target: Operation, route?: valueof ArmOperationOptions);
@@ -27,8 +27,9 @@ interface ExtensionOperations<
27
27
  * @template Response Optional. The success response(s) for the PUT operation
28
28
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
29
29
  * @template ErrorType Optional. The error response, if non-standard.
30
+ * @template OperationOptions Optional. The route options for the operation.
30
31
  */
31
- @autoRoute
32
+ @armOperationRoute(OperationOptions)
32
33
  @doc("Create a {name}", Resource)
33
34
  @armResourceCreateOrUpdate(Resource)
34
35
  @Azure.Core.Foundations.Private.defaultFinalStateVia(#["location", "azure-async-operation"])
@@ -43,7 +44,8 @@ interface ExtensionOperations<
43
44
  LroHeaders
44
45
  >,
45
46
  OptionalRequestBody extends valueof boolean = false,
46
- ErrorType extends {} = ErrorResponse
47
+ ErrorType extends {} = ErrorResponse,
48
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
47
49
  >(
48
50
  ...TargetParameters,
49
51
  ...ExtensionInstanceParameters,
@@ -58,9 +60,10 @@ interface ExtensionOperations<
58
60
  * @template Response Optional. The success response(s) for the PUT operation
59
61
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
60
62
  * @template ErrorType Optional. The error response, if non-standard.
63
+ * @template OperationOptions Optional. The route options for the operation.
61
64
  */
62
65
  #suppress "@azure-tools/typespec-azure-core/no-private-usage"
63
- @autoRoute
66
+ @armOperationRoute(OperationOptions)
64
67
  @doc("Create a {name}", Resource)
65
68
  @armResourceCreateOrUpdate(Resource)
66
69
  @put
@@ -69,7 +72,8 @@ interface ExtensionOperations<
69
72
  Parameters extends {} = {},
70
73
  Response extends {} = ArmResourceUpdatedResponse<Resource> | ArmResourceCreatedSyncResponse<Resource>,
71
74
  OptionalRequestBody extends valueof boolean = false,
72
- ErrorType extends {} = ErrorResponse
75
+ ErrorType extends {} = ErrorResponse,
76
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
73
77
  >(
74
78
  ...TargetParameters,
75
79
  ...ExtensionInstanceParameters,
@@ -86,8 +90,9 @@ interface ExtensionOperations<
86
90
  * @template Response Optional. The success response(s) for the PATCH operation
87
91
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
88
92
  * @template ErrorType Optional. The error response, if non-standard.
93
+ * @template OperationOptions Optional. The route options for the operation.
89
94
  */
90
- @autoRoute
95
+ @armOperationRoute(OperationOptions)
91
96
  @doc("Update a {name}", Resource)
92
97
  @armResourceUpdate(Resource)
93
98
  @patch(#{ implicitOptionality: false })
@@ -106,7 +111,8 @@ interface ExtensionOperations<
106
111
  LroHeaders
107
112
  >,
108
113
  OptionalRequestBody extends valueof boolean = false,
109
- ErrorType extends {} = ErrorResponse
114
+ ErrorType extends {} = ErrorResponse,
115
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
110
116
  >(
111
117
  ...TargetParameters,
112
118
  ...ExtensionInstanceParameters,
@@ -122,8 +128,9 @@ interface ExtensionOperations<
122
128
  * @template Response Optional. The success response(s) for the PATCH operation
123
129
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
124
130
  * @template ErrorType Optional. The error response, if non-standard.
131
+ * @template OperationOptions Optional. The route options for the operation.
125
132
  */
126
- @autoRoute
133
+ @armOperationRoute(OperationOptions)
127
134
  @doc("Update a {name}", Resource)
128
135
  @armResourceUpdate(Resource)
129
136
  @patch(#{ implicitOptionality: false })
@@ -133,7 +140,8 @@ interface ExtensionOperations<
133
140
  Parameters extends {} = {},
134
141
  Response extends {} = ArmResponse<Resource>,
135
142
  OptionalRequestBody extends valueof boolean = false,
136
- ErrorType extends {} = ErrorResponse
143
+ ErrorType extends {} = ErrorResponse,
144
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
137
145
  >(
138
146
  ...TargetParameters,
139
147
  ...ExtensionInstanceParameters,
@@ -148,9 +156,10 @@ interface ExtensionOperations<
148
156
  * @template Parameters Optional. Additional parameters after the path parameters
149
157
  * @template Response Optional. The success response(s) for the delete operation
150
158
  * @template ErrorType Optional. The error response, if non-standard.
159
+ * @template OperationOptions Optional. The route options for the operation.
151
160
  */
152
161
  #suppress "@azure-tools/typespec-azure-core/no-response-body" "Valid"
153
- @autoRoute
162
+ @armOperationRoute(OperationOptions)
154
163
  @doc("Delete a {name}", Resource)
155
164
  @delete
156
165
  @deletesResource(Resource)
@@ -161,7 +170,8 @@ interface ExtensionOperations<
161
170
  Azure.Core.Foundations.RetryAfterHeader,
162
171
  Parameters extends {} = {},
163
172
  Response extends {} = ArmDeleteAcceptedLroResponse<LroHeaders> | ArmDeletedNoContentResponse,
164
- ErrorType extends {} = ErrorResponse
173
+ ErrorType extends {} = ErrorResponse,
174
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
165
175
  >(...TargetParameters, ...ExtensionInstanceParameters, ...Parameters): Response | ErrorType;
166
176
 
167
177
  /**
@@ -170,9 +180,10 @@ interface ExtensionOperations<
170
180
  * @template Parameters Optional. Additional parameters after the path parameters
171
181
  * @template Response Optional. The success response(s) for the delete operation
172
182
  * @template ErrorType Optional. The error response, if non-standard.
183
+ * @template OperationOptions Optional. The route options for the operation.
173
184
  */
174
185
  #suppress "@azure-tools/typespec-azure-core/no-response-body" "Valid"
175
- @autoRoute
186
+ @armOperationRoute(OperationOptions)
176
187
  @doc("Delete a {name}", Resource)
177
188
  @delete
178
189
  @deletesResource(Resource)
@@ -181,7 +192,8 @@ interface ExtensionOperations<
181
192
  Resource extends Foundations.SimpleResource,
182
193
  Parameters extends {} = {},
183
194
  Response extends {} = ArmDeletedResponse | ArmDeletedNoContentResponse,
184
- ErrorType extends {} = ErrorResponse
195
+ ErrorType extends {} = ErrorResponse,
196
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
185
197
  >(...TargetParameters, ...ExtensionInstanceParameters, ...Parameters): Response | ErrorType;
186
198
 
187
199
  /**
@@ -190,8 +202,9 @@ interface ExtensionOperations<
190
202
  * @template Parameters Optional. Additional parameters after the path parameters
191
203
  * @template Response Optional. The success response for a get operation.
192
204
  * @template ErrorType Optional. The error response, if non-standard.
205
+ * @template OperationOptions Optional. The route options for the operation.
193
206
  */
194
- @autoRoute
207
+ @armOperationRoute(OperationOptions)
195
208
  @doc("Get a {name}", Resource)
196
209
  @get
197
210
  @readsResource(Resource)
@@ -200,24 +213,27 @@ interface ExtensionOperations<
200
213
  Resource extends Foundations.SimpleResource,
201
214
  Parameters extends {} = {},
202
215
  Response extends {} = ArmResponse<Resource>,
203
- ErrorType extends {} = ErrorResponse
216
+ ErrorType extends {} = ErrorResponse,
217
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
204
218
  >(...TargetParameters, ...ExtensionInstanceParameters, ...Parameters): Response | ErrorType;
205
219
 
206
220
  /**
207
221
  * Check a resource's existence via HEAD operation
208
- * * @template Resource The resource being checked
222
+ * @template Resource The resource being checked
209
223
  * @template Parameters Optional. Additional parameters after the path parameters
210
224
  * @template Response Optional. The success response for a head operation (by default NoContent or NotFound response).
211
225
  * @template ErrorType Optional. The error response, if non-standard.
226
+ * @template OperationOptions Optional. The route options for the operation.
212
227
  */
213
- @autoRoute
228
+ @armOperationRoute(OperationOptions)
214
229
  @doc("Check for the existence of a {name}", Resource)
215
230
  @head
216
231
  CheckExistence<
217
232
  Resource extends Foundations.SimpleResource,
218
233
  Parameters extends {} = {},
219
234
  Response extends {} = ArmResourceExistsResponse | ArmResourceNotFoundResponse,
220
- ErrorType extends {} = ErrorResponse
235
+ ErrorType extends {} = ErrorResponse,
236
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
221
237
  > is Foundations.ArmReadOperation<
222
238
  TargetParameters & ExtensionInstanceParameters & Parameters,
223
239
  Response,
@@ -229,8 +245,9 @@ interface ExtensionOperations<
229
245
  * @template Parameters Optional. Additional parameters after the path parameters
230
246
  * @template Response Optional. The response returned by the list
231
247
  * @template ErrorType Optional. The error response, if non-standard.
248
+ * @template OperationOptions Optional. The route options for the operation.
232
249
  */
233
- @autoRoute
250
+ @armOperationRoute(OperationOptions)
234
251
  @doc("List a {name}", Resource)
235
252
  @get
236
253
  @listsResource(Resource)
@@ -239,7 +256,8 @@ interface ExtensionOperations<
239
256
  Resource extends Foundations.SimpleResource,
240
257
  Parameters extends {} = {},
241
258
  Response extends {} = ArmResponse<ResourceListResult<Resource>>,
242
- ErrorType extends {} = ErrorResponse
259
+ ErrorType extends {} = ErrorResponse,
260
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
243
261
  >(...TargetParameters, ...ExtensionParentParameters, ...Parameters): Response | ErrorType;
244
262
 
245
263
  /**
@@ -250,9 +268,10 @@ interface ExtensionOperations<
250
268
  * @template Parameters Optional. Additional parameters after the path parameters
251
269
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
252
270
  * @template ErrorType Optional. The error response, if non-standard.
271
+ * @template OperationOptions Optional. The route options for the operation.
253
272
  */
254
273
  @doc("")
255
- @autoRoute
274
+ @armOperationRoute(OperationOptions)
256
275
  @armResourceAction(Resource)
257
276
  @Private.enforceConstraint(Resource, Foundations.Resource)
258
277
  @post
@@ -263,7 +282,8 @@ interface ExtensionOperations<
263
282
  Response extends TypeSpec.Reflection.Model | void,
264
283
  Parameters extends {} = {},
265
284
  OptionalRequestBody extends valueof boolean = false,
266
- ErrorType extends {} = ErrorResponse
285
+ ErrorType extends {} = ErrorResponse,
286
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
267
287
  >(
268
288
  ...TargetParameters,
269
289
  ...ExtensionInstanceParameters,
@@ -284,10 +304,11 @@ interface ExtensionOperations<
284
304
  * @template Parameters Optional. Additional parameters after the path parameters
285
305
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
286
306
  * @template ErrorType Optional. The error response, if non-standard.
307
+ * @template OperationOptions Optional. The route options for the operation.
287
308
  */
288
309
  #suppress "@azure-tools/typespec-azure-core/no-response-body" "ARM"
289
310
  @doc("")
290
- @autoRoute
311
+ @armOperationRoute(OperationOptions)
291
312
  @armResourceAction(Resource)
292
313
  @Private.enforceConstraint(Resource, Foundations.Resource)
293
314
  @post
@@ -308,7 +329,8 @@ interface ExtensionOperations<
308
329
  LroHeaders
309
330
  > | Result,
310
331
  OptionalRequestBody extends valueof boolean = false,
311
- ErrorType extends {} = ErrorResponse
332
+ ErrorType extends {} = ErrorResponse,
333
+ OperationOptions extends valueof ArmOperationOptions = #{ useStaticRoute: false }
312
334
  >(
313
335
  ...TargetParameters,
314
336
  ...ExtensionInstanceParameters,
@@ -15,11 +15,26 @@ using Rest;
15
15
  * @template ResourceTypeParameter The path parameter for the resource name
16
16
  * @template ErrorType Optional. The type of error models used in operations created form this template
17
17
  */
18
- @doc("")
19
18
  interface LegacyOperations<
20
19
  ParentParameters extends {},
21
20
  ResourceTypeParameter extends {},
22
21
  ErrorType extends {} = ErrorResponse
22
+ > extends RoutedOperations<ParentParameters, ResourceTypeParameter, ErrorType> {}
23
+
24
+ /**
25
+ * An operation template used to build resource operations in which the same resource type
26
+ * is accessible at multiple, fixed resource paths. Can be used with static routes.
27
+ * @template ParentParameters The path parameters for the resource parent
28
+ * @template ResourceTypeParameter The path parameter for the resource name
29
+ * @template ErrorType Optional. The type of error models used in operations created form this template
30
+ * @template ResourceRoute Optional. The resource route to use for operations in the interface.
31
+ */
32
+ @doc("")
33
+ interface RoutedOperations<
34
+ ParentParameters extends {},
35
+ ResourceTypeParameter extends {},
36
+ ErrorType extends {} = ErrorResponse,
37
+ ResourceRoute extends valueof ArmOperationOptions = #{ useStaticRoute: false }
23
38
  > {
24
39
  /**
25
40
  * A long-running resource CreateOrUpdate (PUT)
@@ -28,9 +43,11 @@ interface LegacyOperations<
28
43
  * @template Parameters Optional. Additional parameters after the path parameters
29
44
  * @template Response Optional. The success response(s) for the PUT operation
30
45
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
46
+ * @template OverrideErrorType Optional. The error response, if non-standard.
47
+ * @template OverrideRouteOptions Optional. The route options for the operation.
31
48
  */
32
- @autoRoute
33
49
  @doc("Create a {name}", Resource)
50
+ @armOperationRoute(OverrideRouteOptions)
34
51
  @armResourceCreateOrUpdate(Resource)
35
52
  @Private.armUpdateProviderNamespace
36
53
  @Azure.Core.Foundations.Private.defaultFinalStateVia(#["location", "azure-async-operation"])
@@ -44,13 +61,15 @@ interface LegacyOperations<
44
61
  Resource,
45
62
  LroHeaders
46
63
  >,
47
- OptionalRequestBody extends valueof boolean = false
64
+ OptionalRequestBody extends valueof boolean = false,
65
+ OverrideErrorType extends {} = ErrorType,
66
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
48
67
  >(
49
68
  ...ParentParameters,
50
69
  ...ResourceTypeParameter,
51
70
  ...Parameters,
52
71
  @doc("Resource create parameters.") @armBodyRoot(OptionalRequestBody) resource: Resource,
53
- ): Response | ErrorType;
72
+ ): Response | OverrideErrorType;
54
73
 
55
74
  /**
56
75
  * A synchronous resource CreateOrUpdate (PUT)
@@ -58,9 +77,11 @@ interface LegacyOperations<
58
77
  * @template Parameters Optional. Additional parameters after the path parameters
59
78
  * @template Response Optional. The success response(s) for the PUT operation
60
79
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
80
+ * @template OverrideErrorType Optional. The error response, if non-standard.
81
+ * @template OverrideRouteOptions Optional. The route options for the operation.
61
82
  */
62
83
  #suppress "@azure-tools/typespec-azure-core/no-private-usage"
63
- @autoRoute
84
+ @armOperationRoute(OverrideRouteOptions)
64
85
  @doc("Create a {name}", Resource)
65
86
  @armResourceCreateOrUpdate(Resource)
66
87
  @Private.armUpdateProviderNamespace
@@ -69,13 +90,15 @@ interface LegacyOperations<
69
90
  Resource extends Foundations.SimpleResource,
70
91
  Parameters extends {} = {},
71
92
  Response extends {} = ArmResourceUpdatedResponse<Resource> | ArmResourceCreatedSyncResponse<Resource>,
72
- OptionalRequestBody extends valueof boolean = false
93
+ OptionalRequestBody extends valueof boolean = false,
94
+ OverrideErrorType extends {} = ErrorType,
95
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
73
96
  >(
74
97
  ...ParentParameters,
75
98
  ...ResourceTypeParameter,
76
99
  ...Parameters,
77
100
  @doc("Resource create parameters.") @armBodyRoot(OptionalRequestBody) resource: Resource,
78
- ): Response | ErrorType;
101
+ ): Response | OverrideErrorType;
79
102
 
80
103
  /**
81
104
  * A long-running resource Update (PATCH)
@@ -85,9 +108,11 @@ interface LegacyOperations<
85
108
  * @template Parameters Optional. Additional parameters after the path parameters
86
109
  * @template Response Optional. The success response(s) for the PATCH operation
87
110
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
111
+ * @template OverrideErrorType Optional. The error response, if non-standard.
112
+ * @template OverrideRouteOptions Optional. The route options for the operation.
88
113
  */
89
- @autoRoute
90
114
  @doc("Update a {name}", Resource)
115
+ @armOperationRoute(OverrideRouteOptions)
91
116
  @armResourceUpdate(Resource)
92
117
  @Private.armUpdateProviderNamespace
93
118
  @patch(#{ implicitOptionality: false })
@@ -105,13 +130,15 @@ interface LegacyOperations<
105
130
  "Resource update request accepted.",
106
131
  LroHeaders
107
132
  >,
108
- OptionalRequestBody extends valueof boolean = false
133
+ OptionalRequestBody extends valueof boolean = false,
134
+ OverrideErrorType extends {} = ErrorType,
135
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
109
136
  >(
110
137
  ...ParentParameters,
111
138
  ...ResourceTypeParameter,
112
139
  ...Parameters,
113
140
  @doc("Resource create parameters.") @armBodyRoot(OptionalRequestBody) properties: PatchModel,
114
- ): Response | ErrorType;
141
+ ): Response | OverrideErrorType;
115
142
 
116
143
  /**
117
144
  * A synchronous resource Update (PATCH)
@@ -120,9 +147,11 @@ interface LegacyOperations<
120
147
  * @template Parameters Optional. Additional parameters after the path parameters
121
148
  * @template Response Optional. The success response(s) for the PATCH operation
122
149
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
150
+ * @template OverrideErrorType Optional. The error response, if non-standard.
151
+ * @template OverrideRouteOptions Optional. The route options for the operation.
123
152
  */
124
- @autoRoute
125
153
  @doc("Update a {name}", Resource)
154
+ @armOperationRoute(OverrideRouteOptions)
126
155
  @armResourceUpdate(Resource)
127
156
  @Private.armUpdateProviderNamespace
128
157
  @patch(#{ implicitOptionality: false })
@@ -131,13 +160,15 @@ interface LegacyOperations<
131
160
  PatchModel extends {} = Azure.ResourceManager.Foundations.TagsUpdateModel<Resource>,
132
161
  Parameters extends {} = {},
133
162
  Response extends {} = ArmResponse<Resource>,
134
- OptionalRequestBody extends valueof boolean = false
163
+ OptionalRequestBody extends valueof boolean = false,
164
+ OverrideErrorType extends {} = ErrorType,
165
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
135
166
  >(
136
167
  ...ParentParameters,
137
168
  ...ResourceTypeParameter,
138
169
  ...Parameters,
139
170
  @doc("Resource create parameters.") @armBodyRoot(OptionalRequestBody) properties: PatchModel,
140
- ): Response | ErrorType;
171
+ ): Response | OverrideErrorType;
141
172
 
142
173
  /**
143
174
  * Delete a resource asynchronously
@@ -145,10 +176,12 @@ interface LegacyOperations<
145
176
  * @template LroHeaders The lro headers for the operation
146
177
  * @template Parameters Optional. Additional parameters after the path parameters
147
178
  * @template Response Optional. The success response(s) for the delete operation
179
+ * @template OverrideErrorType Optional. The error response, if non-standard.
180
+ * @template OverrideRouteOptions Optional. The route options for the operation.
148
181
  */
149
182
  #suppress "@azure-tools/typespec-azure-core/no-response-body" "Valid"
150
- @autoRoute
151
183
  @doc("Delete a {name}", Resource)
184
+ @armOperationRoute(OverrideRouteOptions)
152
185
  @delete
153
186
  @deletesResource(Resource)
154
187
  @Private.armUpdateProviderNamespace
@@ -158,18 +191,22 @@ interface LegacyOperations<
158
191
  LroHeaders extends TypeSpec.Reflection.Model = ArmLroLocationHeader &
159
192
  Azure.Core.Foundations.RetryAfterHeader,
160
193
  Parameters extends {} = {},
161
- Response extends {} = ArmDeleteAcceptedLroResponse<LroHeaders> | ArmDeletedNoContentResponse
162
- >(...ParentParameters, ...ResourceTypeParameter, ...Parameters): Response | ErrorType;
194
+ Response extends {} = ArmDeleteAcceptedLroResponse<LroHeaders> | ArmDeletedNoContentResponse,
195
+ OverrideErrorType extends {} = ErrorType,
196
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
197
+ >(...ParentParameters, ...ResourceTypeParameter, ...Parameters): Response | OverrideErrorType;
163
198
 
164
199
  /**
165
200
  * Delete a resource synchronously
166
201
  * @template Resource The resource being deleted
167
202
  * @template Parameters Optional. Additional parameters after the path parameters
168
203
  * @template Response Optional. The success response(s) for the delete operation
204
+ * @template OverrideErrorType Optional. The error response, if non-standard.
205
+ * @template OverrideRouteOptions Optional. The route options for the operation.
169
206
  */
170
207
  #suppress "@azure-tools/typespec-azure-core/no-response-body" "Valid"
171
- @autoRoute
172
208
  @doc("Delete a {name}", Resource)
209
+ @armOperationRoute(OverrideRouteOptions)
173
210
  @delete
174
211
  @deletesResource(Resource)
175
212
  @armResourceDelete(Resource)
@@ -177,17 +214,21 @@ interface LegacyOperations<
177
214
  DeleteSync<
178
215
  Resource extends Foundations.SimpleResource,
179
216
  Parameters extends {} = {},
180
- Response extends {} = ArmDeletedResponse | ArmDeletedNoContentResponse
181
- >(...ParentParameters, ...ResourceTypeParameter, ...Parameters): Response | ErrorType;
217
+ Response extends {} = ArmDeletedResponse | ArmDeletedNoContentResponse,
218
+ OverrideErrorType extends {} = ErrorType,
219
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
220
+ >(...ParentParameters, ...ResourceTypeParameter, ...Parameters): Response | OverrideErrorType;
182
221
 
183
222
  /**
184
223
  * @dev Get a resource
185
224
  * @template Resource The resource being read
186
225
  * @template Parameters Optional. Additional parameters after the path parameters
187
226
  * @template Response Optional. The success response for a get operation.
227
+ * @template OverrideErrorType Optional. The error response, if non-standard.
228
+ * @template OverrideRouteOptions Optional. The route options for the operation.
188
229
  */
189
- @autoRoute
190
230
  @doc("Get a {name}", Resource)
231
+ @armOperationRoute(OverrideRouteOptions)
191
232
  @get
192
233
  @readsResource(Resource)
193
234
  @armResourceRead(Resource)
@@ -195,27 +236,33 @@ interface LegacyOperations<
195
236
  Read<
196
237
  Resource extends Foundations.SimpleResource,
197
238
  Parameters extends {} = {},
198
- Response extends {} = ArmResponse<Resource>
199
- >(...ParentParameters, ...ResourceTypeParameter, ...Parameters): Response | ErrorType;
239
+ Response extends {} = ArmResponse<Resource>,
240
+ OverrideErrorType extends {} = ErrorType,
241
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
242
+ >(...ParentParameters, ...ResourceTypeParameter, ...Parameters): Response | OverrideErrorType;
200
243
 
201
244
  /**
202
245
  * Check a resource's existence via HEAD operation
203
246
  * @template Resource The resource being checked
204
247
  * @template Parameters Optional. Additional parameters after the path parameters
205
248
  * @template Response Optional. The success response for a head operation (by default NoContent or NotFound response).
249
+ * @template OverrideErrorType Optional. The error response, if non-standard.
250
+ * @template OverrideRouteOptions Optional. The route options for the operation.
206
251
  */
207
- @autoRoute
252
+ @armOperationRoute(OverrideRouteOptions)
208
253
  @doc("Check for the existence of a {name}", Resource)
209
254
  @Private.armUpdateProviderNamespace
210
255
  @head
211
256
  CheckExistence<
212
257
  Resource extends Foundations.SimpleResource,
213
258
  Parameters extends {} = {},
214
- Response extends {} = ArmResourceExistsResponse | ArmResourceNotFoundResponse
259
+ Response extends {} = ArmResourceExistsResponse | ArmResourceNotFoundResponse,
260
+ OverrideErrorType extends {} = ErrorType,
261
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
215
262
  > is Foundations.ArmReadOperation<
216
263
  ParentParameters & ResourceTypeParameter & Parameters,
217
264
  Response,
218
- ErrorType
265
+ OverrideErrorType
219
266
  >;
220
267
 
221
268
  /**
@@ -223,18 +270,22 @@ interface LegacyOperations<
223
270
  * @template Resource The resource being listed
224
271
  * @template Parameters Optional. Additional parameters after the path parameters
225
272
  * @template Response Optional. The response returned by the list
273
+ * @template OverrideErrorType Optional. The error response, if non-standard.
274
+ * @template OverrideRouteOptions Optional. The route options for the operation.
226
275
  */
227
- @autoRoute
228
276
  @doc("List a {name}", Resource)
229
277
  @get
230
278
  @listsResource(Resource)
231
279
  @segmentOf(Resource)
280
+ @armOperationRoute(OverrideRouteOptions)
232
281
  @armResourceList(Resource)
233
282
  @Private.armUpdateProviderNamespace
234
283
  List<
235
284
  Resource extends Foundations.SimpleResource,
236
285
  Parameters extends {} = {},
237
- Response extends {} = ArmResponse<ResourceListResult<Resource>>
286
+ Response extends {} = ArmResponse<ResourceListResult<Resource>>,
287
+ OverrideErrorType extends {} = ErrorType,
288
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
238
289
  >(...ParentParameters, ...Parameters): Response | ErrorType;
239
290
 
240
291
  /**
@@ -244,10 +295,12 @@ interface LegacyOperations<
244
295
  * @template Response The response model for the action
245
296
  * @template Parameters Optional. Additional parameters after the path parameters
246
297
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
298
+ * @template OverrideErrorType Optional. The error response, if non-standard.
299
+ * @template OverrideRouteOptions Optional. The route options for the operation.
247
300
  */
248
301
  @doc("")
249
- @autoRoute
250
302
  @armResourceAction(Resource)
303
+ @armOperationRoute(OverrideRouteOptions)
251
304
  @Private.enforceConstraint(Resource, Foundations.Resource)
252
305
  @post
253
306
  @Private.armUpdateProviderNamespace
@@ -257,7 +310,9 @@ interface LegacyOperations<
257
310
  Request extends TypeSpec.Reflection.Model | void,
258
311
  Response extends TypeSpec.Reflection.Model | void,
259
312
  Parameters extends {} = {},
260
- OptionalRequestBody extends valueof boolean = false
313
+ OptionalRequestBody extends valueof boolean = false,
314
+ OverrideErrorType extends {} = ErrorType,
315
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
261
316
  >(
262
317
  ...ParentParameters,
263
318
  ...ResourceTypeParameter,
@@ -266,7 +321,7 @@ interface LegacyOperations<
266
321
  @doc("The content of the action request")
267
322
  @armBodyRoot(OptionalRequestBody)
268
323
  body: Request,
269
- ): Response | ErrorType;
324
+ ): Response | OverrideErrorType;
270
325
 
271
326
  /**
272
327
  * A long-running resource action.
@@ -277,11 +332,13 @@ interface LegacyOperations<
277
332
  * @template Response The union of successful responses for the action
278
333
  * @template Parameters Optional. Additional parameters after the path parameters
279
334
  * @template OptionalRequestBody Optional. Indicates whether the request body is optional
335
+ * @template OverrideErrorType Optional. The error response, if non-standard.
336
+ * @template OverrideRouteOptions Optional. The route options for the operation.
280
337
  */
281
338
  #suppress "@azure-tools/typespec-azure-core/no-response-body" "ARM"
282
339
  @doc("")
283
- @autoRoute
284
340
  @armResourceAction(Resource)
341
+ @armOperationRoute(OverrideRouteOptions)
285
342
  @Private.enforceConstraint(Resource, Foundations.Resource)
286
343
  @Private.armUpdateProviderNamespace
287
344
  @post
@@ -301,7 +358,9 @@ interface LegacyOperations<
301
358
  "Resource operation accepted.",
302
359
  LroHeaders
303
360
  > | Result,
304
- OptionalRequestBody extends valueof boolean = false
361
+ OptionalRequestBody extends valueof boolean = false,
362
+ OverrideErrorType extends {} = ErrorType,
363
+ OverrideRouteOptions extends valueof ArmOperationOptions = ResourceRoute
305
364
  >(
306
365
  ...ParentParameters,
307
366
  ...ResourceTypeParameter,
@@ -310,7 +369,7 @@ interface LegacyOperations<
310
369
  @doc("The content of the action request")
311
370
  @armBodyRoot(OptionalRequestBody)
312
371
  body: Request,
313
- ): Response | ErrorType;
372
+ ): Response | OverrideErrorType;
314
373
  }
315
374
  /**
316
375
  * @dev DEPRECATED: Use ProviderParameter instead. Get the provider namespace key-value pair
@@ -152,16 +152,48 @@ extern dec armResourceList(target: Operation, resourceType: Model);
152
152
 
153
153
  /**
154
154
  * This decorator is used to identify interfaces containing resource operations.
155
- * When applied, it marks the interface with the `@autoRoute` decorator so that
155
+ * By default, it marks the interface with the `@autoRoute` decorator so that
156
156
  * all of its contained operations will have their routes generated
157
157
  * automatically.
158
158
  *
159
- * It also adds a `@tag` decorator bearing the name of the interface so that all
159
+ * The decorator also adds a `@tag` decorator bearing the name of the interface so that all
160
160
  * of the operations will be grouped based on the interface name in generated
161
161
  * clients.
162
- * @param _ DEPRECATED
162
+ *
163
+ * The optional `resourceOperationOptions` parameter provides additional options.
164
+ * `allowStaticRoutes` turns off autoRout for the interface, so individual operations can
165
+ * choose static (`@route`) or automatic (`@autoRoute`) routing.
166
+ *
167
+ * `resourceType: Model` specifies the resource type for the operations in the interface
168
+ *
169
+ * `omitTags: true`: turns off the default tagging of operations in the interface, so that individual operations must be
170
+ * individually tagged
171
+ *
172
+ *
173
+ * @param resourceOperationOptions Options for routing the operations in the interface and associating them with a specific resource
163
174
  */
164
- extern dec armResourceOperations(target: Interface, _?: unknown);
175
+ extern dec armResourceOperations(
176
+ target: Interface,
177
+ resourceOperationOptions?: (valueof ResourceOperationOptions) | unknown
178
+ );
179
+
180
+ /** Interface-level operation options */
181
+ model ResourceOperationOptions {
182
+ /**
183
+ * The resource type for the operations in the interface
184
+ */
185
+ resourceType?: Model;
186
+
187
+ /**
188
+ * If true, turns off autoRoute for the interface, so individual operations can choose static (`@route`) or automatic (`@autoRoute`) routing.
189
+ */
190
+ allowStaticRoutes?: boolean;
191
+
192
+ /**
193
+ * If true, turns off the default tagging of operations in the interface, so that individual operations must be individually tagged
194
+ */
195
+ omitTags?: boolean;
196
+ }
165
197
 
166
198
  /**
167
199
  * This decorator is used either on a namespace or a version enum value to indicate
@@ -189,7 +221,7 @@ extern dec armVirtualResource(target: Model, provider?: valueof string);
189
221
  */
190
222
  extern dec resourceBaseType(
191
223
  target: Model,
192
- baseType: "Tenant" | "Subscription" | "ResourceGroup" | "Location" | "Extension"
224
+ baseTypeIt: "Tenant" | "Subscription" | "ResourceGroup" | "Location" | "Extension"
193
225
  );
194
226
 
195
227
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure-tools/typespec-azure-resource-manager",
3
- "version": "0.58.0-dev.3",
3
+ "version": "0.58.0-dev.5",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec Azure Resource Manager library",
6
6
  "homepage": "https://azure.github.io/typespec-azure",