Skip to content
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
50cab8f
newly converted
welovej Apr 28, 2025
69812e6
update
welovej Apr 28, 2025
23d3875
Update models.tsp
welovej Apr 28, 2025
5386953
update
welovej Apr 28, 2025
3fb2691
Update tspconfig.yaml
welovej May 9, 2025
bbe71f7
Merge branch 'main' of https://github.com/Azure/azure-rest-api-specs …
May 9, 2025
4e30424
update
May 9, 2025
e9ddc49
update
welovej May 9, 2025
2a21db9
update
welovej May 9, 2025
f4105f7
update
May 14, 2025
e82088f
Merge branch 'main' of https://github.com/Azure/azure-rest-api-specs …
May 14, 2025
bb7b192
Fix optional body issues
melina5656 May 23, 2025
d480385
Merge remote-tracking branch 'upstream/main' into TspMig-datadog
melina5656 Jun 6, 2025
ecbeb46
Delete conditionalClientFlatten and run prettier check
melina5656 Jun 6, 2025
a7cbf79
Merge remote-tracking branch 'upstream/main' into TspMig-datadog
welovej Jun 23, 2025
846483b
FIXME
welovej Jun 24, 2025
f3333a7
Merge remote-tracking branch 'upstream/main' into pr/34281
mcgallan Jul 3, 2025
04b7287
update
mcgallan Jul 3, 2025
fa7b056
update
mcgallan Jul 3, 2025
5fbf01c
update
mcgallan Jul 3, 2025
8ab2204
Merge branch 'main' into TspMig-datadog
v-jiaodi Jul 8, 2025
1f0a9d0
Merge branch 'main' into TspMig-datadog
v-jiaodi Jul 14, 2025
9ee2977
Remove Bodyboot Decorator
melina5656 Jul 15, 2025
d26919a
resolve breaking
v-jiaodi Jul 16, 2025
c21e550
Update ArmLroLocationHeader type in monitor resource
welovej Jul 18, 2025
40921b4
fix for subscriptionId to be optional
welovej Jul 22, 2025
3dbc32a
Update tspconfig.yaml
welovej Jul 23, 2025
0d3f8aa
remove private things
welovej Jul 30, 2025
5e357c5
Update main.tsp
welovej Jul 30, 2025
2756877
Update tspconfig.yaml
welovej Aug 1, 2025
d5c8748
fix for as description and migration language scop decorator to clien…
welovej Aug 5, 2025
ac9cc3e
Update client.tsp
welovej Aug 5, 2025
80be29c
fix for typespec migration validation
welovej Aug 5, 2025
5f8f3dc
Revert "fix for typespec migration validation"
welovej Aug 5, 2025
e1d953d
update
welovej Aug 5, 2025
bf65c02
fix: for @pagedItems
welovej Aug 22, 2025
397b66d
Update DatadogMonitorResource.tsp
welovej Aug 25, 2025
c37407d
compability for java
weidongxu-microsoft Aug 26, 2025
13ea7d0
Update main.tsp
welovej Oct 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 191 additions & 0 deletions specification/datadog/Datadog.Management/DatadogMonitorResource.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;

namespace Microsoft.Datadog;

model DatadogMonitorResource

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should use the canonical name for the resource type (Monitor) and customize for client code/openapi by augmentation decorator.

is Azure.ResourceManager.TrackedResource<MonitorProperties> {
...ResourceNameParameter<
Resource = DatadogMonitorResource,
KeyName = "monitorName",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove since this is the default value.

SegmentName = "monitors",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove since this is the default value.

NamePattern = ""
>;
#suppress "@azure-tools/typespec-azure-core/documentation-required" ""
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility"
sku?: ResourceSku;
#suppress "@azure-tools/typespec-azure-core/documentation-required" ""
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility"
identity?: IdentityProperties;
}

