Advanced Topics
Once you have written your first service with Azure.Core
, you might be interested to try the following features:
Defining singleton resources
You can define a singleton resource (a resource type with only one instance) by using a string literal for the key type. Imagine we want to expose an analytics endpoint for each Widget
instance. Hereβs what it would look like:
@resource("analytics")@parentResource(Widget)model WidgetAnalytics { @key("analyticsId") id: "current";
/** The number of uses of the widget. */ useCount: int64;
/** The number of times the widget was repaired. */ repairCount: int64;}
You can then use the standard operation signatures with this singleton resource type:
import "@azure-tools/typespec-azure-core";
using Azure.Core;using Azure.Core.Traits;
alias ServiceTraits = SupportsRepeatableRequests & SupportsConditionalRequests & SupportsClientRequestId;
alias Operations = Azure.Core.ResourceOperations<ServiceTraits>;
op getAnalytics is Operations.ResourceRead<WidgetAnalytics>;op updateAnalytics is Operations.ResourceCreateOrUpdate<WidgetAnalytics>;
By using a literal value of "current"
for "id"
, the route path for these operations will be the following:
"/widgets/{widgetName}/analytics/current"
The operations defined against this singleton resource will also exclude the key parameter because it cannot be changed.