Skip to content

Decorators

This decorator is used either on a namespace or a version enum value to indicate the version of the Azure Resource Manager common-types to use for refs in emitted Swagger files.

@Azure.ResourceManager.armCommonTypesVersion(version: valueof string | EnumMember)

Namespace | EnumMember

NameTypeDescription
versionvalueof string | EnumMemberThe Azure.ResourceManager.CommonTypes.Versions for the desired common-types version or an equivalent string value like “v5”.

@armLibraryNamespace designates a namespace as containign Azure Resource Manager Provider information.

@Azure.ResourceManager.armLibraryNamespace

Namespace

None

@armLibraryNamespace
namespace Microsoft.Contoso;

@armProviderNamespace sets the Azure Resource Manager provider name. It will default to use the Namespace element value unless an override value is specified.

@Azure.ResourceManager.armProviderNamespace(providerNamespace?: valueof string)

Namespace

NameTypeDescription
providerNamespacevalueof stringProvider namespace
@armProviderNamespace
namespace Microsoft.Contoso;
@armProviderNamespace("Microsoft.Contoso")
namespace Microsoft.ContosoService;

@armResourceType sets the value fo the decorated string property to the type of the Azure Resource Manager resource.

@Azure.ResourceManager.armProviderNameValue

Operation

None

@Azure.ResourceManager.armResourceAction(resourceType: Model)

Operation

NameTypeDescription
resourceTypeModelResource model

Marks the operation as being a collection action

@Azure.ResourceManager.armResourceCollectionAction

Operation

None

@Azure.ResourceManager.armResourceCreateOrUpdate(resourceType: Model)

Operation

NameTypeDescription
resourceTypeModelResource model
@Azure.ResourceManager.armResourceDelete(resourceType: Model)

Operation

NameTypeDescription
resourceTypeModelResource model
@Azure.ResourceManager.armResourceList(resourceType: Model)

Operation

NameTypeDescription
resourceTypeModelResource model

This decorator is used to identify interfaces containing resource operations. By default, it marks the interface with the @autoRoute decorator so that all of its contained operations will have their routes generated automatically.

The decorator also adds a @tag decorator bearing the name of the interface so that all of the operations will be grouped based on the interface name in generated clients.

The optional resourceOperationOptions parameter provides additional options. allowStaticRoutes turns off autoRout for the interface, so individual operations can choose static (@route) or automatic (@autoRoute) routing.

resourceType: Model specifies the resource type for the operations in the interface

omitTags: true: turns off the default tagging of operations in the interface, so that individual operations must be individually tagged

@Azure.ResourceManager.armResourceOperations(resourceOperationOptions?: unknown | valueof Azure.ResourceManager.ResourceOperationOptions)

Interface

NameTypeDescription
resourceOperationOptionsunknown | valueof ResourceOperationOptionsOptions for routing the operations in the interface and associating them with a specific resource
@Azure.ResourceManager.armResourceRead(resourceType: Model)

Operation

NameTypeDescription
resourceTypeModelResource model
@Azure.ResourceManager.armResourceUpdate(resourceType: Model)

Operation

NameTypeDescription
resourceTypeModelResource model

This decorator is used on Azure Resource Manager resources that are not based on Azure.ResourceManager common types.

@Azure.ResourceManager.armVirtualResource(provider?: valueof string)

Model

NameTypeDescription
providervalueof string

@extensionResource marks an Azure Resource Manager resource model as an Extension resource. Extension resource extends other resource types. URL path is appended to another segment {scope} which refers to another Resource URL.

{resourceUri}/providers/Microsoft.Contoso/accessPermissions

See more details on different Azure Resource Manager resource type here.

@Azure.ResourceManager.extensionResource

Model

None

This decorator is used to indicate the identifying properties of objects in the array, e.g. size The properties that are used as identifiers for the object needs to be provided as a list of strings.

@Azure.ResourceManager.identifiers(properties: valueof string[])

ModelProperty

NameTypeDescription
propertiesvalueof string[]The list of properties that are used as identifiers for the object. This needs to be provided as a list of strings.
model Pet {
@identifiers(#["size"])
dog: Dog;
}

@locationResource marks an Azure Resource Manager resource model as a location based resource.

Location based resources have REST API paths like /subscriptions/{subscriptionId}/locations/{location}/providers/Microsoft.Contoso/employees

See more details on different Azure Resource Manager resource type here.

@Azure.ResourceManager.locationResource

Model

None

This decorator sets the base type of the given resource.

@Azure.ResourceManager.resourceBaseType(baseTypeIt: "Tenant" | "Subscription" | "ResourceGroup" | "Location" | "Extension")

Model

NameTypeDescription
baseTypeIt"Tenant" | "Subscription" | "ResourceGroup" | "Location" | "Extension"

@resourceGroupResource marks an Azure Resource Manager resource model as a resource group level resource. This is the default option for Azure Resource Manager resources. It is provided for symmetry and clarity, and you typically do not need to specify it.

/subscription/{id}/resourcegroups/{rg}/providers/Microsoft.Contoso/employees

See more details on different Azure Resource Manager resource type here.

@Azure.ResourceManager.resourceGroupResource

Model

None

@singleton marks an Azure Resource Manager resource model as a singleton resource.

Singleton resources only have a single instance with a fixed key name. .../providers/Microsoft.Contoso/monthlyReports/default

See more details on different Azure Resource Manager resource type here.

@Azure.ResourceManager.singleton(keyValue?: valueof string | "default")

Model

NameTypeDescription
keyValuevalueof string | "default"The name of the singleton resource. Default name is “default”.

@subscriptionResource marks an Azure Resource Manager resource model as a subscription resource.

Subscription resources have REST API paths like: /subscription/{id}/providers/Microsoft.Contoso/employees

See more details on different Azure Resource Manager resource type here.

@Azure.ResourceManager.subscriptionResource

Model

None

@tenantResource marks an Azure Resource Manager resource model as a Tenant resource/Root resource/Top-Level resource.

Tenant resources have REST API paths like: /provider/Microsoft.Contoso/FooResources

See more details on different Azure Resource Manager resource type here.

@Azure.ResourceManager.tenantResource

Model

None

Declare the Azure Resource Manager library namespaces used in this provider. This allows sharing Azure Resource Manager resource types across specifications

@Azure.ResourceManager.useLibraryNamespace(...namespaces: Namespace[])

Namespace

NameTypeDescription
namespacesNamespace[]The namespaces of Azure Resource Manager libraries used in this provider

Signifies that an operation is an Azure Resource Manager operation and optionally associates the operation with a route template.

@Azure.ResourceManager.Legacy.armOperationRoute(route?: valueof Azure.ResourceManager.Legacy.ArmOperationOptions)

The operation to associate the model with Operation

NameTypeDescription
routevalueof ArmOperationOptionsOptional route to associate with the operation

This decorator is used on resources that do not satisfy the definition of a resource but need to be identified as such.

@Azure.ResourceManager.Legacy.customAzureResource

Model

None

Specify an external reference that should be used when emitting this type.

@Azure.ResourceManager.Legacy.externalTypeRef(jsonRef: valueof string)

Model | ModelProperty

NameTypeDescription
jsonRefvalueof stringExternal reference(e.g. ”../../common.json#/definitions/Foo”)