@azure-tools/typespec-azure-resource-manager 0.27.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.
- package/LICENSE +21 -0
- package/README.md +346 -0
- package/dist/src/common-types.d.ts +8 -0
- package/dist/src/common-types.d.ts.map +1 -0
- package/dist/src/common-types.js +14 -0
- package/dist/src/common-types.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/internal.d.ts +44 -0
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/src/internal.js +142 -0
- package/dist/src/internal.js.map +1 -0
- package/dist/src/lib.d.ts +615 -0
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +250 -0
- package/dist/src/lib.js.map +1 -0
- package/dist/src/linter.d.ts +3 -0
- package/dist/src/linter.d.ts.map +1 -0
- package/dist/src/linter.js +42 -0
- package/dist/src/linter.js.map +1 -0
- package/dist/src/namespace.d.ts +16 -0
- package/dist/src/namespace.d.ts.map +1 -0
- package/dist/src/namespace.js +106 -0
- package/dist/src/namespace.js.map +1 -0
- package/dist/src/operations.d.ts +36 -0
- package/dist/src/operations.d.ts.map +1 -0
- package/dist/src/operations.js +186 -0
- package/dist/src/operations.js.map +1 -0
- package/dist/src/resource.d.ts +81 -0
- package/dist/src/resource.d.ts.map +1 -0
- package/dist/src/resource.js +358 -0
- package/dist/src/resource.js.map +1 -0
- package/dist/src/rules/arm-resource-action-no-segment.d.ts +2 -0
- package/dist/src/rules/arm-resource-action-no-segment.d.ts.map +1 -0
- package/dist/src/rules/arm-resource-action-no-segment.js +31 -0
- package/dist/src/rules/arm-resource-action-no-segment.js.map +1 -0
- package/dist/src/rules/arm-resource-invalid-chars.d.ts +2 -0
- package/dist/src/rules/arm-resource-invalid-chars.d.ts.map +1 -0
- package/dist/src/rules/arm-resource-invalid-chars.js +61 -0
- package/dist/src/rules/arm-resource-invalid-chars.js.map +1 -0
- package/dist/src/rules/arm-resource-invalid-version-format.d.ts +2 -0
- package/dist/src/rules/arm-resource-invalid-version-format.d.ts.map +1 -0
- package/dist/src/rules/arm-resource-invalid-version-format.js +48 -0
- package/dist/src/rules/arm-resource-invalid-version-format.js.map +1 -0
- package/dist/src/rules/arm-resource-operations.d.ts +2 -0
- package/dist/src/rules/arm-resource-operations.d.ts.map +1 -0
- package/dist/src/rules/arm-resource-operations.js +70 -0
- package/dist/src/rules/arm-resource-operations.js.map +1 -0
- package/dist/src/rules/arm-resource-properties.d.ts +2 -0
- package/dist/src/rules/arm-resource-properties.d.ts.map +1 -0
- package/dist/src/rules/arm-resource-properties.js +55 -0
- package/dist/src/rules/arm-resource-properties.js.map +1 -0
- package/dist/src/rules/arm-resource-provisioning-state-rule.d.ts +2 -0
- package/dist/src/rules/arm-resource-provisioning-state-rule.d.ts.map +1 -0
- package/dist/src/rules/arm-resource-provisioning-state-rule.js +62 -0
- package/dist/src/rules/arm-resource-provisioning-state-rule.js.map +1 -0
- package/dist/src/rules/beyond-nesting-levels.d.ts +5 -0
- package/dist/src/rules/beyond-nesting-levels.d.ts.map +1 -0
- package/dist/src/rules/beyond-nesting-levels.js +37 -0
- package/dist/src/rules/beyond-nesting-levels.js.map +1 -0
- package/dist/src/rules/core-operations.d.ts +2 -0
- package/dist/src/rules/core-operations.d.ts.map +1 -0
- package/dist/src/rules/core-operations.js +181 -0
- package/dist/src/rules/core-operations.js.map +1 -0
- package/dist/src/rules/delete-operation.d.ts +5 -0
- package/dist/src/rules/delete-operation.d.ts.map +1 -0
- package/dist/src/rules/delete-operation.js +28 -0
- package/dist/src/rules/delete-operation.js.map +1 -0
- package/dist/src/rules/envelope-properties.d.ts +5 -0
- package/dist/src/rules/envelope-properties.d.ts.map +1 -0
- package/dist/src/rules/envelope-properties.js +62 -0
- package/dist/src/rules/envelope-properties.js.map +1 -0
- package/dist/src/rules/list-operation.d.ts +5 -0
- package/dist/src/rules/list-operation.d.ts.map +1 -0
- package/dist/src/rules/list-operation.js +35 -0
- package/dist/src/rules/list-operation.js.map +1 -0
- package/dist/src/rules/no-response-body.d.ts +5 -0
- package/dist/src/rules/no-response-body.d.ts.map +1 -0
- package/dist/src/rules/no-response-body.js +27 -0
- package/dist/src/rules/no-response-body.js.map +1 -0
- package/dist/src/rules/operations-interface-missing.d.ts +5 -0
- package/dist/src/rules/operations-interface-missing.d.ts.map +1 -0
- package/dist/src/rules/operations-interface-missing.js +37 -0
- package/dist/src/rules/operations-interface-missing.js.map +1 -0
- package/dist/src/rules/resource-name.d.ts +5 -0
- package/dist/src/rules/resource-name.d.ts.map +1 -0
- package/dist/src/rules/resource-name.js +47 -0
- package/dist/src/rules/resource-name.js.map +1 -0
- package/dist/src/rules/retry-after.d.ts +5 -0
- package/dist/src/rules/retry-after.d.ts.map +1 -0
- package/dist/src/rules/retry-after.js +31 -0
- package/dist/src/rules/retry-after.js.map +1 -0
- package/dist/src/rules/unsupported-types.d.ts +5 -0
- package/dist/src/rules/unsupported-types.d.ts.map +1 -0
- package/dist/src/rules/unsupported-types.js +39 -0
- package/dist/src/rules/unsupported-types.js.map +1 -0
- package/dist/src/rules/utils.d.ts +18 -0
- package/dist/src/rules/utils.d.ts.map +1 -0
- package/dist/src/rules/utils.js +77 -0
- package/dist/src/rules/utils.js.map +1 -0
- package/dist/src/testing/index.d.ts +3 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +24 -0
- package/dist/src/testing/index.js.map +1 -0
- package/lib/arm.foundations.tsp +465 -0
- package/lib/arm.tsp +31 -0
- package/lib/decorators.tsp +87 -0
- package/lib/interfaces.tsp +287 -0
- package/lib/models.tsp +203 -0
- package/lib/operations.tsp +260 -0
- package/lib/parameters.tsp +126 -0
- package/lib/responses.tsp +47 -0
- package/package.json +85 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
using TypeSpec.Reflection;
|
|
2
|
+
|
|
3
|
+
namespace Azure.ResourceManager;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* `@armProviderNamespace` sets the ARM provider name. It will default to use the
|
|
7
|
+
* Namespace element value unless an override value is specified.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* ```typespec
|
|
12
|
+
* @armProviderNamespace
|
|
13
|
+
* namespace Microsoft.Contoso;
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* ```typespec
|
|
17
|
+
* @armProviderNamespace("Microsoft.Contoso")
|
|
18
|
+
* namespace Microsoft.ContosoService;
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param providerNamespace Provider namespace
|
|
22
|
+
*/
|
|
23
|
+
extern dec armProviderNamespace(target: Namespace, providerNamespace?: string);
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* `@singleton` marks an ARM resource model as a singleton resource.
|
|
27
|
+
*
|
|
28
|
+
* Singleton resources only have a single instance with a fixed key name.
|
|
29
|
+
* `.../providers/Microsoft.Contoso/monthlyReports/default`
|
|
30
|
+
*
|
|
31
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
32
|
+
*
|
|
33
|
+
* @param keyValue The name of the singleton resource. Default name is "default".
|
|
34
|
+
*/
|
|
35
|
+
extern dec singleton(target: object, keyValue?: string | "default");
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* `@tenantResource` marks an ARM resource model as a Tenant resource/Root resource/Top-Level resource.
|
|
39
|
+
*
|
|
40
|
+
* Tenant resources have REST API paths like:
|
|
41
|
+
* `/provider/Microsoft.Contoso/FooResources`
|
|
42
|
+
*
|
|
43
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
44
|
+
*/
|
|
45
|
+
extern dec tenantResource(target: object);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* `@subscriptionResource` marks an ARM resource model as a subscription resource.
|
|
49
|
+
*
|
|
50
|
+
* Subscription resources have REST API paths like:
|
|
51
|
+
* `/subscription/{id}/providers/Microsoft.Contoso/employees`
|
|
52
|
+
*
|
|
53
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
54
|
+
*/
|
|
55
|
+
extern dec subscriptionResource(target: object);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* `@locationResource` marks an ARM resource model as a location based resource.
|
|
59
|
+
*
|
|
60
|
+
* Location based resources have REST API paths like
|
|
61
|
+
* `/subscriptions/{subscriptionId}/locations/{location}/providers/Microsoft.Contoso/employees`
|
|
62
|
+
*
|
|
63
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
64
|
+
*/
|
|
65
|
+
extern dec locationResource(target: object);
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* `@resourceGroupResource` marks an ARM resource model as a resource group level resource.
|
|
69
|
+
* This is the default option for ARM resources. It is provided for symmetry and clarity, and
|
|
70
|
+
* you typically do not need to specify it.
|
|
71
|
+
*
|
|
72
|
+
* `/subscription/{id}/resourcegroups/{rg}/providers/Microsoft.Contoso/employees`
|
|
73
|
+
*
|
|
74
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
75
|
+
*/
|
|
76
|
+
extern dec resourceGroupResource(target: object);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* `@extensionResource` marks an ARM resource model as an Extension resource.
|
|
80
|
+
* Extension resource extends other resource types. URL path is appended
|
|
81
|
+
* to another segment {scope} which refers to another Resource URL.
|
|
82
|
+
*
|
|
83
|
+
* `{resourceUri}/providers/Microsoft.Contoso/accessPermissions`
|
|
84
|
+
*
|
|
85
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
86
|
+
*/
|
|
87
|
+
extern dec extensionResource(target: object);
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
using TypeSpec.Http;
|
|
2
|
+
using TypeSpec.Rest;
|
|
3
|
+
using OpenAPI;
|
|
4
|
+
using Autorest;
|
|
5
|
+
using Azure.ResourceManager.Foundations;
|
|
6
|
+
|
|
7
|
+
namespace Azure.ResourceManager;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This is the interface that implements the standard ARM operation that returns
|
|
11
|
+
* all supported RP operations. You should have exactly one declaration for each
|
|
12
|
+
* ARM service. It implements
|
|
13
|
+
* GET "/providers/Microsoft.ContosoProviderHub/operations"
|
|
14
|
+
*/
|
|
15
|
+
interface Operations {
|
|
16
|
+
@tag("Operations")
|
|
17
|
+
@autoRoute
|
|
18
|
+
@armUpdateProviderNamespace
|
|
19
|
+
@doc("List the operations for the provider")
|
|
20
|
+
@segment("operations")
|
|
21
|
+
@get
|
|
22
|
+
list(
|
|
23
|
+
...ApiVersionParameter,
|
|
24
|
+
|
|
25
|
+
@path
|
|
26
|
+
@segment("providers")
|
|
27
|
+
@doc("The provider namespace (this parameter will not show up in operations).")
|
|
28
|
+
provider: "Microsoft.ThisWillBeReplaced"
|
|
29
|
+
): ArmResponse<OperationListResult> | ErrorResponse;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated Use Azure.ResourceManager.TrackedResourceOperations instead
|
|
34
|
+
* A composite interface for resources that include `ResourceInstanceOperations<TResource, TProperties>`
|
|
35
|
+
* and `ResourceCollectionOperations<TResource>`. It includes: `GET`, `PUT`, `PATCH`, `DELETE`, ListByParent,
|
|
36
|
+
* ListBySubscription operations. The actual route depends on the resource model.
|
|
37
|
+
* This is the most common API pattern for Tracked Resources to use.
|
|
38
|
+
* @template TResource the ArmResource that provides these operations
|
|
39
|
+
* @template TProperties RP-specific property bag for the resource
|
|
40
|
+
* @template TBaseParameters The http parameters that are part of the request
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
@deprecated("Use Azure.ResourceManager.TrackedResourceOperations instead")
|
|
45
|
+
interface ResourceOperations<
|
|
46
|
+
TResource extends ArmResource,
|
|
47
|
+
TProperties extends object,
|
|
48
|
+
TBaseParameters = BaseParameters<TResource>
|
|
49
|
+
> extends TrackedResourceOperations<TResource, TProperties, TBaseParameters> {}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* A composite interface for resources that include `ResourceInstanceOperations<TResource, TProperties>`
|
|
53
|
+
* and `ResourceCollectionOperations<TResource>`. It includes: `GET`, `PUT`, `PATCH`, `DELETE`, ListByParent,
|
|
54
|
+
* ListBySubscription operations. The actual route depends on the resource model.
|
|
55
|
+
* This is the most common API pattern for Tracked Resources to use.
|
|
56
|
+
* @template TResource the ArmResource that provides these operations
|
|
57
|
+
* @template TProperties RP-specific property bag for the resource
|
|
58
|
+
* @template TBaseParameters The http parameters that are part of the request
|
|
59
|
+
*
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
interface TrackedResourceOperations<
|
|
63
|
+
TResource extends ArmResource,
|
|
64
|
+
TProperties extends object,
|
|
65
|
+
TBaseParameters = BaseParameters<TResource>
|
|
66
|
+
>
|
|
67
|
+
extends ResourceInstanceOperations<TResource, TProperties, TBaseParameters>,
|
|
68
|
+
ResourceCollectionOperations<TResource, TBaseParameters> {}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* A composite interface for Proxy resources that include `ResourceInstanceOperations<TResource, TProperties>`
|
|
72
|
+
* and `ResourceListByParent<TResource>`. It includes: `GET`, `PUT`, `PATCH`, `DELETE`, ListByParent operations.
|
|
73
|
+
*
|
|
74
|
+
* The actual route depends on the resource model but would have started with
|
|
75
|
+
* `/subscriptions/{id}/resourcegroups/{rg}/providers/Microsoft.XXX/...`
|
|
76
|
+
*
|
|
77
|
+
* This is the most common API pattern for Proxy Resources to use.
|
|
78
|
+
*/
|
|
79
|
+
interface ProxyResourceOperations<
|
|
80
|
+
TResource extends ArmResource,
|
|
81
|
+
TBaseParameters = BaseParameters<TResource>
|
|
82
|
+
>
|
|
83
|
+
extends ResourceRead<TResource, TBaseParameters>,
|
|
84
|
+
ResourceCreate<TResource, TBaseParameters>,
|
|
85
|
+
ResourceDelete<TResource, TBaseParameters>,
|
|
86
|
+
ResourceListByParent<TResource, TBaseParameters> {}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* A composite interface for Tenant resources that include `ResourceInstanceOperations<TResource, TProperties>`
|
|
90
|
+
* and `ResourceListByParent<TResource>`. It includes: `GET`, `PUT`, `PATCH`, `DELETE`, ListByParent operations.
|
|
91
|
+
*
|
|
92
|
+
* The routes are always start at root level:
|
|
93
|
+
* `/providers/Microsoft.XXX/...`
|
|
94
|
+
*
|
|
95
|
+
* This is the most common API pattern for Tenant Resources to use.
|
|
96
|
+
*/
|
|
97
|
+
interface TenantResourceOperations<TResource extends ArmResource, TProperties extends object>
|
|
98
|
+
extends TenantResourceRead<TResource>,
|
|
99
|
+
TenantResourceCreate<TResource>,
|
|
100
|
+
TenantResourceUpdate<TResource, TProperties>,
|
|
101
|
+
TenantResourceDelete<TResource>,
|
|
102
|
+
TenantResourceListByParent<TResource> {}
|
|
103
|
+
|
|
104
|
+
interface ResourceInstanceOperations<
|
|
105
|
+
TResource extends ArmResource,
|
|
106
|
+
TProperties extends object,
|
|
107
|
+
TBaseParameters = BaseParameters<TResource>,
|
|
108
|
+
TPatchModel = ResourceUpdateModel<TResource, TProperties>
|
|
109
|
+
>
|
|
110
|
+
extends ResourceRead<TResource, TBaseParameters>,
|
|
111
|
+
ResourceCreate<TResource, TBaseParameters>,
|
|
112
|
+
ResourceUpdate<TResource, TProperties, TBaseParameters>,
|
|
113
|
+
ResourceDelete<TResource, TBaseParameters> {}
|
|
114
|
+
|
|
115
|
+
interface ResourceCollectionOperations<
|
|
116
|
+
TResource extends ArmResource,
|
|
117
|
+
TBaseParameters = BaseParameters<TResource>
|
|
118
|
+
> extends ResourceListByParent<TResource, TBaseParameters>, ResourceListBySubscription<TResource> {}
|
|
119
|
+
|
|
120
|
+
interface ResourceListBySubscription<TResource extends ArmResource> {
|
|
121
|
+
listBySubscription is ArmListBySubscription<TResource>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
interface ResourceListByParent<
|
|
125
|
+
TResource extends ArmResource,
|
|
126
|
+
TBaseParameters = BaseParameters<TResource>,
|
|
127
|
+
TParentName = "",
|
|
128
|
+
TParentFriendlyName = ""
|
|
129
|
+
> {
|
|
130
|
+
listByParent is ArmResourceListByParent<
|
|
131
|
+
TResource,
|
|
132
|
+
TBaseParameters,
|
|
133
|
+
TParentName,
|
|
134
|
+
TParentFriendlyName
|
|
135
|
+
>;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
interface ResourceRead<TResource extends ArmResource, TBaseParameters = BaseParameters<TResource>> {
|
|
139
|
+
get is ArmResourceRead<TResource, TBaseParameters>;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
interface ResourceCreateSync<
|
|
143
|
+
TResource extends ArmResource,
|
|
144
|
+
TBaseParameters = BaseParameters<TResource>
|
|
145
|
+
> {
|
|
146
|
+
createOrUpdate is ArmResourceCreateOrUpdateSync<TResource, TBaseParameters>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
interface ResourceCreateAsync<
|
|
150
|
+
TResource extends ArmResource,
|
|
151
|
+
TBaseParameters = BaseParameters<TResource>
|
|
152
|
+
> {
|
|
153
|
+
createOrUpdate is ArmResourceCreateOrUpdateAsync<TResource, TBaseParameters>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@doc("Delete a resource using the asynchronous call pattern")
|
|
157
|
+
interface ResourceDeleteAsync<
|
|
158
|
+
TResource extends ArmResource,
|
|
159
|
+
TBaseParameters = BaseParameters<TResource>
|
|
160
|
+
> {
|
|
161
|
+
delete is ArmResourceDeleteAsync<TResource, TBaseParameters>;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@doc("Delete a resource")
|
|
165
|
+
interface ResourceDeleteSync<
|
|
166
|
+
TResource extends ArmResource,
|
|
167
|
+
TBaseParameters = BaseParameters<TResource>
|
|
168
|
+
> {
|
|
169
|
+
delete is ArmResourceDeleteSync<TResource, TBaseParameters>;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
@doc("Asynchronous resource update")
|
|
173
|
+
interface ResourceUpdateAsync<
|
|
174
|
+
TResource extends ArmResource,
|
|
175
|
+
TProperties extends object,
|
|
176
|
+
TBaseParameters = BaseParameters<TResource>
|
|
177
|
+
> {
|
|
178
|
+
update is ArmCustomPatchAsync<
|
|
179
|
+
TResource,
|
|
180
|
+
ResourceUpdateModel<TResource, TProperties>,
|
|
181
|
+
TBaseParameters
|
|
182
|
+
>;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@doc("Synchronous resource update")
|
|
186
|
+
interface ResourceUpdateSync<
|
|
187
|
+
TResource extends ArmResource,
|
|
188
|
+
TProperties extends object,
|
|
189
|
+
TBaseParameters = BaseParameters<TResource>
|
|
190
|
+
> {
|
|
191
|
+
update is ArmCustomPatchSync<
|
|
192
|
+
TResource,
|
|
193
|
+
ResourceUpdateModel<TResource, TProperties>,
|
|
194
|
+
TBaseParameters
|
|
195
|
+
>;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
interface ExtensionResourceInstanceOperations<
|
|
199
|
+
TResource extends ArmResource,
|
|
200
|
+
TProperties extends object
|
|
201
|
+
>
|
|
202
|
+
extends ExtensionResourceRead<TResource>,
|
|
203
|
+
ExtensionResourceCreate<TResource>,
|
|
204
|
+
ExtensionResourceUpdate<TResource, TProperties>,
|
|
205
|
+
ExtensionResourceDelete<TResource> {}
|
|
206
|
+
|
|
207
|
+
interface ExtensionResourceCollectionOperations<TResource extends ArmResource>
|
|
208
|
+
extends ExtensionResourceList<TResource> {}
|
|
209
|
+
|
|
210
|
+
interface ExtensionResourceOperations<TResource extends ArmResource, TProperties extends object>
|
|
211
|
+
extends ExtensionResourceInstanceOperations<TResource, TProperties>,
|
|
212
|
+
ExtensionResourceCollectionOperations<TResource> {}
|
|
213
|
+
|
|
214
|
+
alias ResourceCreate<
|
|
215
|
+
TResource extends ArmResource,
|
|
216
|
+
TBaseParameters = BaseParameters<TResource>
|
|
217
|
+
> = ResourceCreateAsync<TResource, TBaseParameters>;
|
|
218
|
+
|
|
219
|
+
alias ResourceUpdate<
|
|
220
|
+
TResource extends ArmResource,
|
|
221
|
+
TProperties extends object,
|
|
222
|
+
TBaseParameters = BaseParameters<TResource>
|
|
223
|
+
> = ResourceUpdateSync<TResource, TProperties, TBaseParameters>;
|
|
224
|
+
|
|
225
|
+
alias ResourceDelete<
|
|
226
|
+
TResource extends ArmResource,
|
|
227
|
+
TBaseParameters = BaseParameters<TResource>
|
|
228
|
+
> = ResourceDeleteAsync<TResource, TBaseParameters>;
|
|
229
|
+
|
|
230
|
+
alias ProxyResourceUpdate<
|
|
231
|
+
TResource extends ArmResource,
|
|
232
|
+
TProperties extends object
|
|
233
|
+
> = ResourceUpdate<TResource, TProperties>;
|
|
234
|
+
|
|
235
|
+
alias ExtensionResourceRead<TResource extends ArmResource> = ResourceRead<
|
|
236
|
+
TResource,
|
|
237
|
+
ExtensionBaseParameters
|
|
238
|
+
>;
|
|
239
|
+
|
|
240
|
+
alias ExtensionResourceCreate<TResource extends ArmResource> = ResourceCreate<
|
|
241
|
+
TResource,
|
|
242
|
+
ExtensionBaseParameters
|
|
243
|
+
>;
|
|
244
|
+
|
|
245
|
+
alias ExtensionResourceUpdate<
|
|
246
|
+
TResource extends ArmResource,
|
|
247
|
+
TProperties extends object
|
|
248
|
+
> = ResourceUpdate<TResource, TProperties, ExtensionBaseParameters>;
|
|
249
|
+
|
|
250
|
+
alias ExtensionResourceDelete<TResource extends ArmResource> = ResourceDelete<
|
|
251
|
+
TResource,
|
|
252
|
+
ExtensionBaseParameters
|
|
253
|
+
>;
|
|
254
|
+
|
|
255
|
+
alias ExtensionResourceList<TResource extends ArmResource> = ResourceListByParent<
|
|
256
|
+
TResource,
|
|
257
|
+
ExtensionBaseParameters,
|
|
258
|
+
"Extension",
|
|
259
|
+
"parent"
|
|
260
|
+
>;
|
|
261
|
+
|
|
262
|
+
alias TenantResourceRead<TResource extends ArmResource> = ResourceRead<
|
|
263
|
+
TResource,
|
|
264
|
+
TenantBaseParameters
|
|
265
|
+
>;
|
|
266
|
+
|
|
267
|
+
alias TenantResourceCreate<TResource extends ArmResource> = ResourceCreateAsync<
|
|
268
|
+
TResource,
|
|
269
|
+
TenantBaseParameters
|
|
270
|
+
>;
|
|
271
|
+
|
|
272
|
+
alias TenantResourceDelete<TResource extends ArmResource> = ResourceDelete<
|
|
273
|
+
TResource,
|
|
274
|
+
TenantBaseParameters
|
|
275
|
+
>;
|
|
276
|
+
|
|
277
|
+
alias TenantResourceUpdate<
|
|
278
|
+
TResource extends ArmResource,
|
|
279
|
+
TProperties extends object
|
|
280
|
+
> = ResourceUpdate<TResource, TProperties, TenantBaseParameters>;
|
|
281
|
+
|
|
282
|
+
alias TenantResourceListByParent<TResource extends ArmResource> = ResourceListByParent<
|
|
283
|
+
TResource,
|
|
284
|
+
TenantBaseParameters,
|
|
285
|
+
"Tenant",
|
|
286
|
+
"tenant"
|
|
287
|
+
>;
|
package/lib/models.tsp
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
using TypeSpec.Http;
|
|
2
|
+
using TypeSpec.Rest;
|
|
3
|
+
using OpenAPI;
|
|
4
|
+
using Azure.ResourceManager.Foundations;
|
|
5
|
+
|
|
6
|
+
namespace Azure.ResourceManager;
|
|
7
|
+
|
|
8
|
+
//#region Standard Resource Operation Interfaces
|
|
9
|
+
/**
|
|
10
|
+
* Concrete tracked resource types can be created by aliasing this type using a specific property type.
|
|
11
|
+
*
|
|
12
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
13
|
+
*/
|
|
14
|
+
@doc("Concrete tracked resource types can be created by aliasing this type using a specific property type.")
|
|
15
|
+
@armResourceInternal(TProperties)
|
|
16
|
+
@includeInapplicableMetadataInPayload(false)
|
|
17
|
+
model TrackedResource<TProperties> extends TrackedResourceBase {
|
|
18
|
+
@doc("The resource-specific properties for this resource.")
|
|
19
|
+
@visibility("read", "create")
|
|
20
|
+
@extension("x-ms-client-flatten", true)
|
|
21
|
+
properties?: TProperties;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Concrete proxy resource types can be created by aliasing this type using a specific property type.
|
|
26
|
+
*
|
|
27
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
28
|
+
*/
|
|
29
|
+
@doc("Concrete proxy resource types can be created by aliasing this type using a specific property type.")
|
|
30
|
+
@armResourceInternal(TProperties)
|
|
31
|
+
@includeInapplicableMetadataInPayload(false)
|
|
32
|
+
model ProxyResource<TProperties> extends ProxyResourceBase {
|
|
33
|
+
@doc("The resource-specific properties for this resource.")
|
|
34
|
+
@visibility("read", "create")
|
|
35
|
+
@extension("x-ms-client-flatten", true)
|
|
36
|
+
properties?: TProperties;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Concrete extension resource types can be created by aliasing this type using a specific property type.
|
|
41
|
+
*
|
|
42
|
+
* See more details on [different ARM resource type here.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type)
|
|
43
|
+
*/
|
|
44
|
+
@extensionResource
|
|
45
|
+
@doc("Concrete extension resource types can be created by aliasing this type using a specific property type.")
|
|
46
|
+
@armResourceInternal(TProperties)
|
|
47
|
+
@includeInapplicableMetadataInPayload(false)
|
|
48
|
+
model ExtensionResource<TProperties> extends ExtensionResourceBase {
|
|
49
|
+
@doc("The resource-specific properties for this resource.")
|
|
50
|
+
@visibility("read", "create")
|
|
51
|
+
@extension("x-ms-client-flatten", true)
|
|
52
|
+
properties?: TProperties;
|
|
53
|
+
}
|
|
54
|
+
//#region
|
|
55
|
+
|
|
56
|
+
//#region Standard extraction models
|
|
57
|
+
@copyResourceKeyParameters
|
|
58
|
+
model KeysOf<TResource> {}
|
|
59
|
+
|
|
60
|
+
@copyResourceKeyParameters("parent")
|
|
61
|
+
model ParentKeysOf<TResource> {}
|
|
62
|
+
|
|
63
|
+
model ProviderNamespace<TResource> {
|
|
64
|
+
@path
|
|
65
|
+
@segment("providers")
|
|
66
|
+
@assignProviderNameValue(TResource)
|
|
67
|
+
@doc("The provider namespace for the resource.")
|
|
68
|
+
provider: "Microsoft.ThisWillBeReplaced";
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
|
|
72
|
+
//#region Common ARM type definitions
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* A type definition that refers the id to an ARM resource.
|
|
76
|
+
*
|
|
77
|
+
* Sample usage:
|
|
78
|
+
* otherArmId: ResourceIdentifier;
|
|
79
|
+
* networkId: ResourceIdentifier<[{type:"\\Microsoft.Network\\vnet"}]>
|
|
80
|
+
* vmIds: ResourceIdentifier<[{type:"\\Microsoft.Compute\\vm", scopes["*"]}]>
|
|
81
|
+
*/
|
|
82
|
+
@doc("A type definition that refers the id to an ARM resource.")
|
|
83
|
+
@format("arm-id")
|
|
84
|
+
@OpenAPI.extension(
|
|
85
|
+
"x-ms-arm-id-details",
|
|
86
|
+
{
|
|
87
|
+
allowedResources: T,
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
scalar ResourceIdentifier<T extends ResourceIdentifierAllowedResource[] = {}> extends string;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Used in ResourceIdentifier definition to represent a particular type of ARM resource, enabling constraints based on resource type.
|
|
94
|
+
* See [link](https://github.com/Azure/autorest/tree/main/docs/extensions#schema)
|
|
95
|
+
*/
|
|
96
|
+
@doc("Optional definition represents a particular type of ARM resource which can be referred to by a ResourceIdentifier.")
|
|
97
|
+
model ResourceIdentifierAllowedResource {
|
|
98
|
+
@doc("The type of resource that is being referred to. For example Microsoft.Network/virtualNetworks or Microsoft.Network/virtualNetworks/subnets. See Example Types for more examples.")
|
|
99
|
+
type: string;
|
|
100
|
+
|
|
101
|
+
@doc("""
|
|
102
|
+
An array of scopes. If not specified, the default scope is ["ResourceGroup"].
|
|
103
|
+
See [Allowed Scopes](https://github.com/Azure/autorest/tree/main/docs/extensions#allowed-scopes).
|
|
104
|
+
""")
|
|
105
|
+
scopes?: string[] = [];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Standard terminal provisioning state of resource type. You can spread into your
|
|
110
|
+
* custom provision state to avoid duplication and ensure consistency
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
*
|
|
114
|
+
* ```typespec
|
|
115
|
+
* enum FooProvisioningState {
|
|
116
|
+
* ...ResourceProvisioningState, // include standard provisioning states
|
|
117
|
+
* starting,
|
|
118
|
+
* started,
|
|
119
|
+
* stopping,
|
|
120
|
+
* stopped,
|
|
121
|
+
* }
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
@doc("The provisioning state of a resource type.")
|
|
125
|
+
@Azure.Core.lroStatus
|
|
126
|
+
enum ResourceProvisioningState {
|
|
127
|
+
Succeeded,
|
|
128
|
+
Failed,
|
|
129
|
+
Canceled,
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Standard resource provisioning state model. If you do not have any custom provisioning state,
|
|
134
|
+
* you can spread this model directly into your resource property model.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
*
|
|
138
|
+
* ```typespec
|
|
139
|
+
* model FooProperties {
|
|
140
|
+
* // Only have standard Succeeded, Failed, Cancelled states
|
|
141
|
+
* ...DefaultProvisioningStateProperty,
|
|
142
|
+
* }
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
@doc("Contains a default provisioningState property to be spread into resource property types")
|
|
146
|
+
model DefaultProvisioningStateProperty {
|
|
147
|
+
@doc("The provisioning state of the resource.")
|
|
148
|
+
provisioningState: ResourceProvisioningState;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Standard ARM definition of ManagedServiceIdentity
|
|
153
|
+
*/
|
|
154
|
+
@doc("The managed service identities envelope.")
|
|
155
|
+
model ManagedServiceIdentity {
|
|
156
|
+
@doc("The managed service identities assigned to this resource.")
|
|
157
|
+
identity?: ManagedIdentityProperties;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@doc("Managed identity for services that are constrained to system-assigned managed identities.")
|
|
161
|
+
model ManagedSystemAssignedIdentity {
|
|
162
|
+
@doc("The managed service identities assigned to this resource.")
|
|
163
|
+
identity?: ManagedSystemIdentityProperties;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@doc("The eTag property envelope.")
|
|
167
|
+
model EntityTag {
|
|
168
|
+
@doc("If eTag is provided in the response body, it may also be provided as a header per the normal etag convention. Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.")
|
|
169
|
+
@visibility("read")
|
|
170
|
+
eTag?: string;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@doc("The resource kind property envelope.")
|
|
174
|
+
model ResourceKind {
|
|
175
|
+
@doc("Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.")
|
|
176
|
+
@pattern("^[-\\w\\._,\\(\\\\\\)]+$")
|
|
177
|
+
@visibility("read", "create")
|
|
178
|
+
kind?: string;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
@doc("The response of a {name} list operation.", TResource)
|
|
182
|
+
@friendlyName("{name}ListResult", TResource)
|
|
183
|
+
model ResourceListResult<TResource extends ArmResource> is Azure.Core.Page<TResource>;
|
|
184
|
+
|
|
185
|
+
@doc("The resource plan property envelope.")
|
|
186
|
+
model ResourcePlan {
|
|
187
|
+
@doc("Details of the resource plan.")
|
|
188
|
+
plan?: ResourcePlanType;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
@doc("The SKU (Stock Keeping Unit) assigned to this resource.")
|
|
192
|
+
model ResourceSku {
|
|
193
|
+
@doc("The SKU (Stock Keeping Unit) assigned to this resource.")
|
|
194
|
+
sku?: ResourceSkuType;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
@doc("The managedBy property envelope.")
|
|
198
|
+
model ManagedBy {
|
|
199
|
+
@doc("The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another Azure resource. If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource.")
|
|
200
|
+
managedBy?: string;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
//#endregion
|