packages/typespec-azure-resource-manager/generated-defs/Azure.ResourceManager.ts (112 lines of code) (raw):

import type { DecoratorContext, EnumMember, EnumValue, Interface, Model, ModelProperty, Namespace, Operation, Type, } from "@typespec/compiler"; /** * Marks the operation as being a collection action */ export type ArmResourceCollectionActionDecorator = ( context: DecoratorContext, target: Operation, ) => void; /** * `@armResourceType` sets the value fo the decorated string * property to the type of the Azure Resource Manager resource. * * @param resource The resource to get the type of */ export type ArmProviderNameValueDecorator = (context: DecoratorContext, target: Operation) => void; /** * `@armProviderNamespace` sets the Azure Resource Manager provider name. It will default to use the * Namespace element value unless an override value is specified. * * @example * ```typespec * @armProviderNamespace * namespace Microsoft.Contoso; * ``` * * ```typespec * @armProviderNamespace("Microsoft.Contoso") * namespace Microsoft.ContosoService; * ``` * @param providerNamespace Provider namespace * @param libraryNamespaces a library namespace containing types for this namespace */ export type ArmProviderNamespaceDecorator = ( context: DecoratorContext, target: Namespace, providerNamespace?: string, ) => void; /** * Declare the Azure Resource Manager library namespaces used in this provider. * This allows sharing Azure Resource Manager resource types across specifications * * @param namespaces The namespaces of Azure Resource Manager libraries used in this provider */ export type UseLibraryNamespaceDecorator = ( context: DecoratorContext, target: Namespace, ...namespaces: Namespace[] ) => void; /** * `@armLibraryNamespace` designates a namespace as containign Azure Resource Manager Provider information. * * @example * ```typespec * @armLibraryNamespace * namespace Microsoft.Contoso; * ``` */ export type ArmLibraryNamespaceDecorator = (context: DecoratorContext, target: Namespace) => void; /** * `@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.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type) * * @param keyValue The name of the singleton resource. Default name is "default". */ export type SingletonDecorator = ( context: DecoratorContext, target: Model, keyValue?: string | "default", ) => void; /** * `@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.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type) */ export type TenantResourceDecorator = (context: DecoratorContext, target: Model) => void; /** * `@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.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type) */ export type SubscriptionResourceDecorator = (context: DecoratorContext, target: Model) => void; /** * `@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.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type) */ export type LocationResourceDecorator = (context: DecoratorContext, target: Model) => void; /** * `@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.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type) */ export type ResourceGroupResourceDecorator = (context: DecoratorContext, target: Model) => void; /** * `@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.](https://azure.github.io/typespec-azure/docs/howtos/ARM/resource-type) */ export type ExtensionResourceDecorator = (context: DecoratorContext, target: Model) => void; /** * * * * @param resourceType Resource model */ export type ArmResourceActionDecorator = ( context: DecoratorContext, target: Operation, resourceType: Model, ) => void; /** * * * * @param resourceType Resource model */ export type ArmResourceCreateOrUpdateDecorator = ( context: DecoratorContext, target: Operation, resourceType: Model, ) => void; /** * * * * @param resourceType Resource model */ export type ArmResourceReadDecorator = ( context: DecoratorContext, target: Operation, resourceType: Model, ) => void; /** * * * * @param resourceType Resource model */ export type ArmResourceUpdateDecorator = ( context: DecoratorContext, target: Operation, resourceType: Model, ) => void; /** * * * * @param resourceType Resource model */ export type ArmResourceDeleteDecorator = ( context: DecoratorContext, target: Operation, resourceType: Model, ) => void; /** * * * * @param resourceType Resource model */ export type ArmResourceListDecorator = ( context: DecoratorContext, target: Operation, resourceType: Model, ) => void; /** * This decorator is used to identify interfaces containing resource operations. * When applied, it marks the interface with the `@autoRoute` decorator so that * all of its contained operations will have their routes generated * automatically. * * It 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. * * @param _ DEPRECATED */ export type ArmResourceOperationsDecorator = ( context: DecoratorContext, target: Interface, _?: Type, ) => void; /** * 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. * * @param version The Azure.ResourceManager.CommonTypes.Versions for the desired common-types version or an equivalent string value like "v5". */ export type ArmCommonTypesVersionDecorator = ( context: DecoratorContext, target: Namespace | EnumMember, version: string | EnumValue, ) => void; /** * This decorator is used on Azure Resource Manager resources that are not based on * Azure.ResourceManager common types. * * @param propertiesType : The type of the resource properties. */ export type ArmVirtualResourceDecorator = (context: DecoratorContext, target: Model) => void; /** * This decorator sets the base type of the given resource. * * @param baseType The built-in parent of the resource, this can be "Tenant", "Subscription", "ResourceGroup", "Location", or "Extension" */ export type ResourceBaseTypeDecorator = ( context: DecoratorContext, target: Model, baseType: Type, ) => void; /** * 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. * * @param properties The list of properties that are used as identifiers for the object. This needs to be provided as a list of strings. * @example * ```typespec * model Pet { * @identifiers(#["size"]) * dog: Dog; * } * ``` */ export type IdentifiersDecorator = ( context: DecoratorContext, entity: ModelProperty, properties: readonly string[], ) => void; export type AzureResourceManagerDecorators = { armResourceCollectionAction: ArmResourceCollectionActionDecorator; armProviderNameValue: ArmProviderNameValueDecorator; armProviderNamespace: ArmProviderNamespaceDecorator; useLibraryNamespace: UseLibraryNamespaceDecorator; armLibraryNamespace: ArmLibraryNamespaceDecorator; singleton: SingletonDecorator; tenantResource: TenantResourceDecorator; subscriptionResource: SubscriptionResourceDecorator; locationResource: LocationResourceDecorator; resourceGroupResource: ResourceGroupResourceDecorator; extensionResource: ExtensionResourceDecorator; armResourceAction: ArmResourceActionDecorator; armResourceCreateOrUpdate: ArmResourceCreateOrUpdateDecorator; armResourceRead: ArmResourceReadDecorator; armResourceUpdate: ArmResourceUpdateDecorator; armResourceDelete: ArmResourceDeleteDecorator; armResourceList: ArmResourceListDecorator; armResourceOperations: ArmResourceOperationsDecorator; armCommonTypesVersion: ArmCommonTypesVersionDecorator; armVirtualResource: ArmVirtualResourceDecorator; resourceBaseType: ResourceBaseTypeDecorator; identifiers: IdentifiersDecorator; };