@armResourceOperations
interface DatadogMonitorResources {
/**
* Get the properties of a specific monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_Get")
get is ArmResourceRead<DatadogMonitorResource>;

/**
* Create a monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_Create")
create is ArmResourceCreateOrReplaceAsync<DatadogMonitorResource>;

/**
* Update a monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@patch(#{ implicitOptionality: false })
@operationId("Monitors_Update")
update is ArmCustomPatchAsync<
DatadogMonitorResource,
PatchModel = DatadogMonitorResourceUpdateParameters,
Response = ArmResponse<DatadogMonitorResource> | ArmResourceCreatedResponse<
DatadogMonitorResource,
LroHeaders = ArmAsyncOperationHeader<FinalResult = DatadogMonitorResource> &
Azure.Core.Foundations.RetryAfterHeader
>
>;

/**
* Delete a monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "For backward compatibility"
@operationId("Monitors_Delete")
delete is ArmResourceDeleteWithoutOkAsync<
DatadogMonitorResource,
Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse
>;

/**
* List all monitors under the specified resource group.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListByResourceGroup")
listByResourceGroup is ArmResourceListByParent<
DatadogMonitorResource,
Response = ArmResponse<DatadogMonitorResourceListResponse>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be a standard list response I assume.

>;

/**
* List all monitors under the specified subscription.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_List")
list is ArmListBySubscription<
DatadogMonitorResource,
Response = ArmResponse<DatadogMonitorResourceListResponse>
>;

/**
* List the api keys for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListApiKeys")
listApiKeys is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogApiKeyListResponse>
>;

/**
* Get the default api key.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_GetDefaultKey")
getDefaultKey is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogApiKey>
>;

/**
* Set the default api key.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_SetDefaultKey")
setDefaultKey is ArmResourceActionSync<
DatadogMonitorResource,
{
@bodyRoot
body?: DatadogApiKey;
},
OkResponse
>;

/**
* List the hosts for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListHosts")
listHosts is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogHostListResponse>
>;

/**
* List all Azure resources associated to the same Datadog organization as the target resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListLinkedResources")
listLinkedResources is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<LinkedResourceListResponse>
>;

/**
* List the resources currently being monitored by the Datadog monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListMonitoredResources")
listMonitoredResources is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<MonitoredResourceListResponse>
>;

/**
* Refresh the set password link and return a latest one.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_RefreshSetPasswordLink")
refreshSetPasswordLink is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogSetPasswordLink>
>;

/**
* Get marketplace and organization info mapped to the given monitor.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@action("getBillingInfo")
@operationId("BillingInfo_Get")
billingInfoGet is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<BillingInfoResponse>
>;
}

@@doc(DatadogMonitorResource.name, "Monitor resource name");
@@doc(DatadogMonitorResource.properties,
"Properties specific to the monitor resource."
);
@@doc(DatadogMonitorResources.create::parameters.resource, "");
@@doc(DatadogMonitorResources.update::parameters.properties, "");
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "./DatadogMonitorResource.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;

namespace Microsoft.Datadog;

@parentResource(DatadogMonitorResource)
model DatadogSingleSignOnResource
is Azure.ResourceManager.ProxyResource<DatadogSingleSignOnProperties> {
...ResourceNameParameter<
Resource = DatadogSingleSignOnResource,
KeyName = "configurationName",
SegmentName = "singleSignOnConfigurations",
NamePattern = ""
>;
}

#suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" ""
@armResourceOperations
interface DatadogSingleSignOnResources {
/**
* Gets the datadog single sign-on resource for the given Monitor.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("SingleSignOnConfigurations_Get")
get is ArmResourceRead<DatadogSingleSignOnResource>;

/**
* Configures single-sign-on for this resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("SingleSignOnConfigurations_CreateOrUpdate")
createOrUpdate is ArmResourceCreateOrReplaceAsync<DatadogSingleSignOnResource>;

/**
* List the single sign-on configurations for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("SingleSignOnConfigurations_List")
list is ArmResourceListByParent<
DatadogSingleSignOnResource,
Response = ArmResponse<DatadogSingleSignOnResourceListResponse>
>;
}

@@doc(DatadogSingleSignOnResource.name, "Configuration name");
@@doc(DatadogSingleSignOnResource.properties, "");
@@doc(DatadogSingleSignOnResources.createOrUpdate::parameters.resource, "");
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "./DatadogMonitorResource.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;

namespace Microsoft.Datadog;
/**
* The request to update subscriptions needed to be monitored by the Datadog monitor resource.
*/
@parentResource(DatadogMonitorResource)
model MonitoredSubscriptionProperties
is Azure.ResourceManager.ProxyResource<SubscriptionList> {
...ResourceNameParameter<
Resource = MonitoredSubscriptionProperties,
KeyName = "configurationName",
SegmentName = "monitoredSubscriptions",
NamePattern = ""
>;
}

@armResourceOperations
interface MonitoredSubscriptions {
/**
* List the subscriptions currently being monitored by the Datadog monitor resource.
*/
get is ArmResourceRead<MonitoredSubscriptionProperties>;

/**
* Add the subscriptions that should be monitored by the Datadog monitor resource.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility"
createorUpdate is ArmResourceCreateOrReplaceAsync<
MonitoredSubscriptionProperties,
Response = ArmResourceUpdatedResponse<MonitoredSubscriptionProperties> | ArmResourceCreatedResponse<
MonitoredSubscriptionProperties,
ArmLroLocationHeader & Azure.Core.Foundations.RetryAfterHeader
Comment thread
pshao25 marked this conversation as resolved.
Outdated
> | ArmAcceptedLroResponse
>;

/**
* Updates the subscriptions that are being monitored by the Datadog monitor resource
*/
@patch(#{ implicitOptionality: false })
update is ArmCustomPatchAsync<
MonitoredSubscriptionProperties,
PatchModel = MonitoredSubscriptionProperties
>;

/**
* Updates the subscriptions that are being monitored by the Datadog monitor resource
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "For backward compatibility"
delete is ArmResourceDeleteWithoutOkAsync<
MonitoredSubscriptionProperties,
Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse
>;

/**
* List the subscriptions currently being monitored by the Datadog monitor resource.
*/
list is ArmResourceListByParent<
MonitoredSubscriptionProperties,
Response = ArmResponse<MonitoredSubscriptionPropertiesList>
>;
}

@@doc(MonitoredSubscriptionProperties.name,
"The configuration name. Only 'default' value is supported."
);
@@doc(MonitoredSubscriptionProperties.properties,
"The request to update subscriptions needed to be monitored by the Datadog monitor resource."
);
@@doc(MonitoredSubscriptions.createorUpdate::parameters.resource, "");
@@doc(MonitoredSubscriptions.update::parameters.properties, "");
58 changes: 58 additions & 0 deletions specification/datadog/Datadog.Management/MonitoringTagRules.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "./DatadogMonitorResource.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;

namespace Microsoft.Datadog;
/**
* Capture logs and metrics of Azure resources based on ARM tags.
*/
@parentResource(DatadogMonitorResource)
model MonitoringTagRules
is Azure.ResourceManager.ProxyResource<MonitoringTagRulesProperties> {
...ResourceNameParameter<
Resource = MonitoringTagRules,
KeyName = "ruleSetName",
SegmentName = "tagRules",
NamePattern = ""
>;
}

#suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" ""
@armResourceOperations
interface TagRules {
/**
* Get a tag rule set for a given monitor resource.
*/
get is ArmResourceRead<MonitoringTagRules>;

/**
* Create or update a tag rule set for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility"
createOrUpdate is ArmResourceCreateOrReplaceSync<
MonitoringTagRules,
Response = ArmResourceUpdatedResponse<MonitoringTagRules>
>;

/**
* List the tag rules for a given monitor resource.
*/
list is ArmResourceListByParent<
MonitoringTagRules,
Response = ArmResponse<MonitoringTagRulesListResponse>
>;
}

@@doc(MonitoringTagRules.name, "Rule set name");
@@doc(MonitoringTagRules.properties,
"Definition of the properties for a TagRules resource."
);
@@doc(TagRules.createOrUpdate::parameters.resource, "");
Loading