Skip to content

Location Resource

Sample specification for location-based resources.

Try it
main.tsp
import "@typespec/rest";
import "@typespec/versioning";
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
using Http;
using Rest;
using Versioning;
using Azure.Core;
using Azure.ResourceManager;
/** Contoso Resource Provider management API. */
@armProviderNamespace
@service(#{ title: "ContosoProviderHubClient" })
@versioned(Versions)
namespace Microsoft.ContosoProviderHub;
/** Contoso API versions */
enum Versions {
/** 2021-10-01-preview version */
@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5)
`2021-10-01-preview`,
}
/** A ContosoProviderHub resource */
@parentResource(ArmLocationResource<"ResourceGroup">)
model Employee is TrackedResource<EmployeeProperties> {
...ResourceNameParameter<Employee>;
}
/** Employee properties */
model EmployeeProperties {
/** Age of employee */
age?: int32;
/** City of employee */
city?: string;
/** Profile of employee */
@encode("base64url")
profile?: bytes;
/** The status of the last operation. */
@visibility(Lifecycle.Read)
provisioningState?: ProvisioningState;
}
/** The provisioning state of a resource. */
@lroStatus
union ProvisioningState {
ResourceProvisioningState,
/** The resource is being provisioned */
Provisioning: "Provisioning",
/** The resource is updating */
Updating: "Updating",
/** The resource is being deleted */
Deleting: "Deleting",
/** The resource create request has been accepted */
Accepted: "Accepted",
string,
}
interface Operations extends Azure.ResourceManager.Operations {}
@armResourceOperations
interface Employees {
get is ArmResourceRead<Employee>;
createOrUpdate is ArmResourceCreateOrReplaceAsync<Employee>;
update is ArmCustomPatchSync<
Employee,
Azure.ResourceManager.Foundations.ResourceUpdateModel<Employee, EmployeeProperties>
>;
delete is ArmResourceDeleteSync<Employee>;
listByLocation is ArmResourceListByParent<Employee>;
/** A sample resource action that move employee to different location */
move is ArmResourceActionSync<Employee, MoveRequest, MoveResponse>;
/** A sample HEAD operation to check resource existence */
checkExistence is ArmResourceCheckExistence<Employee>;
}
/** Employee move request */
model MoveRequest {
/** The moving from location */
from: string;
/** The moving to location */
to: string;
}
/** Employee move response */
model MoveResponse {
/** The status of the move */
movingStatus: string;
}