diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 762d30c8e779..c72c0150116d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -428,7 +428,7 @@ # PRLabel: %Mgmt %mgmt-review-needed /sdk/compute/arm-compute/ @qiaozha @MaryGao @JialinHuang803 -# PRLabel: %Mgmt +# PRLabel: %Mgmt %mgmt-review-needed /sdk/cloudhealth/arm-cloudhealth/ @qiaozha @MaryGao @JialinHuang803 # PRLabel: %Mgmt diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41d10e262567..f8614471a5cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4300,7 +4300,7 @@ importers: specifier: ^1.9.0 version: link:../../core/core-auth '@azure/core-lro': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../../core/core-lro '@azure/core-rest-pipeline': specifier: link:../../core/core-rest-pipeline diff --git a/sdk/cloudhealth/arm-cloudhealth/CHANGELOG.md b/sdk/cloudhealth/arm-cloudhealth/CHANGELOG.md index b555b19e97b8..fdc25470512a 100644 --- a/sdk/cloudhealth/arm-cloudhealth/CHANGELOG.md +++ b/sdk/cloudhealth/arm-cloudhealth/CHANGELOG.md @@ -1,7 +1,7 @@ # Release History -## 1.0.0-beta.1 (2025-06-04) +## 1.0.0-beta.1 (2026-06-04) ### Features Added -Initial release of the @azure/arm-cloudhealth package +This is the first preview release of the @azure/arm-cloudhealth package. It introduces a new SDK generation with layered APIs, smaller bundles, and improved ergonomics. For more details, see the https://aka.ms/azsdk/js/sdk/quickstart. diff --git a/sdk/cloudhealth/arm-cloudhealth/metadata.json b/sdk/cloudhealth/arm-cloudhealth/metadata.json index aa478ac50d03..00f43ed0541b 100644 --- a/sdk/cloudhealth/arm-cloudhealth/metadata.json +++ b/sdk/cloudhealth/arm-cloudhealth/metadata.json @@ -1,4 +1,130 @@ { - "apiVersion": "2025-05-01-preview", - "emitterVersion": "0.40.2" + "apiVersions": { + "Microsoft.CloudHealth": "2026-01-01-preview" + }, + "emitterVersion": "0.54.0", + "crossLanguageDefinitions": { + "CrossLanguagePackageId": "Microsoft.CloudHealth", + "CrossLanguageDefinitionId": { + "@azure/arm-cloudhealth!OperationListResult:interface": "Azure.ResourceManager.CommonTypes.OperationListResult", + "@azure/arm-cloudhealth!Operation:interface": "Azure.ResourceManager.CommonTypes.Operation", + "@azure/arm-cloudhealth!OperationDisplay:interface": "Azure.ResourceManager.CommonTypes.OperationDisplay", + "@azure/arm-cloudhealth!ErrorResponse:interface": "Azure.ResourceManager.CommonTypes.ErrorResponse", + "@azure/arm-cloudhealth!ErrorDetail:interface": "Azure.ResourceManager.CommonTypes.ErrorDetail", + "@azure/arm-cloudhealth!ErrorAdditionalInfo:interface": "Azure.ResourceManager.CommonTypes.ErrorAdditionalInfo", + "@azure/arm-cloudhealth!HealthModel:interface": "Microsoft.CloudHealth.HealthModel", + "@azure/arm-cloudhealth!HealthModelProperties:interface": "Microsoft.CloudHealth.HealthModelProperties", + "@azure/arm-cloudhealth!ManagedServiceIdentity:interface": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentity", + "@azure/arm-cloudhealth!UserAssignedIdentity:interface": "Azure.ResourceManager.CommonTypes.UserAssignedIdentity", + "@azure/arm-cloudhealth!TrackedResource:interface": "Azure.ResourceManager.CommonTypes.TrackedResource", + "@azure/arm-cloudhealth!Resource:interface": "Azure.ResourceManager.CommonTypes.Resource", + "@azure/arm-cloudhealth!SystemData:interface": "Azure.ResourceManager.CommonTypes.SystemData", + "@azure/arm-cloudhealth!ArmOperationStatusResourceProvisioningState:interface": "Azure.ResourceManager.ArmOperationStatus", + "@azure/arm-cloudhealth!HealthModelUpdate:interface": "Azure.ResourceManager.Foundations.ResourceUpdateModel", + "@azure/arm-cloudhealth!HealthModelListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-cloudhealth!SignalDefinition:interface": "Microsoft.CloudHealth.SignalDefinition", + "@azure/arm-cloudhealth!SignalDefinitionProperties:interface": "Microsoft.CloudHealth.SignalDefinitionProperties", + "@azure/arm-cloudhealth!EvaluationRule:interface": "Microsoft.CloudHealth.EvaluationRule", + "@azure/arm-cloudhealth!ThresholdRuleV2:interface": "Microsoft.CloudHealth.ThresholdRuleV2", + "@azure/arm-cloudhealth!ResourceMetricSignalDefinitionProperties:interface": "Microsoft.CloudHealth.ResourceMetricSignalDefinitionProperties", + "@azure/arm-cloudhealth!LogAnalyticsQuerySignalDefinitionProperties:interface": "Microsoft.CloudHealth.LogAnalyticsQuerySignalDefinitionProperties", + "@azure/arm-cloudhealth!PrometheusMetricsSignalDefinitionProperties:interface": "Microsoft.CloudHealth.PrometheusMetricsSignalDefinitionProperties", + "@azure/arm-cloudhealth!ProxyResource:interface": "Azure.ResourceManager.CommonTypes.ProxyResource", + "@azure/arm-cloudhealth!SignalDefinitionListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-cloudhealth!AuthenticationSetting:interface": "Microsoft.CloudHealth.AuthenticationSetting", + "@azure/arm-cloudhealth!AuthenticationSettingProperties:interface": "Microsoft.CloudHealth.AuthenticationSettingProperties", + "@azure/arm-cloudhealth!ManagedIdentityAuthenticationSettingProperties:interface": "Microsoft.CloudHealth.ManagedIdentityAuthenticationSettingProperties", + "@azure/arm-cloudhealth!AuthenticationSettingListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-cloudhealth!Entity:interface": "Microsoft.CloudHealth.Entity", + "@azure/arm-cloudhealth!EntityProperties:interface": "Microsoft.CloudHealth.EntityProperties", + "@azure/arm-cloudhealth!EntityCoordinates:interface": "Microsoft.CloudHealth.EntityCoordinates", + "@azure/arm-cloudhealth!IconDefinition:interface": "Microsoft.CloudHealth.IconDefinition", + "@azure/arm-cloudhealth!SignalGroups:interface": "Microsoft.CloudHealth.SignalGroups", + "@azure/arm-cloudhealth!AzureResourceSignals:interface": "Microsoft.CloudHealth.AzureResourceSignals", + "@azure/arm-cloudhealth!AzureResourceSignal:interface": "Microsoft.CloudHealth.AzureResourceSignal", + "@azure/arm-cloudhealth!SignalInstanceProperties:interface": "Microsoft.CloudHealth.SignalInstanceProperties", + "@azure/arm-cloudhealth!SignalStatus:interface": "Microsoft.CloudHealth.SignalStatus", + "@azure/arm-cloudhealth!LogAnalyticsSignal:interface": "Microsoft.CloudHealth.LogAnalyticsSignal", + "@azure/arm-cloudhealth!PrometheusMetricsSignal:interface": "Microsoft.CloudHealth.PrometheusMetricsSignal", + "@azure/arm-cloudhealth!ExternalSignal:interface": "Microsoft.CloudHealth.ExternalSignal", + "@azure/arm-cloudhealth!LogAnalyticsSignals:interface": "Microsoft.CloudHealth.LogAnalyticsSignals", + "@azure/arm-cloudhealth!AzureMonitorWorkspaceSignals:interface": "Microsoft.CloudHealth.AzureMonitorWorkspaceSignals", + "@azure/arm-cloudhealth!DependenciesSignalGroupV2:interface": "Microsoft.CloudHealth.DependenciesSignalGroupV2", + "@azure/arm-cloudhealth!ExternalSignalGroup:interface": "Microsoft.CloudHealth.ExternalSignalGroup", + "@azure/arm-cloudhealth!EntityAlerts:interface": "Microsoft.CloudHealth.EntityAlerts", + "@azure/arm-cloudhealth!AlertConfiguration:interface": "Microsoft.CloudHealth.AlertConfiguration", + "@azure/arm-cloudhealth!EntityListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-cloudhealth!EntityHistoryRequest:interface": "Microsoft.CloudHealth.EntityHistoryRequest", + "@azure/arm-cloudhealth!EntityHistoryResponse:interface": "Microsoft.CloudHealth.EntityHistoryResponse", + "@azure/arm-cloudhealth!HealthStateTransition:interface": "Microsoft.CloudHealth.HealthStateTransition", + "@azure/arm-cloudhealth!SignalHistoryRequest:interface": "Microsoft.CloudHealth.SignalHistoryRequest", + "@azure/arm-cloudhealth!SignalHistoryResponse:interface": "Microsoft.CloudHealth.SignalHistoryResponse", + "@azure/arm-cloudhealth!SignalHistoryDataPoint:interface": "Microsoft.CloudHealth.SignalHistoryDataPoint", + "@azure/arm-cloudhealth!HealthReportRequest:interface": "Microsoft.CloudHealth.HealthReportRequest", + "@azure/arm-cloudhealth!HealthReportEvaluationRule:interface": "Microsoft.CloudHealth.HealthReportEvaluationRule", + "@azure/arm-cloudhealth!Relationship:interface": "Microsoft.CloudHealth.Relationship", + "@azure/arm-cloudhealth!RelationshipProperties:interface": "Microsoft.CloudHealth.RelationshipProperties", + "@azure/arm-cloudhealth!RelationshipListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-cloudhealth!DiscoveryRule:interface": "Microsoft.CloudHealth.DiscoveryRule", + "@azure/arm-cloudhealth!DiscoveryRuleProperties:interface": "Microsoft.CloudHealth.DiscoveryRuleProperties", + "@azure/arm-cloudhealth!DiscoveryRuleSpecification:interface": "Microsoft.CloudHealth.DiscoveryRuleSpecification", + "@azure/arm-cloudhealth!ResourceGraphQuerySpecification:interface": "Microsoft.CloudHealth.ResourceGraphQuerySpecification", + "@azure/arm-cloudhealth!ApplicationInsightsTopologySpecification:interface": "Microsoft.CloudHealth.ApplicationInsightsTopologySpecification", + "@azure/arm-cloudhealth!DiscoveryError:interface": "Microsoft.CloudHealth.DiscoveryError", + "@azure/arm-cloudhealth!DiscoveryRuleResourceCreate:interface": "Microsoft.CloudHealth.DiscoveryRuleResourceCreate", + "@azure/arm-cloudhealth!DiscoveryRulePropertiesCreate:interface": "Microsoft.CloudHealth.DiscoveryRulePropertiesCreate", + "@azure/arm-cloudhealth!DiscoveryRuleListResult:interface": "Azure.ResourceManager.ResourceListResult", + "@azure/arm-cloudhealth!KnownOrigin:enum": "Azure.ResourceManager.CommonTypes.Origin", + "@azure/arm-cloudhealth!KnownActionType:enum": "Azure.ResourceManager.CommonTypes.ActionType", + "@azure/arm-cloudhealth!KnownHealthModelProvisioningState:enum": "Microsoft.CloudHealth.HealthModelProvisioningState", + "@azure/arm-cloudhealth!KnownManagedServiceIdentityType:enum": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityType", + "@azure/arm-cloudhealth!KnowncreatedByType:enum": "Azure.ResourceManager.CommonTypes.createdByType", + "@azure/arm-cloudhealth!KnownResourceProvisioningState:enum": "Azure.ResourceManager.ResourceProvisioningState", + "@azure/arm-cloudhealth!KnownSignalKind:enum": "Microsoft.CloudHealth.SignalKind", + "@azure/arm-cloudhealth!KnownRefreshInterval:enum": "Microsoft.CloudHealth.RefreshInterval", + "@azure/arm-cloudhealth!KnownSignalOperator:enum": "Microsoft.CloudHealth.SignalOperator", + "@azure/arm-cloudhealth!KnownMetricAggregationType:enum": "Microsoft.CloudHealth.MetricAggregationType", + "@azure/arm-cloudhealth!KnownAuthenticationKind:enum": "Microsoft.CloudHealth.AuthenticationKind", + "@azure/arm-cloudhealth!KnownEntityImpact:enum": "Microsoft.CloudHealth.EntityImpact", + "@azure/arm-cloudhealth!KnownHealthState:enum": "Microsoft.CloudHealth.HealthState", + "@azure/arm-cloudhealth!KnownDependenciesAggregationType:enum": "Microsoft.CloudHealth.DependenciesAggregationType", + "@azure/arm-cloudhealth!KnownDependenciesAggregationUnit:enum": "Microsoft.CloudHealth.DependenciesAggregationUnit", + "@azure/arm-cloudhealth!KnownAlertSeverity:enum": "Microsoft.CloudHealth.AlertSeverity", + "@azure/arm-cloudhealth!KnownDiscoveryRuleRelationshipDiscoveryBehavior:enum": "Microsoft.CloudHealth.DiscoveryRuleRelationshipDiscoveryBehavior", + "@azure/arm-cloudhealth!KnownDiscoveryRuleRecommendedSignalsBehavior:enum": "Microsoft.CloudHealth.DiscoveryRuleRecommendedSignalsBehavior", + "@azure/arm-cloudhealth!KnownDiscoveryRuleKind:enum": "Microsoft.CloudHealth.DiscoveryRuleKind", + "@azure/arm-cloudhealth!KnownVersions:enum": "Microsoft.CloudHealth.Versions", + "@azure/arm-cloudhealth!ManagedServiceIdentityUserAssignedIdentity:type": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentity.userAssignedIdentity.anonymous", + "@azure/arm-cloudhealth!DiscoveryRulesOperations#listByHealthModel:member": "Microsoft.CloudHealth.DiscoveryRules.listByHealthModel", + "@azure/arm-cloudhealth!DiscoveryRulesOperations#delete:member": "Microsoft.CloudHealth.DiscoveryRules.delete", + "@azure/arm-cloudhealth!DiscoveryRulesOperations#createOrUpdate:member": "Microsoft.CloudHealth.DiscoveryRules.createOrUpdate", + "@azure/arm-cloudhealth!DiscoveryRulesOperations#get:member": "Microsoft.CloudHealth.DiscoveryRules.get", + "@azure/arm-cloudhealth!RelationshipsOperations#listByHealthModel:member": "Microsoft.CloudHealth.Relationships.listByHealthModel", + "@azure/arm-cloudhealth!RelationshipsOperations#delete:member": "Microsoft.CloudHealth.Relationships.delete", + "@azure/arm-cloudhealth!RelationshipsOperations#createOrUpdate:member": "Microsoft.CloudHealth.Relationships.createOrUpdate", + "@azure/arm-cloudhealth!RelationshipsOperations#get:member": "Microsoft.CloudHealth.Relationships.get", + "@azure/arm-cloudhealth!EntitiesOperations#ingestHealthReport:member": "Microsoft.CloudHealth.Entities.ingestHealthReport", + "@azure/arm-cloudhealth!EntitiesOperations#getSignalHistory:member": "Microsoft.CloudHealth.Entities.getSignalHistory", + "@azure/arm-cloudhealth!EntitiesOperations#getHistory:member": "Microsoft.CloudHealth.Entities.getHistory", + "@azure/arm-cloudhealth!EntitiesOperations#listByHealthModel:member": "Microsoft.CloudHealth.Entities.listByHealthModel", + "@azure/arm-cloudhealth!EntitiesOperations#delete:member": "Microsoft.CloudHealth.Entities.delete", + "@azure/arm-cloudhealth!EntitiesOperations#createOrUpdate:member": "Microsoft.CloudHealth.Entities.createOrUpdate", + "@azure/arm-cloudhealth!EntitiesOperations#get:member": "Microsoft.CloudHealth.Entities.get", + "@azure/arm-cloudhealth!AuthenticationSettingsOperations#listByHealthModel:member": "Microsoft.CloudHealth.AuthenticationSettings.listByHealthModel", + "@azure/arm-cloudhealth!AuthenticationSettingsOperations#delete:member": "Microsoft.CloudHealth.AuthenticationSettings.delete", + "@azure/arm-cloudhealth!AuthenticationSettingsOperations#createOrUpdate:member": "Microsoft.CloudHealth.AuthenticationSettings.createOrUpdate", + "@azure/arm-cloudhealth!AuthenticationSettingsOperations#get:member": "Microsoft.CloudHealth.AuthenticationSettings.get", + "@azure/arm-cloudhealth!SignalDefinitionsOperations#listByHealthModel:member": "Microsoft.CloudHealth.SignalDefinitions.listByHealthModel", + "@azure/arm-cloudhealth!SignalDefinitionsOperations#delete:member": "Microsoft.CloudHealth.SignalDefinitions.delete", + "@azure/arm-cloudhealth!SignalDefinitionsOperations#createOrUpdate:member": "Microsoft.CloudHealth.SignalDefinitions.createOrUpdate", + "@azure/arm-cloudhealth!SignalDefinitionsOperations#get:member": "Microsoft.CloudHealth.SignalDefinitions.get", + "@azure/arm-cloudhealth!HealthModelsOperations#listBySubscription:member": "Microsoft.CloudHealth.HealthModels.listBySubscription", + "@azure/arm-cloudhealth!HealthModelsOperations#listByResourceGroup:member": "Microsoft.CloudHealth.HealthModels.listByResourceGroup", + "@azure/arm-cloudhealth!HealthModelsOperations#delete:member": "Microsoft.CloudHealth.HealthModels.delete", + "@azure/arm-cloudhealth!HealthModelsOperations#update:member": "Microsoft.CloudHealth.HealthModels.update", + "@azure/arm-cloudhealth!HealthModelsOperations#create:member": "Microsoft.CloudHealth.HealthModels.create", + "@azure/arm-cloudhealth!HealthModelsOperations#get:member": "Microsoft.CloudHealth.HealthModels.get", + "@azure/arm-cloudhealth!OperationsOperations#list:member": "Azure.ResourceManager.Operations.list" + } + } } diff --git a/sdk/cloudhealth/arm-cloudhealth/package.json b/sdk/cloudhealth/arm-cloudhealth/package.json index d84808655504..aea902a414bc 100644 --- a/sdk/cloudhealth/arm-cloudhealth/package.json +++ b/sdk/cloudhealth/arm-cloudhealth/package.json @@ -48,7 +48,7 @@ "@azure-rest/core-client": "^2.1.0", "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", - "@azure/core-lro": "^3.0.0", + "@azure/core-lro": "^3.1.0", "@azure/core-rest-pipeline": "^1.20.0", "@azure/core-util": "^1.12.0", "@azure/logger": "^1.2.0", diff --git a/sdk/cloudhealth/arm-cloudhealth/review/arm-cloudhealth-node.api.md b/sdk/cloudhealth/arm-cloudhealth/review/arm-cloudhealth-node.api.md index 9868481dacfd..96766d3b7388 100644 --- a/sdk/cloudhealth/arm-cloudhealth/review/arm-cloudhealth-node.api.md +++ b/sdk/cloudhealth/arm-cloudhealth/review/arm-cloudhealth-node.api.md @@ -4,14 +4,16 @@ ```ts -import { AbortSignalLike } from '@azure/abort-controller'; -import { ClientOptions } from '@azure-rest/core-client'; -import { OperationOptions } from '@azure-rest/core-client'; -import { OperationState } from '@azure/core-lro'; -import { PathUncheckedResponse } from '@azure-rest/core-client'; -import { Pipeline } from '@azure/core-rest-pipeline'; -import { PollerLike } from '@azure/core-lro'; -import { TokenCredential } from '@azure/core-auth'; +import type { AbortSignalLike } from '@azure/abort-controller'; +import type { ClientOptions } from '@azure-rest/core-client'; +import { isRestError } from '@azure/core-rest-pipeline'; +import type { OperationOptions } from '@azure-rest/core-client'; +import type { OperationState } from '@azure/core-lro'; +import type { PathUncheckedResponse } from '@azure-rest/core-client'; +import type { Pipeline } from '@azure/core-rest-pipeline'; +import type { PollerLike } from '@azure/core-lro'; +import { RestError } from '@azure/core-rest-pipeline'; +import type { TokenCredential } from '@azure/core-auth'; // @public export type ActionType = string; @@ -26,6 +28,12 @@ export interface AlertConfiguration { // @public export type AlertSeverity = string; +// @public +export interface ApplicationInsightsTopologySpecification extends DiscoveryRuleSpecification { + applicationInsightsResourceId: string; + kind: "ApplicationInsightsTopology"; +} + // @public export type AuthenticationKind = string; @@ -46,10 +54,12 @@ export type AuthenticationSettingPropertiesUnion = ManagedIdentityAuthentication // @public export interface AuthenticationSettingsCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public export interface AuthenticationSettingsDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public @@ -62,26 +72,52 @@ export interface AuthenticationSettingsListByHealthModelOptionalParams extends O // @public export interface AuthenticationSettingsOperations { - createOrUpdate: (resourceGroupName: string, healthModelName: string, authenticationSettingName: string, resource: AuthenticationSetting, options?: AuthenticationSettingsCreateOrUpdateOptionalParams) => Promise; - delete: (resourceGroupName: string, healthModelName: string, authenticationSettingName: string, options?: AuthenticationSettingsDeleteOptionalParams) => Promise; + createOrUpdate: (resourceGroupName: string, healthModelName: string, authenticationSettingName: string, resource: AuthenticationSetting, options?: AuthenticationSettingsCreateOrUpdateOptionalParams) => PollerLike, AuthenticationSetting>; + delete: (resourceGroupName: string, healthModelName: string, authenticationSettingName: string, options?: AuthenticationSettingsDeleteOptionalParams) => PollerLike, void>; get: (resourceGroupName: string, healthModelName: string, authenticationSettingName: string, options?: AuthenticationSettingsGetOptionalParams) => Promise; listByHealthModel: (resourceGroupName: string, healthModelName: string, options?: AuthenticationSettingsListByHealthModelOptionalParams) => PagedAsyncIterableIterator; } // @public -export interface AzureMonitorWorkspaceSignalGroup { +export enum AzureClouds { + AZURE_CHINA_CLOUD = "AZURE_CHINA_CLOUD", + AZURE_PUBLIC_CLOUD = "AZURE_PUBLIC_CLOUD", + AZURE_US_GOVERNMENT = "AZURE_US_GOVERNMENT" +} + +// @public +export interface AzureMonitorWorkspaceSignals { authenticationSetting: string; azureMonitorWorkspaceResourceId: string; - signalAssignments?: SignalAssignment[]; + signals?: PrometheusMetricsSignal[]; +} + +// @public +export interface AzureResourceSignal extends SignalInstanceProperties { + aggregationType?: MetricAggregationType; + dataUnit?: string; + dimension?: string; + dimensionFilter?: string; + displayName?: string; + evaluationRules?: EvaluationRule; + metricName?: string; + metricNamespace?: string; + refreshInterval?: RefreshInterval; + signalKind: "AzureResourceMetric"; + timeGrain?: string; } // @public -export interface AzureResourceSignalGroup { +export interface AzureResourceSignals { authenticationSetting: string; azureResourceId: string; - signalAssignments?: SignalAssignment[]; + azureResourceKind?: string; + signals?: AzureResourceSignal[]; } +// @public +export type AzureSupportedClouds = `${AzureClouds}`; + // @public (undocumented) export class CloudHealthClient { constructor(credential: TokenCredential, subscriptionId: string, options?: CloudHealthClientOptionalParams); @@ -98,6 +134,7 @@ export class CloudHealthClient { // @public export interface CloudHealthClientOptionalParams extends ClientOptions { apiVersion?: string; + cloudSetting?: AzureSupportedClouds; } // @public @@ -112,10 +149,21 @@ export type CreatedByType = string; export type DependenciesAggregationType = string; // @public -export interface DependenciesSignalGroup { +export type DependenciesAggregationUnit = string; + +// @public +export interface DependenciesSignalGroupV2 { aggregationType: DependenciesAggregationType; - degradedThreshold?: string; - unhealthyThreshold?: string; + degradedThreshold?: number; + ignoreUnknown?: boolean; + unhealthyThreshold?: number; + unit?: DependenciesAggregationUnit; +} + +// @public +export interface DiscoveryError { + readonly context?: string[]; + readonly message: string; } // @public @@ -123,18 +171,28 @@ export interface DiscoveryRule extends ProxyResource { properties?: DiscoveryRuleProperties; } +// @public +export type DiscoveryRuleKind = string; + // @public export interface DiscoveryRuleProperties { addRecommendedSignals: DiscoveryRuleRecommendedSignalsBehavior; authenticationSetting: string; - readonly deletionDate?: Date; discoverRelationships: DiscoveryRuleRelationshipDiscoveryBehavior; displayName?: string; readonly entityName: string; - readonly errorMessage?: string; - readonly numberOfDiscoveredEntities?: number; + readonly error?: DiscoveryError; readonly provisioningState?: HealthModelProvisioningState; - resourceGraphQuery: string; + specification: DiscoveryRuleSpecificationUnion; +} + +// @public +export interface DiscoveryRulePropertiesCreate { + addRecommendedSignals: DiscoveryRuleRecommendedSignalsBehavior; + authenticationSetting: string; + discoverRelationships: DiscoveryRuleRelationshipDiscoveryBehavior; + displayName?: string; + specification: DiscoveryRuleSpecificationUnion; } // @public @@ -143,12 +201,19 @@ export type DiscoveryRuleRecommendedSignalsBehavior = string; // @public export type DiscoveryRuleRelationshipDiscoveryBehavior = string; +// @public +export interface DiscoveryRuleResourceCreate extends ProxyResource { + properties?: DiscoveryRulePropertiesCreate; +} + // @public export interface DiscoveryRulesCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public export interface DiscoveryRulesDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public @@ -162,38 +227,46 @@ export interface DiscoveryRulesListByHealthModelOptionalParams extends Operation // @public export interface DiscoveryRulesOperations { - createOrUpdate: (resourceGroupName: string, healthModelName: string, discoveryRuleName: string, resource: DiscoveryRule, options?: DiscoveryRulesCreateOrUpdateOptionalParams) => Promise; - delete: (resourceGroupName: string, healthModelName: string, discoveryRuleName: string, options?: DiscoveryRulesDeleteOptionalParams) => Promise; + createOrUpdate: (resourceGroupName: string, healthModelName: string, discoveryRuleName: string, resource: DiscoveryRuleResourceCreate, options?: DiscoveryRulesCreateOrUpdateOptionalParams) => PollerLike, DiscoveryRule>; + delete: (resourceGroupName: string, healthModelName: string, discoveryRuleName: string, options?: DiscoveryRulesDeleteOptionalParams) => PollerLike, void>; get: (resourceGroupName: string, healthModelName: string, discoveryRuleName: string, options?: DiscoveryRulesGetOptionalParams) => Promise; listByHealthModel: (resourceGroupName: string, healthModelName: string, options?: DiscoveryRulesListByHealthModelOptionalParams) => PagedAsyncIterableIterator; } // @public -export interface DynamicDetectionRule { - dynamicThresholdDirection: DynamicThresholdDirection; - dynamicThresholdModel: DynamicThresholdModel; - modelSensitivity: number; - trainingStartTime?: Date; +export interface DiscoveryRuleSpecification { + kind: DiscoveryRuleKind; } // @public -export type DynamicThresholdDirection = string; - -// @public -export type DynamicThresholdModel = string; +export type DiscoveryRuleSpecificationUnion = ResourceGraphQuerySpecification | ApplicationInsightsTopologySpecification | DiscoveryRuleSpecification; // @public export interface EntitiesCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public export interface EntitiesDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; +} + +// @public +export interface EntitiesGetHistoryOptionalParams extends OperationOptions { } // @public export interface EntitiesGetOptionalParams extends OperationOptions { } +// @public +export interface EntitiesGetSignalHistoryOptionalParams extends OperationOptions { +} + +// @public +export interface EntitiesIngestHealthReportOptionalParams extends OperationOptions { +} + // @public export interface EntitiesListByHealthModelOptionalParams extends OperationOptions { timestamp?: Date; @@ -201,9 +274,12 @@ export interface EntitiesListByHealthModelOptionalParams extends OperationOption // @public export interface EntitiesOperations { - createOrUpdate: (resourceGroupName: string, healthModelName: string, entityName: string, resource: Entity, options?: EntitiesCreateOrUpdateOptionalParams) => Promise; - delete: (resourceGroupName: string, healthModelName: string, entityName: string, options?: EntitiesDeleteOptionalParams) => Promise; + createOrUpdate: (resourceGroupName: string, healthModelName: string, entityName: string, resource: Entity, options?: EntitiesCreateOrUpdateOptionalParams) => PollerLike, Entity>; + delete: (resourceGroupName: string, healthModelName: string, entityName: string, options?: EntitiesDeleteOptionalParams) => PollerLike, void>; get: (resourceGroupName: string, healthModelName: string, entityName: string, options?: EntitiesGetOptionalParams) => Promise; + getHistory: (resourceGroupName: string, healthModelName: string, entityName: string, body: EntityHistoryRequest, options?: EntitiesGetHistoryOptionalParams) => Promise; + getSignalHistory: (resourceGroupName: string, healthModelName: string, entityName: string, body: SignalHistoryRequest, options?: EntitiesGetSignalHistoryOptionalParams) => Promise; + ingestHealthReport: (resourceGroupName: string, healthModelName: string, entityName: string, body: HealthReportRequest, options?: EntitiesIngestHealthReportOptionalParams) => Promise; listByHealthModel: (resourceGroupName: string, healthModelName: string, options?: EntitiesListByHealthModelOptionalParams) => PagedAsyncIterableIterator; } @@ -224,6 +300,18 @@ export interface EntityCoordinates { y: number; } +// @public +export interface EntityHistoryRequest { + endAt?: Date; + startAt?: Date; +} + +// @public +export interface EntityHistoryResponse { + entityName: string; + history: HealthStateTransition[]; +} + // @public export type EntityImpact = string; @@ -231,17 +319,15 @@ export type EntityImpact = string; export interface EntityProperties { alerts?: EntityAlerts; canvasPosition?: EntityCoordinates; - readonly deletionDate?: Date; readonly discoveredBy?: string; displayName?: string; healthObjective?: number; readonly healthState?: HealthState; icon?: IconDefinition; impact?: EntityImpact; - kind?: string; - labels?: Record; readonly provisioningState?: HealthModelProvisioningState; - signals?: SignalGroup; + signalGroups?: SignalGroups; + tags?: Record; } // @public @@ -266,9 +352,19 @@ export interface ErrorResponse { // @public export interface EvaluationRule { - degradedRule?: ThresholdRule; - dynamicDetectionRule?: DynamicDetectionRule; - unhealthyRule?: ThresholdRule; + degradedRule?: ThresholdRuleV2; + unhealthyRule: ThresholdRuleV2; +} + +// @public +export interface ExternalSignal extends SignalInstanceProperties { + evaluationRules?: EvaluationRule; + signalKind: "External"; +} + +// @public +export interface ExternalSignalGroup { + readonly signals?: ExternalSignal[]; } // @public @@ -279,8 +375,6 @@ export interface HealthModel extends TrackedResource { // @public export interface HealthModelProperties { - readonly dataplaneEndpoint?: string; - discovery?: ModelDiscoverySettings; readonly provisioningState?: HealthModelProvisioningState; } @@ -327,24 +421,44 @@ export interface HealthModelsUpdateOptionalParams extends OperationOptions { // @public export interface HealthModelUpdate { identity?: ManagedServiceIdentity; - properties?: HealthModelUpdateProperties; tags?: Record; } // @public -export interface HealthModelUpdateProperties { - discovery?: ModelDiscoverySettings; +export interface HealthReportEvaluationRule { + degradedRule?: ThresholdRuleV2; + unhealthyRule: ThresholdRuleV2; +} + +// @public +export interface HealthReportRequest { + additionalContext?: string; + evaluationRules?: HealthReportEvaluationRule; + expiresInMinutes?: number; + healthState: HealthState; + signalName: string; + value?: number; } // @public export type HealthState = string; +// @public +export interface HealthStateTransition { + newState: HealthState; + occurredAt: Date; + previousState: HealthState; + reason?: string; +} + // @public export interface IconDefinition { customData?: string; iconName: string; } +export { isRestError } + // @public export enum KnownActionType { Internal = "Internal" @@ -361,7 +475,6 @@ export enum KnownAlertSeverity { // @public export enum KnownAuthenticationKind { - // (undocumented) ManagedIdentity = "ManagedIdentity" } @@ -375,32 +488,33 @@ export enum KnownCreatedByType { // @public export enum KnownDependenciesAggregationType { - Thresholds = "Thresholds", + MaxNotHealthy = "MaxNotHealthy", + MinHealthy = "MinHealthy", WorstOf = "WorstOf" } // @public -export enum KnownDiscoveryRuleRecommendedSignalsBehavior { - Disabled = "Disabled", - Enabled = "Enabled" +export enum KnownDependenciesAggregationUnit { + Absolute = "Absolute", + Percentage = "Percentage" } // @public -export enum KnownDiscoveryRuleRelationshipDiscoveryBehavior { - Disabled = "Disabled", - Enabled = "Enabled" +export enum KnownDiscoveryRuleKind { + ApplicationInsightsTopology = "ApplicationInsightsTopology", + ResourceGraphQuery = "ResourceGraphQuery" } // @public -export enum KnownDynamicThresholdDirection { - GreaterOrLowerThan = "GreaterOrLowerThan", - GreaterThan = "GreaterThan", - LowerThan = "LowerThan" +export enum KnownDiscoveryRuleRecommendedSignalsBehavior { + Disabled = "Disabled", + Enabled = "Enabled" } // @public -export enum KnownDynamicThresholdModel { - AnomalyDetection = "AnomalyDetection" +export enum KnownDiscoveryRuleRelationshipDiscoveryBehavior { + Disabled = "Disabled", + Enabled = "Enabled" } // @public @@ -413,9 +527,7 @@ export enum KnownEntityImpact { // @public export enum KnownHealthModelProvisioningState { Canceled = "Canceled", - // (undocumented) Creating = "Creating", - // (undocumented) Deleting = "Deleting", Failed = "Failed", Succeeded = "Succeeded" @@ -425,8 +537,8 @@ export enum KnownHealthModelProvisioningState { export enum KnownHealthState { Degraded = "Degraded", Deleted = "Deleted", - Error = "Error", Healthy = "Healthy", + Unhealthy = "Unhealthy", Unknown = "Unknown" } @@ -440,17 +552,11 @@ export enum KnownManagedServiceIdentityType { // @public export enum KnownMetricAggregationType { - // (undocumented) Average = "Average", - // (undocumented) Count = "Count", - // (undocumented) Maximum = "Maximum", - // (undocumented) Minimum = "Minimum", - // (undocumented) None = "None", - // (undocumented) Total = "Total" } @@ -473,26 +579,26 @@ export enum KnownRefreshInterval { // @public export enum KnownSignalKind { - // (undocumented) AzureResourceMetric = "AzureResourceMetric", - // (undocumented) + ExternalSignal = "External", LogAnalyticsQuery = "LogAnalyticsQuery", - // (undocumented) PrometheusMetricsQuery = "PrometheusMetricsQuery" } // @public export enum KnownSignalOperator { - Equals = "Equals", - GreaterOrEquals = "GreaterOrEquals", + Equal = "Equal", GreaterThan = "GreaterThan", - LowerOrEquals = "LowerOrEquals", - LowerThan = "LowerThan" + GreaterThanOrEqual = "GreaterThanOrEqual", + LessThan = "LessThan", + LessThanOrEqual = "LessThanOrEqual", + NotEqual = "NotEqual" } // @public export enum KnownVersions { - V20250501Preview = "2025-05-01-preview" + V20250501Preview = "2025-05-01-preview", + V20260101Preview = "2026-01-01-preview" } // @public @@ -504,10 +610,22 @@ export interface LogAnalyticsQuerySignalDefinitionProperties extends SignalDefin } // @public -export interface LogAnalyticsSignalGroup { +export interface LogAnalyticsSignal extends SignalInstanceProperties { + dataUnit?: string; + displayName?: string; + evaluationRules?: EvaluationRule; + queryText?: string; + refreshInterval?: RefreshInterval; + signalKind: "LogAnalyticsQuery"; + timeGrain?: string; + valueColumnName?: string; +} + +// @public +export interface LogAnalyticsSignals { authenticationSetting: string; logAnalyticsWorkspaceResourceId: string; - signalAssignments?: SignalAssignment[]; + signals?: LogAnalyticsSignal[]; } // @public @@ -521,7 +639,7 @@ export interface ManagedServiceIdentity { readonly principalId?: string; readonly tenantId?: string; type: ManagedServiceIdentityType; - userAssignedIdentities?: Record; + userAssignedIdentities?: Record; } // @public @@ -530,13 +648,6 @@ export type ManagedServiceIdentityType = string; // @public export type MetricAggregationType = string; -// @public -export interface ModelDiscoverySettings { - addRecommendedSignals: DiscoveryRuleRecommendedSignalsBehavior; - identity?: string; - scope: string; -} - // @public export interface Operation { readonly actionType?: ActionType; @@ -578,6 +689,17 @@ export interface PageSettings { continuationToken?: string; } +// @public +export interface PrometheusMetricsSignal extends SignalInstanceProperties { + dataUnit?: string; + displayName?: string; + evaluationRules?: EvaluationRule; + queryText?: string; + refreshInterval?: RefreshInterval; + signalKind: "PrometheusMetricsQuery"; + timeGrain?: string; +} + // @public export interface PrometheusMetricsSignalDefinitionProperties extends SignalDefinitionProperties { queryText: string; @@ -600,20 +722,21 @@ export interface Relationship extends ProxyResource { // @public export interface RelationshipProperties { childEntityName: string; - readonly deletionDate?: Date; readonly discoveredBy?: string; displayName?: string; - labels?: Record; parentEntityName: string; readonly provisioningState?: HealthModelProvisioningState; + tags?: Record; } // @public export interface RelationshipsCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public export interface RelationshipsDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public @@ -627,8 +750,8 @@ export interface RelationshipsListByHealthModelOptionalParams extends OperationO // @public export interface RelationshipsOperations { - createOrUpdate: (resourceGroupName: string, healthModelName: string, relationshipName: string, resource: Relationship, options?: RelationshipsCreateOrUpdateOptionalParams) => Promise; - delete: (resourceGroupName: string, healthModelName: string, relationshipName: string, options?: RelationshipsDeleteOptionalParams) => Promise; + createOrUpdate: (resourceGroupName: string, healthModelName: string, relationshipName: string, resource: Relationship, options?: RelationshipsCreateOrUpdateOptionalParams) => PollerLike, Relationship>; + delete: (resourceGroupName: string, healthModelName: string, relationshipName: string, options?: RelationshipsDeleteOptionalParams) => PollerLike, void>; get: (resourceGroupName: string, healthModelName: string, relationshipName: string, options?: RelationshipsGetOptionalParams) => Promise; listByHealthModel: (resourceGroupName: string, healthModelName: string, options?: RelationshipsListByHealthModelOptionalParams) => PagedAsyncIterableIterator; } @@ -641,6 +764,12 @@ export interface Resource { readonly type?: string; } +// @public +export interface ResourceGraphQuerySpecification extends DiscoveryRuleSpecification { + kind: "ResourceGraphQuery"; + resourceGraphQuery: string; +} + // @public export interface ResourceMetricSignalDefinitionProperties extends SignalDefinitionProperties { aggregationType: MetricAggregationType; @@ -652,6 +781,8 @@ export interface ResourceMetricSignalDefinitionProperties extends SignalDefiniti timeGrain: string; } +export { RestError } + // @public export function restorePoller(client: CloudHealthClient, serializedState: string, sourceOperation: (...args: any[]) => PollerLike, TResult>, options?: RestorePollerOptions): PollerLike, TResult>; @@ -662,11 +793,6 @@ export interface RestorePollerOptions; readonly provisioningState?: HealthModelProvisioningState; refreshInterval?: RefreshInterval; signalKind: SignalKind; + tags?: Record; } // @public @@ -689,10 +814,12 @@ export type SignalDefinitionPropertiesUnion = ResourceMetricSignalDefinitionProp // @public export interface SignalDefinitionsCreateOrUpdateOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public export interface SignalDefinitionsDeleteOptionalParams extends OperationOptions { + updateIntervalInMs?: number; } // @public @@ -706,26 +833,68 @@ export interface SignalDefinitionsListByHealthModelOptionalParams extends Operat // @public export interface SignalDefinitionsOperations { - createOrUpdate: (resourceGroupName: string, healthModelName: string, signalDefinitionName: string, resource: SignalDefinition, options?: SignalDefinitionsCreateOrUpdateOptionalParams) => Promise; - delete: (resourceGroupName: string, healthModelName: string, signalDefinitionName: string, options?: SignalDefinitionsDeleteOptionalParams) => Promise; + createOrUpdate: (resourceGroupName: string, healthModelName: string, signalDefinitionName: string, resource: SignalDefinition, options?: SignalDefinitionsCreateOrUpdateOptionalParams) => PollerLike, SignalDefinition>; + delete: (resourceGroupName: string, healthModelName: string, signalDefinitionName: string, options?: SignalDefinitionsDeleteOptionalParams) => PollerLike, void>; get: (resourceGroupName: string, healthModelName: string, signalDefinitionName: string, options?: SignalDefinitionsGetOptionalParams) => Promise; listByHealthModel: (resourceGroupName: string, healthModelName: string, options?: SignalDefinitionsListByHealthModelOptionalParams) => PagedAsyncIterableIterator; } // @public -export interface SignalGroup { - azureLogAnalytics?: LogAnalyticsSignalGroup; - azureMonitorWorkspace?: AzureMonitorWorkspaceSignalGroup; - azureResource?: AzureResourceSignalGroup; - dependencies?: DependenciesSignalGroup; +export interface SignalGroups { + azureLogAnalytics?: LogAnalyticsSignals; + azureMonitorWorkspace?: AzureMonitorWorkspaceSignals; + azureResource?: AzureResourceSignals; + dependencies?: DependenciesSignalGroupV2; + readonly external?: ExternalSignalGroup; } +// @public +export interface SignalHistoryDataPoint { + additionalContext?: string; + healthState: HealthState; + occurredAt: Date; + value?: number; +} + +// @public +export interface SignalHistoryRequest { + endAt?: Date; + signalName: string; + startAt?: Date; +} + +// @public +export interface SignalHistoryResponse { + entityName: string; + history: SignalHistoryDataPoint[]; + signalName: string; +} + +// @public +export interface SignalInstanceProperties { + name: string; + signalDefinitionName?: string; + signalKind: SignalKind; + readonly status?: SignalStatus; +} + +// @public +export type SignalInstancePropertiesUnion = AzureResourceSignal | LogAnalyticsSignal | PrometheusMetricsSignal | ExternalSignal | SignalInstanceProperties; + // @public export type SignalKind = string; // @public export type SignalOperator = string; +// @public +export interface SignalStatus { + readonly error?: string; + readonly healthState?: HealthState; + readonly reportedAt?: Date; + readonly value?: number; +} + // @public export interface SystemData { createdAt?: Date; @@ -737,9 +906,9 @@ export interface SystemData { } // @public -export interface ThresholdRule { +export interface ThresholdRuleV2 { operator: SignalOperator; - threshold: string; + threshold: number; } // @public diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsCreateOrUpdateSample.ts index 144a66f55145..0495a5561ae6 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsCreateOrUpdateSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to create a AuthenticationSetting * * @summary create a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_CreateOrUpdate.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function authenticationSettingsCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsDeleteSample.ts index 0c94eb7a4c46..0b0287364071 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsDeleteSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to delete a AuthenticationSetting * * @summary delete a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Delete.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Delete.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function authenticationSettingsDelete(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsGetSample.ts index 7e4ac5bf19ec..588b601af928 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsGetSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to get a AuthenticationSetting * * @summary get a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Get.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Get.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function authenticationSettingsGet(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsListByHealthModelSample.ts index 81d0a9af6c53..3efdd30ed883 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/authenticationSettingsListByHealthModelSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list AuthenticationSetting resources by HealthModel * * @summary list AuthenticationSetting resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_ListByHealthModel.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function authenticationSettingsListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesCreateOrUpdateSample.ts index 5ba8d5a36e0d..f418f3e987d2 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesCreateOrUpdateSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to create a DiscoveryRule * * @summary create a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_CreateOrUpdate.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function discoveryRulesCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; @@ -21,13 +20,15 @@ async function discoveryRulesCreateOrUpdate(): Promise { "myDiscoveryRule", { properties: { - entityName: "", authenticationSetting: "authSetting1", displayName: "myDisplayName", discoverRelationships: "Enabled", addRecommendedSignals: "Enabled", - resourceGraphQuery: - "resources | where subscriptionId == '7ddfffd7-9b32-40df-1234-828cbd55d6f4' | where resourceGroup == 'my-rg'", + specification: { + kind: "ResourceGraphQuery", + resourceGraphQuery: + "resources | where subscriptionId == '7ddfffd7-9b32-40df-1234-828cbd55d6f4' | where resourceGroup == 'my-rg'", + }, }, }, ); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesDeleteSample.ts index f5110bc98ec2..922913e6ff6a 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesDeleteSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to delete a DiscoveryRule * * @summary delete a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Delete.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Delete.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function discoveryRulesDelete(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesGetSample.ts index d6db99939a48..2aa5b7efa057 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesGetSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to get a DiscoveryRule * * @summary get a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Get.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Get.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function discoveryRulesGet(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesListByHealthModelSample.ts index 56f261569b7b..7d9c7b94afbb 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/discoveryRulesListByHealthModelSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list DiscoveryRule resources by HealthModel * * @summary list DiscoveryRule resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_ListByHealthModel.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function discoveryRulesListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "00000000-0000-0000-0000-000000000000"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesCreateOrUpdateSample.ts index d7bce3ef1f73..5d537e9d1198 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesCreateOrUpdateSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to create a Entity * * @summary create a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/Entities_CreateOrUpdate.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function entitiesCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; @@ -23,40 +22,85 @@ async function entitiesCreateOrUpdate(): Promise { properties: { displayName: "My entity", canvasPosition: { x: 14, y: 13 }, - icon: { - iconName: "Custom", - customData: "rcitntvapruccrhtxmkqjphbxunkz", - }, + icon: { iconName: "Custom", customData: "rcitntvapruccrhtxmkqjphbxunkz" }, healthObjective: 62, impact: "Standard", - labels: { key1376: "ixfvzsfnpvkkbrce" }, - signals: { + tags: { key1376: "sample tag" }, + signalGroups: { azureResource: { - signalAssignments: [{ signalDefinitions: ["sigdef1"] }], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + authenticationSetting: "auth123", azureResourceId: "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", - }, - azureLogAnalytics: { - signalAssignments: [ + azureResourceKind: "functionapp", + signals: [ { - signalDefinitions: ["B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX"], + name: "uniqueSignalName1", + signalDefinitionName: "sigdef1", + signalKind: "AzureResourceMetric", + metricNamespace: "microsoft.compute/virtualMachines", + metricName: "cpuusage", + aggregationType: "None", + dimension: "nodename", + dimensionFilter: "node1", + displayName: "CPU usage", + refreshInterval: "PT1M", + timeGrain: "PT1M", + dataUnit: "Count", + evaluationRules: { + degradedRule: { operator: "LowerThan", threshold: 10 }, + unhealthyRule: { operator: "LowerThan", threshold: 1 }, + }, }, ], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + }, + azureLogAnalytics: { + authenticationSetting: "auth123", logAnalyticsWorkspaceResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.OperationalInsights/workspaces/myworkspace", + signals: [ + { + name: "uniqueSignalName2", + signalKind: "LogAnalyticsQuery", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 1 }, + unhealthyRule: { operator: "GreaterThan", threshold: 5 }, + }, + refreshInterval: "PT1M", + queryText: "print 1", + timeGrain: "PT30M", + valueColumnName: "result", + displayName: "Test LA signal", + dataUnit: "my unit", + }, + ], }, azureMonitorWorkspace: { - signalAssignments: [ - { signalDefinitions: ["sigdef2"] }, - { signalDefinitions: ["sigdef3"] }, - ], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + authenticationSetting: "auth123", azureMonitorWorkspaceResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.OperationalInsights/workspaces/myworkspace", + signals: [ + { + name: "pod-cpu-usage", + signalDefinitionName: "PodCpuUsageDefinition", + signalKind: "PrometheusMetricsQuery", + displayName: "Pod CPU Usage", + refreshInterval: "PT1M", + dataUnit: "Percent", + queryText: 'rate(container_cpu_usage_seconds_total{pod=~"my-app-.*"}[5m]) * 100', + timeGrain: "PT5M", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 70 }, + unhealthyRule: { operator: "GreaterThan", threshold: 90 }, + }, + }, + ], + }, + dependencies: { + aggregationType: "MinHealthy", + unit: "Percentage", + degradedThreshold: 80, + unhealthyThreshold: 50, }, - dependencies: { aggregationType: "WorstOf" }, }, alerts: { unhealthy: { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesDeleteSample.ts index f1d3db937c13..71f5975fc3b6 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesDeleteSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to delete a Entity * * @summary delete a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_Delete.json + * x-ms-original-file: 2026-01-01-preview/Entities_Delete.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function entitiesDelete(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetHistorySample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetHistorySample.ts new file mode 100644 index 000000000000..9e35c150bd04 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetHistorySample.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to retrieve the health state transition history for an entity + * + * @summary retrieve the health state transition history for an entity + * x-ms-original-file: 2026-01-01-preview/Entities_GetHistory.json + */ +async function entitiesGetHistory(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + const result = await client.entities.getHistory("rgopenapi", "myHealthModel", "entity1", { + startAt: new Date("2025-12-11T10:00:00Z"), + endAt: new Date("2025-12-12T10:00:00Z"), + }); + console.log(result); +} + +async function main(): Promise { + await entitiesGetHistory(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetSample.ts index d5e405fb045c..9f4593108f3c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to get a Entity * * @summary get a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_Get.json + * x-ms-original-file: 2026-01-01-preview/Entities_Get.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function entitiesGet(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetSignalHistorySample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetSignalHistorySample.ts new file mode 100644 index 000000000000..9037bf5d2c7f --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesGetSignalHistorySample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to retrieve the time series history for a signal on an entity + * + * @summary retrieve the time series history for a signal on an entity + * x-ms-original-file: 2026-01-01-preview/Entities_GetSignalHistory.json + */ +async function entitiesGetSignalHistory(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + const result = await client.entities.getSignalHistory("rgopenapi", "myHealthModel", "entity1", { + signalName: "uniqueSignalName1", + startAt: new Date("2025-12-11T10:00:00Z"), + endAt: new Date("2025-12-12T10:00:00Z"), + }); + console.log(result); +} + +async function main(): Promise { + await entitiesGetSignalHistory(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesIngestHealthReportSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesIngestHealthReportSample.ts new file mode 100644 index 000000000000..0e1f7efb5932 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesIngestHealthReportSample.ts @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to ingest a health report for a specific signal on an entity (the entity must already exist) + * + * @summary ingest a health report for a specific signal on an entity (the entity must already exist) + * x-ms-original-file: 2026-01-01-preview/Entities_IngestHealthReport.json + */ +async function entitiesIngestHealthReport(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + await client.entities.ingestHealthReport("rgopenapi", "myHealthModel", "entity1", { + signalName: "uniqueSignalName1", + value: 85.5, + healthState: "Degraded", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 70 }, + unhealthyRule: { operator: "GreaterThan", threshold: 90 }, + }, + expiresInMinutes: 60, + additionalContext: "CPU usage elevated due to batch processing job", + }); +} + +async function main(): Promise { + await entitiesIngestHealthReport(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesListByHealthModelSample.ts index 561f39df16ae..dfaff0bdd73f 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/entitiesListByHealthModelSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list Entity resources by HealthModel * * @summary list Entity resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/Entities_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/Entities_ListByHealthModel.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function entitiesListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsCreateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsCreateSample.ts index 59c119e0ea19..251f3558e982 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsCreateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsCreateSample.ts @@ -1,28 +1,21 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to create a HealthModel * * @summary create a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Create.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Create.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function healthModelsCreate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; const client = new CloudHealthClient(credential, subscriptionId); const result = await client.healthModels.create("rgopenapi", "model1", { - properties: { - discovery: { - scope: "/providers/Microsoft.Management/serviceGroups/myServiceGroup", - identity: "SystemAssigned", - addRecommendedSignals: "Enabled", - }, - }, + properties: {}, identity: { type: "SystemAssigned, UserAssigned", userAssignedIdentities: { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsDeleteSample.ts index cfb6ed54d177..dce7523d4ed7 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsDeleteSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to delete a HealthModel * * @summary delete a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Delete.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Delete.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function healthModelsDelete(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsGetSample.ts index f7bfd900e95e..639e8fdbc255 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsGetSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to get a HealthModel * * @summary get a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Get.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Get.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function healthModelsGet(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListByResourceGroupSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListByResourceGroupSample.ts index d19efc31b402..0e54d073056d 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListByResourceGroupSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListByResourceGroupSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list HealthModel resources by resource group * * @summary list HealthModel resources by resource group - * x-ms-original-file: 2025-05-01-preview/HealthModels_ListByResourceGroup.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_ListByResourceGroup.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function healthModelsListByResourceGroup(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListBySubscriptionSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListBySubscriptionSample.ts index f995650bf535..4c5e04e34cec 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListBySubscriptionSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsListBySubscriptionSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list HealthModel resources by subscription ID * * @summary list HealthModel resources by subscription ID - * x-ms-original-file: 2025-05-01-preview/HealthModels_ListBySubscription.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_ListBySubscription.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function healthModelsListBySubscription(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsUpdateSample.ts index cd8ab4e1de08..a8f6c0d507b8 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/healthModelsUpdateSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to update a HealthModel * * @summary update a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Update.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Update.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function healthModelsUpdate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/operationsListSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/operationsListSample.ts index a5887fd51855..33439cd96066 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/operationsListSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/operationsListSample.ts @@ -1,19 +1,18 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list the operations for the provider * * @summary list the operations for the provider - * x-ms-original-file: 2025-05-01-preview/Operations_List.json + * x-ms-original-file: 2026-01-01-preview/Operations_List.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function operationsList(): Promise { const credential = new DefaultAzureCredential(); - const subscriptionId = "00000000-0000-0000-0000-00000000000"; + const subscriptionId = "00000000-0000-0000-0000-000000000000"; const client = new CloudHealthClient(credential, subscriptionId); const resArray = new Array(); for await (const item of client.operations.list()) { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsCreateOrUpdateSample.ts index 064025f73d5d..a55b82236829 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsCreateOrUpdateSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to create a Relationship * * @summary create a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/Relationships_CreateOrUpdate.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function relationshipsCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; @@ -20,7 +19,7 @@ async function relationshipsCreateOrUpdate(): Promise { displayName: "My relationship", parentEntityName: "Entity1", childEntityName: "Entity2", - labels: { key9681: "ixfvzsfnpvkkbrce" }, + tags: { key9681: "ixfvzsfnpvkkbrce" }, }, }); console.log(result); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsDeleteSample.ts index 07083bcab2bf..ae89a9510b33 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsDeleteSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to delete a Relationship * * @summary delete a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_Delete.json + * x-ms-original-file: 2026-01-01-preview/Relationships_Delete.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function relationshipsDelete(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsGetSample.ts index a7402c70c94c..003eaa9fa1bf 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsGetSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to get a Relationship * * @summary get a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_Get.json + * x-ms-original-file: 2026-01-01-preview/Relationships_Get.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function relationshipsGet(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsListByHealthModelSample.ts index 8c7c615e19f1..59c9d16346f9 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/relationshipsListByHealthModelSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list Relationship resources by HealthModel * * @summary list Relationship resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/Relationships_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/Relationships_ListByHealthModel.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function relationshipsListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsCreateOrUpdateSample.ts index 10dda9d4121d..8f18320b1dd0 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsCreateOrUpdateSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to create a SignalDefinition * * @summary create a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_CreateOrUpdate.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function signalDefinitionsCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; @@ -29,12 +28,12 @@ async function signalDefinitionsCreateOrUpdate(): Promise { displayName: "cpu usage", signalKind: "AzureResourceMetric", refreshInterval: "PT1M", - labels: { key4788: "ixfvzsfnpvkkbrce" }, + tags: { key4788: "ixfvzsfnpvkkbrce" }, timeGrain: "PT1M", dataUnit: "byte", evaluationRules: { - degradedRule: { operator: "LowerThan", threshold: "65" }, - unhealthyRule: { operator: "LowerThan", threshold: "60" }, + degradedRule: { operator: "LowerThan", threshold: 65 }, + unhealthyRule: { operator: "LowerThan", threshold: 60 }, }, }, }, diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsDeleteSample.ts index 2e82ef86dc03..db67d82eecf8 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsDeleteSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to delete a SignalDefinition * * @summary delete a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Delete.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Delete.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function signalDefinitionsDelete(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsGetSample.ts index 6d543153d1ae..11c2b755738c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsGetSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to get a SignalDefinition * * @summary get a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Get.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Get.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function signalDefinitionsGet(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsListByHealthModelSample.ts index 473434ebbca8..1002c3aa8e2c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples-dev/signalDefinitionsListByHealthModelSample.ts @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + /** * This sample demonstrates how to list SignalDefinition resources by HealthModel * * @summary list SignalDefinition resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_ListByHealthModel.json */ - -import { CloudHealthClient } from "@azure/arm-cloudhealth"; -import { DefaultAzureCredential } from "@azure/identity"; - async function signalDefinitionsListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/README.md b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/README.md index ec6f4dcb5443..774baec25724 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/README.md +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/README.md @@ -2,35 +2,38 @@ These sample programs show how to use the JavaScript client libraries for @azure/arm-cloudhealth in some common scenarios. -| **File Name** | **Description** | -| ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| [authenticationSettingsCreateOrUpdateSample.js][authenticationsettingscreateorupdatesample] | create a AuthenticationSetting x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_CreateOrUpdate.json | -| [authenticationSettingsDeleteSample.js][authenticationsettingsdeletesample] | delete a AuthenticationSetting x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Delete.json | -| [authenticationSettingsGetSample.js][authenticationsettingsgetsample] | get a AuthenticationSetting x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Get.json | -| [authenticationSettingsListByHealthModelSample.js][authenticationsettingslistbyhealthmodelsample] | list AuthenticationSetting resources by HealthModel x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_ListByHealthModel.json | -| [discoveryRulesCreateOrUpdateSample.js][discoveryrulescreateorupdatesample] | create a DiscoveryRule x-ms-original-file: 2025-05-01-preview/DiscoveryRules_CreateOrUpdate.json | -| [discoveryRulesDeleteSample.js][discoveryrulesdeletesample] | delete a DiscoveryRule x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Delete.json | -| [discoveryRulesGetSample.js][discoveryrulesgetsample] | get a DiscoveryRule x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Get.json | -| [discoveryRulesListByHealthModelSample.js][discoveryruleslistbyhealthmodelsample] | list DiscoveryRule resources by HealthModel x-ms-original-file: 2025-05-01-preview/DiscoveryRules_ListByHealthModel.json | -| [entitiesCreateOrUpdateSample.js][entitiescreateorupdatesample] | create a Entity x-ms-original-file: 2025-05-01-preview/Entities_CreateOrUpdate.json | -| [entitiesDeleteSample.js][entitiesdeletesample] | delete a Entity x-ms-original-file: 2025-05-01-preview/Entities_Delete.json | -| [entitiesGetSample.js][entitiesgetsample] | get a Entity x-ms-original-file: 2025-05-01-preview/Entities_Get.json | -| [entitiesListByHealthModelSample.js][entitieslistbyhealthmodelsample] | list Entity resources by HealthModel x-ms-original-file: 2025-05-01-preview/Entities_ListByHealthModel.json | -| [healthModelsCreateSample.js][healthmodelscreatesample] | create a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Create.json | -| [healthModelsDeleteSample.js][healthmodelsdeletesample] | delete a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Delete.json | -| [healthModelsGetSample.js][healthmodelsgetsample] | get a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Get.json | -| [healthModelsListByResourceGroupSample.js][healthmodelslistbyresourcegroupsample] | list HealthModel resources by resource group x-ms-original-file: 2025-05-01-preview/HealthModels_ListByResourceGroup.json | -| [healthModelsListBySubscriptionSample.js][healthmodelslistbysubscriptionsample] | list HealthModel resources by subscription ID x-ms-original-file: 2025-05-01-preview/HealthModels_ListBySubscription.json | -| [healthModelsUpdateSample.js][healthmodelsupdatesample] | update a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Update.json | -| [operationsListSample.js][operationslistsample] | list the operations for the provider x-ms-original-file: 2025-05-01-preview/Operations_List.json | -| [relationshipsCreateOrUpdateSample.js][relationshipscreateorupdatesample] | create a Relationship x-ms-original-file: 2025-05-01-preview/Relationships_CreateOrUpdate.json | -| [relationshipsDeleteSample.js][relationshipsdeletesample] | delete a Relationship x-ms-original-file: 2025-05-01-preview/Relationships_Delete.json | -| [relationshipsGetSample.js][relationshipsgetsample] | get a Relationship x-ms-original-file: 2025-05-01-preview/Relationships_Get.json | -| [relationshipsListByHealthModelSample.js][relationshipslistbyhealthmodelsample] | list Relationship resources by HealthModel x-ms-original-file: 2025-05-01-preview/Relationships_ListByHealthModel.json | -| [signalDefinitionsCreateOrUpdateSample.js][signaldefinitionscreateorupdatesample] | create a SignalDefinition x-ms-original-file: 2025-05-01-preview/SignalDefinitions_CreateOrUpdate.json | -| [signalDefinitionsDeleteSample.js][signaldefinitionsdeletesample] | delete a SignalDefinition x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Delete.json | -| [signalDefinitionsGetSample.js][signaldefinitionsgetsample] | get a SignalDefinition x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Get.json | -| [signalDefinitionsListByHealthModelSample.js][signaldefinitionslistbyhealthmodelsample] | list SignalDefinition resources by HealthModel x-ms-original-file: 2025-05-01-preview/SignalDefinitions_ListByHealthModel.json | +| **File Name** | **Description** | +| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [authenticationSettingsCreateOrUpdateSample.js][authenticationsettingscreateorupdatesample] | create a AuthenticationSetting x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_CreateOrUpdate.json | +| [authenticationSettingsDeleteSample.js][authenticationsettingsdeletesample] | delete a AuthenticationSetting x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Delete.json | +| [authenticationSettingsGetSample.js][authenticationsettingsgetsample] | get a AuthenticationSetting x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Get.json | +| [authenticationSettingsListByHealthModelSample.js][authenticationsettingslistbyhealthmodelsample] | list AuthenticationSetting resources by HealthModel x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_ListByHealthModel.json | +| [discoveryRulesCreateOrUpdateSample.js][discoveryrulescreateorupdatesample] | create a DiscoveryRule x-ms-original-file: 2026-01-01-preview/DiscoveryRules_CreateOrUpdate.json | +| [discoveryRulesDeleteSample.js][discoveryrulesdeletesample] | delete a DiscoveryRule x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Delete.json | +| [discoveryRulesGetSample.js][discoveryrulesgetsample] | get a DiscoveryRule x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Get.json | +| [discoveryRulesListByHealthModelSample.js][discoveryruleslistbyhealthmodelsample] | list DiscoveryRule resources by HealthModel x-ms-original-file: 2026-01-01-preview/DiscoveryRules_ListByHealthModel.json | +| [entitiesCreateOrUpdateSample.js][entitiescreateorupdatesample] | create a Entity x-ms-original-file: 2026-01-01-preview/Entities_CreateOrUpdate.json | +| [entitiesDeleteSample.js][entitiesdeletesample] | delete a Entity x-ms-original-file: 2026-01-01-preview/Entities_Delete.json | +| [entitiesGetHistorySample.js][entitiesgethistorysample] | retrieve the health state transition history for an entity x-ms-original-file: 2026-01-01-preview/Entities_GetHistory.json | +| [entitiesGetSample.js][entitiesgetsample] | get a Entity x-ms-original-file: 2026-01-01-preview/Entities_Get.json | +| [entitiesGetSignalHistorySample.js][entitiesgetsignalhistorysample] | retrieve the time series history for a signal on an entity x-ms-original-file: 2026-01-01-preview/Entities_GetSignalHistory.json | +| [entitiesIngestHealthReportSample.js][entitiesingesthealthreportsample] | ingest a health report for a specific signal on an entity (the entity must already exist) x-ms-original-file: 2026-01-01-preview/Entities_IngestHealthReport.json | +| [entitiesListByHealthModelSample.js][entitieslistbyhealthmodelsample] | list Entity resources by HealthModel x-ms-original-file: 2026-01-01-preview/Entities_ListByHealthModel.json | +| [healthModelsCreateSample.js][healthmodelscreatesample] | create a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Create.json | +| [healthModelsDeleteSample.js][healthmodelsdeletesample] | delete a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Delete.json | +| [healthModelsGetSample.js][healthmodelsgetsample] | get a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Get.json | +| [healthModelsListByResourceGroupSample.js][healthmodelslistbyresourcegroupsample] | list HealthModel resources by resource group x-ms-original-file: 2026-01-01-preview/HealthModels_ListByResourceGroup.json | +| [healthModelsListBySubscriptionSample.js][healthmodelslistbysubscriptionsample] | list HealthModel resources by subscription ID x-ms-original-file: 2026-01-01-preview/HealthModels_ListBySubscription.json | +| [healthModelsUpdateSample.js][healthmodelsupdatesample] | update a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Update.json | +| [operationsListSample.js][operationslistsample] | list the operations for the provider x-ms-original-file: 2026-01-01-preview/Operations_List.json | +| [relationshipsCreateOrUpdateSample.js][relationshipscreateorupdatesample] | create a Relationship x-ms-original-file: 2026-01-01-preview/Relationships_CreateOrUpdate.json | +| [relationshipsDeleteSample.js][relationshipsdeletesample] | delete a Relationship x-ms-original-file: 2026-01-01-preview/Relationships_Delete.json | +| [relationshipsGetSample.js][relationshipsgetsample] | get a Relationship x-ms-original-file: 2026-01-01-preview/Relationships_Get.json | +| [relationshipsListByHealthModelSample.js][relationshipslistbyhealthmodelsample] | list Relationship resources by HealthModel x-ms-original-file: 2026-01-01-preview/Relationships_ListByHealthModel.json | +| [signalDefinitionsCreateOrUpdateSample.js][signaldefinitionscreateorupdatesample] | create a SignalDefinition x-ms-original-file: 2026-01-01-preview/SignalDefinitions_CreateOrUpdate.json | +| [signalDefinitionsDeleteSample.js][signaldefinitionsdeletesample] | delete a SignalDefinition x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Delete.json | +| [signalDefinitionsGetSample.js][signaldefinitionsgetsample] | get a SignalDefinition x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Get.json | +| [signalDefinitionsListByHealthModelSample.js][signaldefinitionslistbyhealthmodelsample] | list SignalDefinition resources by HealthModel x-ms-original-file: 2026-01-01-preview/SignalDefinitions_ListByHealthModel.json | ## Prerequisites @@ -60,10 +63,10 @@ npm install node authenticationSettingsCreateOrUpdateSample.js ``` -Alternatively, run a single sample with the correct environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): +Alternatively, run a single sample with the required environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): ```bash -cross-env node authenticationSettingsCreateOrUpdateSample.js +node authenticationSettingsCreateOrUpdateSample.js ``` ## Next Steps @@ -80,7 +83,10 @@ Take a look at our [API Documentation][apiref] for more information about the AP [discoveryruleslistbyhealthmodelsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesListByHealthModelSample.js [entitiescreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesCreateOrUpdateSample.js [entitiesdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesDeleteSample.js +[entitiesgethistorysample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetHistorySample.js [entitiesgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSample.js +[entitiesgetsignalhistorysample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSignalHistorySample.js +[entitiesingesthealthreportsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesIngestHealthReportSample.js [entitieslistbyhealthmodelsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesListByHealthModelSample.js [healthmodelscreatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsCreateSample.js [healthmodelsdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsDeleteSample.js diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsCreateOrUpdateSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsCreateOrUpdateSample.js index 151175b1c806..4131f8b97ded 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsCreateOrUpdateSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsCreateOrUpdateSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to create a AuthenticationSetting * * @summary create a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_CreateOrUpdate.json */ async function authenticationSettingsCreateOrUpdate() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsDeleteSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsDeleteSample.js index da2428fec4f1..75320d99fad7 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsDeleteSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsDeleteSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to delete a AuthenticationSetting * * @summary delete a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Delete.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Delete.json */ async function authenticationSettingsDelete() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsGetSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsGetSample.js index 3e355d8612c3..7e9acabef365 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsGetSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsGetSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to get a AuthenticationSetting * * @summary get a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Get.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Get.json */ async function authenticationSettingsGet() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsListByHealthModelSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsListByHealthModelSample.js index 4b1ad70bd190..e8f4f6d6592c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsListByHealthModelSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/authenticationSettingsListByHealthModelSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list AuthenticationSetting resources by HealthModel * * @summary list AuthenticationSetting resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_ListByHealthModel.json */ async function authenticationSettingsListByHealthModel() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesCreateOrUpdateSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesCreateOrUpdateSample.js index 0c1901dd93e6..4ff1464ace5a 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesCreateOrUpdateSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesCreateOrUpdateSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to create a DiscoveryRule * * @summary create a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_CreateOrUpdate.json */ async function discoveryRulesCreateOrUpdate() { const credential = new DefaultAzureCredential(); @@ -20,13 +20,15 @@ async function discoveryRulesCreateOrUpdate() { "myDiscoveryRule", { properties: { - entityName: "", authenticationSetting: "authSetting1", displayName: "myDisplayName", discoverRelationships: "Enabled", addRecommendedSignals: "Enabled", - resourceGraphQuery: - "resources | where subscriptionId == '7ddfffd7-9b32-40df-1234-828cbd55d6f4' | where resourceGroup == 'my-rg'", + specification: { + kind: "ResourceGraphQuery", + resourceGraphQuery: + "resources | where subscriptionId == '7ddfffd7-9b32-40df-1234-828cbd55d6f4' | where resourceGroup == 'my-rg'", + }, }, }, ); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesDeleteSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesDeleteSample.js index bb6806639459..6861c896c768 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesDeleteSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesDeleteSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to delete a DiscoveryRule * * @summary delete a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Delete.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Delete.json */ async function discoveryRulesDelete() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesGetSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesGetSample.js index 4a4f4f068b21..84acb772c7cf 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesGetSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesGetSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to get a DiscoveryRule * * @summary get a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Get.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Get.json */ async function discoveryRulesGet() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesListByHealthModelSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesListByHealthModelSample.js index 672efc2fe0f0..d07bec9709c4 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesListByHealthModelSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/discoveryRulesListByHealthModelSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list DiscoveryRule resources by HealthModel * * @summary list DiscoveryRule resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_ListByHealthModel.json */ async function discoveryRulesListByHealthModel() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesCreateOrUpdateSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesCreateOrUpdateSample.js index ac1a2d0fc2d7..814948bcca40 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesCreateOrUpdateSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesCreateOrUpdateSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to create a Entity * * @summary create a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/Entities_CreateOrUpdate.json */ async function entitiesCreateOrUpdate() { const credential = new DefaultAzureCredential(); @@ -22,40 +22,85 @@ async function entitiesCreateOrUpdate() { properties: { displayName: "My entity", canvasPosition: { x: 14, y: 13 }, - icon: { - iconName: "Custom", - customData: "rcitntvapruccrhtxmkqjphbxunkz", - }, + icon: { iconName: "Custom", customData: "rcitntvapruccrhtxmkqjphbxunkz" }, healthObjective: 62, impact: "Standard", - labels: { key1376: "ixfvzsfnpvkkbrce" }, - signals: { + tags: { key1376: "sample tag" }, + signalGroups: { azureResource: { - signalAssignments: [{ signalDefinitions: ["sigdef1"] }], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + authenticationSetting: "auth123", azureResourceId: "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", - }, - azureLogAnalytics: { - signalAssignments: [ + azureResourceKind: "functionapp", + signals: [ { - signalDefinitions: ["B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX"], + name: "uniqueSignalName1", + signalDefinitionName: "sigdef1", + signalKind: "AzureResourceMetric", + metricNamespace: "microsoft.compute/virtualMachines", + metricName: "cpuusage", + aggregationType: "None", + dimension: "nodename", + dimensionFilter: "node1", + displayName: "CPU usage", + refreshInterval: "PT1M", + timeGrain: "PT1M", + dataUnit: "Count", + evaluationRules: { + degradedRule: { operator: "LowerThan", threshold: 10 }, + unhealthyRule: { operator: "LowerThan", threshold: 1 }, + }, }, ], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + }, + azureLogAnalytics: { + authenticationSetting: "auth123", logAnalyticsWorkspaceResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.OperationalInsights/workspaces/myworkspace", + signals: [ + { + name: "uniqueSignalName2", + signalKind: "LogAnalyticsQuery", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 1 }, + unhealthyRule: { operator: "GreaterThan", threshold: 5 }, + }, + refreshInterval: "PT1M", + queryText: "print 1", + timeGrain: "PT30M", + valueColumnName: "result", + displayName: "Test LA signal", + dataUnit: "my unit", + }, + ], }, azureMonitorWorkspace: { - signalAssignments: [ - { signalDefinitions: ["sigdef2"] }, - { signalDefinitions: ["sigdef3"] }, - ], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + authenticationSetting: "auth123", azureMonitorWorkspaceResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.OperationalInsights/workspaces/myworkspace", + signals: [ + { + name: "pod-cpu-usage", + signalDefinitionName: "PodCpuUsageDefinition", + signalKind: "PrometheusMetricsQuery", + displayName: "Pod CPU Usage", + refreshInterval: "PT1M", + dataUnit: "Percent", + queryText: 'rate(container_cpu_usage_seconds_total{pod=~"my-app-.*"}[5m]) * 100', + timeGrain: "PT5M", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 70 }, + unhealthyRule: { operator: "GreaterThan", threshold: 90 }, + }, + }, + ], + }, + dependencies: { + aggregationType: "MinHealthy", + unit: "Percentage", + degradedThreshold: 80, + unhealthyThreshold: 50, }, - dependencies: { aggregationType: "WorstOf" }, }, alerts: { unhealthy: { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesDeleteSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesDeleteSample.js index 34da82034e86..9eede903a3e5 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesDeleteSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesDeleteSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to delete a Entity * * @summary delete a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_Delete.json + * x-ms-original-file: 2026-01-01-preview/Entities_Delete.json */ async function entitiesDelete() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetHistorySample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetHistorySample.js new file mode 100644 index 000000000000..7300bfb4dd32 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetHistorySample.js @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { CloudHealthClient } = require("@azure/arm-cloudhealth"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to retrieve the health state transition history for an entity + * + * @summary retrieve the health state transition history for an entity + * x-ms-original-file: 2026-01-01-preview/Entities_GetHistory.json + */ +async function entitiesGetHistory() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + const result = await client.entities.getHistory("rgopenapi", "myHealthModel", "entity1", { + startAt: new Date("2025-12-11T10:00:00Z"), + endAt: new Date("2025-12-12T10:00:00Z"), + }); + console.log(result); +} + +async function main() { + await entitiesGetHistory(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSample.js index dcca2a451f87..60ff2a8e60a4 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to get a Entity * * @summary get a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_Get.json + * x-ms-original-file: 2026-01-01-preview/Entities_Get.json */ async function entitiesGet() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSignalHistorySample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSignalHistorySample.js new file mode 100644 index 000000000000..301c73d4cf25 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesGetSignalHistorySample.js @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { CloudHealthClient } = require("@azure/arm-cloudhealth"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to retrieve the time series history for a signal on an entity + * + * @summary retrieve the time series history for a signal on an entity + * x-ms-original-file: 2026-01-01-preview/Entities_GetSignalHistory.json + */ +async function entitiesGetSignalHistory() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + const result = await client.entities.getSignalHistory("rgopenapi", "myHealthModel", "entity1", { + signalName: "uniqueSignalName1", + startAt: new Date("2025-12-11T10:00:00Z"), + endAt: new Date("2025-12-12T10:00:00Z"), + }); + console.log(result); +} + +async function main() { + await entitiesGetSignalHistory(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesIngestHealthReportSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesIngestHealthReportSample.js new file mode 100644 index 000000000000..5224978189c5 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesIngestHealthReportSample.js @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +const { CloudHealthClient } = require("@azure/arm-cloudhealth"); +const { DefaultAzureCredential } = require("@azure/identity"); + +/** + * This sample demonstrates how to ingest a health report for a specific signal on an entity (the entity must already exist) + * + * @summary ingest a health report for a specific signal on an entity (the entity must already exist) + * x-ms-original-file: 2026-01-01-preview/Entities_IngestHealthReport.json + */ +async function entitiesIngestHealthReport() { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + await client.entities.ingestHealthReport("rgopenapi", "myHealthModel", "entity1", { + signalName: "uniqueSignalName1", + value: 85.5, + healthState: "Degraded", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 70 }, + unhealthyRule: { operator: "GreaterThan", threshold: 90 }, + }, + expiresInMinutes: 60, + additionalContext: "CPU usage elevated due to batch processing job", + }); +} + +async function main() { + await entitiesIngestHealthReport(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesListByHealthModelSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesListByHealthModelSample.js index 9ca03debb275..4b85cd85ea73 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesListByHealthModelSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/entitiesListByHealthModelSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list Entity resources by HealthModel * * @summary list Entity resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/Entities_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/Entities_ListByHealthModel.json */ async function entitiesListByHealthModel() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsCreateSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsCreateSample.js index 8f04805ea28e..98490978fb03 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsCreateSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsCreateSample.js @@ -8,20 +8,14 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to create a HealthModel * * @summary create a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Create.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Create.json */ async function healthModelsCreate() { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; const client = new CloudHealthClient(credential, subscriptionId); const result = await client.healthModels.create("rgopenapi", "model1", { - properties: { - discovery: { - scope: "/providers/Microsoft.Management/serviceGroups/myServiceGroup", - identity: "SystemAssigned", - addRecommendedSignals: "Enabled", - }, - }, + properties: {}, identity: { type: "SystemAssigned, UserAssigned", userAssignedIdentities: { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsDeleteSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsDeleteSample.js index dd84ac7913a7..1a5ea2002f9b 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsDeleteSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsDeleteSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to delete a HealthModel * * @summary delete a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Delete.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Delete.json */ async function healthModelsDelete() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsGetSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsGetSample.js index c086911318f9..1d474d9dddc6 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsGetSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsGetSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to get a HealthModel * * @summary get a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Get.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Get.json */ async function healthModelsGet() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListByResourceGroupSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListByResourceGroupSample.js index d62e0e36f056..1a132355968f 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListByResourceGroupSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListByResourceGroupSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list HealthModel resources by resource group * * @summary list HealthModel resources by resource group - * x-ms-original-file: 2025-05-01-preview/HealthModels_ListByResourceGroup.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_ListByResourceGroup.json */ async function healthModelsListByResourceGroup() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListBySubscriptionSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListBySubscriptionSample.js index c1c0b28edf93..6fea7459ff35 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListBySubscriptionSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsListBySubscriptionSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list HealthModel resources by subscription ID * * @summary list HealthModel resources by subscription ID - * x-ms-original-file: 2025-05-01-preview/HealthModels_ListBySubscription.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_ListBySubscription.json */ async function healthModelsListBySubscription() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsUpdateSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsUpdateSample.js index 3ad08ade19ec..b473e92a6747 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsUpdateSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/healthModelsUpdateSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to update a HealthModel * * @summary update a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Update.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Update.json */ async function healthModelsUpdate() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/operationsListSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/operationsListSample.js index e267c475cb6c..5f2184d2444a 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/operationsListSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/operationsListSample.js @@ -8,11 +8,11 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list the operations for the provider * * @summary list the operations for the provider - * x-ms-original-file: 2025-05-01-preview/Operations_List.json + * x-ms-original-file: 2026-01-01-preview/Operations_List.json */ async function operationsList() { const credential = new DefaultAzureCredential(); - const subscriptionId = "00000000-0000-0000-0000-00000000000"; + const subscriptionId = "00000000-0000-0000-0000-000000000000"; const client = new CloudHealthClient(credential, subscriptionId); const resArray = new Array(); for await (const item of client.operations.list()) { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/package.json b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/package.json index e2d7f92ce7eb..df4b03d6c5db 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/package.json +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/package.json @@ -26,8 +26,11 @@ }, "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/cloudhealth/arm-cloudhealth", "dependencies": { - "@azure/arm-cloudhealth": "next", + "@azure/arm-cloudhealth": "beta", "dotenv": "latest", - "@azure/identity": "^4.10.0" + "@azure/identity": "^4.13.0" + }, + "devDependencies": { + "cross-env": "latest" } } diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsCreateOrUpdateSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsCreateOrUpdateSample.js index c95fc32c2b23..453f8e099af2 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsCreateOrUpdateSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsCreateOrUpdateSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to create a Relationship * * @summary create a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/Relationships_CreateOrUpdate.json */ async function relationshipsCreateOrUpdate() { const credential = new DefaultAzureCredential(); @@ -19,7 +19,7 @@ async function relationshipsCreateOrUpdate() { displayName: "My relationship", parentEntityName: "Entity1", childEntityName: "Entity2", - labels: { key9681: "ixfvzsfnpvkkbrce" }, + tags: { key9681: "ixfvzsfnpvkkbrce" }, }, }); console.log(result); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsDeleteSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsDeleteSample.js index 8a3a68ff4870..3159b60f7dc8 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsDeleteSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsDeleteSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to delete a Relationship * * @summary delete a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_Delete.json + * x-ms-original-file: 2026-01-01-preview/Relationships_Delete.json */ async function relationshipsDelete() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsGetSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsGetSample.js index 81d70e0542e2..ab7204c3e7a4 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsGetSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsGetSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to get a Relationship * * @summary get a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_Get.json + * x-ms-original-file: 2026-01-01-preview/Relationships_Get.json */ async function relationshipsGet() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsListByHealthModelSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsListByHealthModelSample.js index eae46914367d..91dc4d9cec73 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsListByHealthModelSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/relationshipsListByHealthModelSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list Relationship resources by HealthModel * * @summary list Relationship resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/Relationships_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/Relationships_ListByHealthModel.json */ async function relationshipsListByHealthModel() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsCreateOrUpdateSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsCreateOrUpdateSample.js index 012c3fd9bbcb..d47ec50b88c1 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsCreateOrUpdateSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsCreateOrUpdateSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to create a SignalDefinition * * @summary create a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_CreateOrUpdate.json */ async function signalDefinitionsCreateOrUpdate() { const credential = new DefaultAzureCredential(); @@ -28,12 +28,12 @@ async function signalDefinitionsCreateOrUpdate() { displayName: "cpu usage", signalKind: "AzureResourceMetric", refreshInterval: "PT1M", - labels: { key4788: "ixfvzsfnpvkkbrce" }, + tags: { key4788: "ixfvzsfnpvkkbrce" }, timeGrain: "PT1M", dataUnit: "byte", evaluationRules: { - degradedRule: { operator: "LowerThan", threshold: "65" }, - unhealthyRule: { operator: "LowerThan", threshold: "60" }, + degradedRule: { operator: "LowerThan", threshold: 65 }, + unhealthyRule: { operator: "LowerThan", threshold: 60 }, }, }, }, diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsDeleteSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsDeleteSample.js index d87f72dfc239..c57df63009ce 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsDeleteSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsDeleteSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to delete a SignalDefinition * * @summary delete a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Delete.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Delete.json */ async function signalDefinitionsDelete() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsGetSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsGetSample.js index 1730b2488e07..05a8141a5303 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsGetSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsGetSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to get a SignalDefinition * * @summary get a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Get.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Get.json */ async function signalDefinitionsGet() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsListByHealthModelSample.js b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsListByHealthModelSample.js index 732196a8795a..433ab2f882c7 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsListByHealthModelSample.js +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/javascript/signalDefinitionsListByHealthModelSample.js @@ -8,7 +8,7 @@ const { DefaultAzureCredential } = require("@azure/identity"); * This sample demonstrates how to list SignalDefinition resources by HealthModel * * @summary list SignalDefinition resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_ListByHealthModel.json */ async function signalDefinitionsListByHealthModel() { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/README.md b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/README.md index 79ccb8f43196..38e8765a61f3 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/README.md +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/README.md @@ -2,35 +2,38 @@ These sample programs show how to use the TypeScript client libraries for @azure/arm-cloudhealth in some common scenarios. -| **File Name** | **Description** | -| ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| [authenticationSettingsCreateOrUpdateSample.ts][authenticationsettingscreateorupdatesample] | create a AuthenticationSetting x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_CreateOrUpdate.json | -| [authenticationSettingsDeleteSample.ts][authenticationsettingsdeletesample] | delete a AuthenticationSetting x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Delete.json | -| [authenticationSettingsGetSample.ts][authenticationsettingsgetsample] | get a AuthenticationSetting x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Get.json | -| [authenticationSettingsListByHealthModelSample.ts][authenticationsettingslistbyhealthmodelsample] | list AuthenticationSetting resources by HealthModel x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_ListByHealthModel.json | -| [discoveryRulesCreateOrUpdateSample.ts][discoveryrulescreateorupdatesample] | create a DiscoveryRule x-ms-original-file: 2025-05-01-preview/DiscoveryRules_CreateOrUpdate.json | -| [discoveryRulesDeleteSample.ts][discoveryrulesdeletesample] | delete a DiscoveryRule x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Delete.json | -| [discoveryRulesGetSample.ts][discoveryrulesgetsample] | get a DiscoveryRule x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Get.json | -| [discoveryRulesListByHealthModelSample.ts][discoveryruleslistbyhealthmodelsample] | list DiscoveryRule resources by HealthModel x-ms-original-file: 2025-05-01-preview/DiscoveryRules_ListByHealthModel.json | -| [entitiesCreateOrUpdateSample.ts][entitiescreateorupdatesample] | create a Entity x-ms-original-file: 2025-05-01-preview/Entities_CreateOrUpdate.json | -| [entitiesDeleteSample.ts][entitiesdeletesample] | delete a Entity x-ms-original-file: 2025-05-01-preview/Entities_Delete.json | -| [entitiesGetSample.ts][entitiesgetsample] | get a Entity x-ms-original-file: 2025-05-01-preview/Entities_Get.json | -| [entitiesListByHealthModelSample.ts][entitieslistbyhealthmodelsample] | list Entity resources by HealthModel x-ms-original-file: 2025-05-01-preview/Entities_ListByHealthModel.json | -| [healthModelsCreateSample.ts][healthmodelscreatesample] | create a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Create.json | -| [healthModelsDeleteSample.ts][healthmodelsdeletesample] | delete a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Delete.json | -| [healthModelsGetSample.ts][healthmodelsgetsample] | get a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Get.json | -| [healthModelsListByResourceGroupSample.ts][healthmodelslistbyresourcegroupsample] | list HealthModel resources by resource group x-ms-original-file: 2025-05-01-preview/HealthModels_ListByResourceGroup.json | -| [healthModelsListBySubscriptionSample.ts][healthmodelslistbysubscriptionsample] | list HealthModel resources by subscription ID x-ms-original-file: 2025-05-01-preview/HealthModels_ListBySubscription.json | -| [healthModelsUpdateSample.ts][healthmodelsupdatesample] | update a HealthModel x-ms-original-file: 2025-05-01-preview/HealthModels_Update.json | -| [operationsListSample.ts][operationslistsample] | list the operations for the provider x-ms-original-file: 2025-05-01-preview/Operations_List.json | -| [relationshipsCreateOrUpdateSample.ts][relationshipscreateorupdatesample] | create a Relationship x-ms-original-file: 2025-05-01-preview/Relationships_CreateOrUpdate.json | -| [relationshipsDeleteSample.ts][relationshipsdeletesample] | delete a Relationship x-ms-original-file: 2025-05-01-preview/Relationships_Delete.json | -| [relationshipsGetSample.ts][relationshipsgetsample] | get a Relationship x-ms-original-file: 2025-05-01-preview/Relationships_Get.json | -| [relationshipsListByHealthModelSample.ts][relationshipslistbyhealthmodelsample] | list Relationship resources by HealthModel x-ms-original-file: 2025-05-01-preview/Relationships_ListByHealthModel.json | -| [signalDefinitionsCreateOrUpdateSample.ts][signaldefinitionscreateorupdatesample] | create a SignalDefinition x-ms-original-file: 2025-05-01-preview/SignalDefinitions_CreateOrUpdate.json | -| [signalDefinitionsDeleteSample.ts][signaldefinitionsdeletesample] | delete a SignalDefinition x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Delete.json | -| [signalDefinitionsGetSample.ts][signaldefinitionsgetsample] | get a SignalDefinition x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Get.json | -| [signalDefinitionsListByHealthModelSample.ts][signaldefinitionslistbyhealthmodelsample] | list SignalDefinition resources by HealthModel x-ms-original-file: 2025-05-01-preview/SignalDefinitions_ListByHealthModel.json | +| **File Name** | **Description** | +| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [authenticationSettingsCreateOrUpdateSample.ts][authenticationsettingscreateorupdatesample] | create a AuthenticationSetting x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_CreateOrUpdate.json | +| [authenticationSettingsDeleteSample.ts][authenticationsettingsdeletesample] | delete a AuthenticationSetting x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Delete.json | +| [authenticationSettingsGetSample.ts][authenticationsettingsgetsample] | get a AuthenticationSetting x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Get.json | +| [authenticationSettingsListByHealthModelSample.ts][authenticationsettingslistbyhealthmodelsample] | list AuthenticationSetting resources by HealthModel x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_ListByHealthModel.json | +| [discoveryRulesCreateOrUpdateSample.ts][discoveryrulescreateorupdatesample] | create a DiscoveryRule x-ms-original-file: 2026-01-01-preview/DiscoveryRules_CreateOrUpdate.json | +| [discoveryRulesDeleteSample.ts][discoveryrulesdeletesample] | delete a DiscoveryRule x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Delete.json | +| [discoveryRulesGetSample.ts][discoveryrulesgetsample] | get a DiscoveryRule x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Get.json | +| [discoveryRulesListByHealthModelSample.ts][discoveryruleslistbyhealthmodelsample] | list DiscoveryRule resources by HealthModel x-ms-original-file: 2026-01-01-preview/DiscoveryRules_ListByHealthModel.json | +| [entitiesCreateOrUpdateSample.ts][entitiescreateorupdatesample] | create a Entity x-ms-original-file: 2026-01-01-preview/Entities_CreateOrUpdate.json | +| [entitiesDeleteSample.ts][entitiesdeletesample] | delete a Entity x-ms-original-file: 2026-01-01-preview/Entities_Delete.json | +| [entitiesGetHistorySample.ts][entitiesgethistorysample] | retrieve the health state transition history for an entity x-ms-original-file: 2026-01-01-preview/Entities_GetHistory.json | +| [entitiesGetSample.ts][entitiesgetsample] | get a Entity x-ms-original-file: 2026-01-01-preview/Entities_Get.json | +| [entitiesGetSignalHistorySample.ts][entitiesgetsignalhistorysample] | retrieve the time series history for a signal on an entity x-ms-original-file: 2026-01-01-preview/Entities_GetSignalHistory.json | +| [entitiesIngestHealthReportSample.ts][entitiesingesthealthreportsample] | ingest a health report for a specific signal on an entity (the entity must already exist) x-ms-original-file: 2026-01-01-preview/Entities_IngestHealthReport.json | +| [entitiesListByHealthModelSample.ts][entitieslistbyhealthmodelsample] | list Entity resources by HealthModel x-ms-original-file: 2026-01-01-preview/Entities_ListByHealthModel.json | +| [healthModelsCreateSample.ts][healthmodelscreatesample] | create a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Create.json | +| [healthModelsDeleteSample.ts][healthmodelsdeletesample] | delete a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Delete.json | +| [healthModelsGetSample.ts][healthmodelsgetsample] | get a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Get.json | +| [healthModelsListByResourceGroupSample.ts][healthmodelslistbyresourcegroupsample] | list HealthModel resources by resource group x-ms-original-file: 2026-01-01-preview/HealthModels_ListByResourceGroup.json | +| [healthModelsListBySubscriptionSample.ts][healthmodelslistbysubscriptionsample] | list HealthModel resources by subscription ID x-ms-original-file: 2026-01-01-preview/HealthModels_ListBySubscription.json | +| [healthModelsUpdateSample.ts][healthmodelsupdatesample] | update a HealthModel x-ms-original-file: 2026-01-01-preview/HealthModels_Update.json | +| [operationsListSample.ts][operationslistsample] | list the operations for the provider x-ms-original-file: 2026-01-01-preview/Operations_List.json | +| [relationshipsCreateOrUpdateSample.ts][relationshipscreateorupdatesample] | create a Relationship x-ms-original-file: 2026-01-01-preview/Relationships_CreateOrUpdate.json | +| [relationshipsDeleteSample.ts][relationshipsdeletesample] | delete a Relationship x-ms-original-file: 2026-01-01-preview/Relationships_Delete.json | +| [relationshipsGetSample.ts][relationshipsgetsample] | get a Relationship x-ms-original-file: 2026-01-01-preview/Relationships_Get.json | +| [relationshipsListByHealthModelSample.ts][relationshipslistbyhealthmodelsample] | list Relationship resources by HealthModel x-ms-original-file: 2026-01-01-preview/Relationships_ListByHealthModel.json | +| [signalDefinitionsCreateOrUpdateSample.ts][signaldefinitionscreateorupdatesample] | create a SignalDefinition x-ms-original-file: 2026-01-01-preview/SignalDefinitions_CreateOrUpdate.json | +| [signalDefinitionsDeleteSample.ts][signaldefinitionsdeletesample] | delete a SignalDefinition x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Delete.json | +| [signalDefinitionsGetSample.ts][signaldefinitionsgetsample] | get a SignalDefinition x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Get.json | +| [signalDefinitionsListByHealthModelSample.ts][signaldefinitionslistbyhealthmodelsample] | list SignalDefinition resources by HealthModel x-ms-original-file: 2026-01-01-preview/SignalDefinitions_ListByHealthModel.json | ## Prerequisites @@ -72,10 +75,10 @@ npm run build node dist/authenticationSettingsCreateOrUpdateSample.js ``` -Alternatively, run a single sample with the correct environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): +Alternatively, run a single sample with the required environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): ```bash -cross-env node dist/authenticationSettingsCreateOrUpdateSample.js +node dist/authenticationSettingsCreateOrUpdateSample.js ``` ## Next Steps @@ -92,7 +95,10 @@ Take a look at our [API Documentation][apiref] for more information about the AP [discoveryruleslistbyhealthmodelsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesListByHealthModelSample.ts [entitiescreateorupdatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesCreateOrUpdateSample.ts [entitiesdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesDeleteSample.ts +[entitiesgethistorysample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetHistorySample.ts [entitiesgetsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSample.ts +[entitiesgetsignalhistorysample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSignalHistorySample.ts +[entitiesingesthealthreportsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesIngestHealthReportSample.ts [entitieslistbyhealthmodelsample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesListByHealthModelSample.ts [healthmodelscreatesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsCreateSample.ts [healthmodelsdeletesample]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsDeleteSample.ts diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/package.json b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/package.json index 065ad11a7535..31dad5df5c70 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/package.json +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/package.json @@ -30,13 +30,14 @@ }, "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/cloudhealth/arm-cloudhealth", "dependencies": { - "@azure/arm-cloudhealth": "next", + "@azure/arm-cloudhealth": "beta", "dotenv": "latest", - "@azure/identity": "^4.10.0" + "@azure/identity": "^4.13.0" }, "devDependencies": { "@types/node": "^20.0.0", - "typescript": "~5.8.2", - "rimraf": "latest" + "cross-env": "latest", + "rimraf": "latest", + "typescript": "~6.0.2" } } diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsCreateOrUpdateSample.ts index a93d56cd47e2..0495a5561ae6 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsCreateOrUpdateSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to create a AuthenticationSetting * * @summary create a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_CreateOrUpdate.json */ async function authenticationSettingsCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsDeleteSample.ts index 980cf68de176..0b0287364071 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsDeleteSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to delete a AuthenticationSetting * * @summary delete a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Delete.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Delete.json */ async function authenticationSettingsDelete(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsGetSample.ts index 254f609ed711..588b601af928 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsGetSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to get a AuthenticationSetting * * @summary get a AuthenticationSetting - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_Get.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_Get.json */ async function authenticationSettingsGet(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsListByHealthModelSample.ts index ee1f6581e510..3efdd30ed883 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/authenticationSettingsListByHealthModelSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list AuthenticationSetting resources by HealthModel * * @summary list AuthenticationSetting resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/AuthenticationSettings_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/AuthenticationSettings_ListByHealthModel.json */ async function authenticationSettingsListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesCreateOrUpdateSample.ts index cdc69db2467d..f418f3e987d2 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesCreateOrUpdateSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to create a DiscoveryRule * * @summary create a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_CreateOrUpdate.json */ async function discoveryRulesCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); @@ -20,13 +20,15 @@ async function discoveryRulesCreateOrUpdate(): Promise { "myDiscoveryRule", { properties: { - entityName: "", authenticationSetting: "authSetting1", displayName: "myDisplayName", discoverRelationships: "Enabled", addRecommendedSignals: "Enabled", - resourceGraphQuery: - "resources | where subscriptionId == '7ddfffd7-9b32-40df-1234-828cbd55d6f4' | where resourceGroup == 'my-rg'", + specification: { + kind: "ResourceGraphQuery", + resourceGraphQuery: + "resources | where subscriptionId == '7ddfffd7-9b32-40df-1234-828cbd55d6f4' | where resourceGroup == 'my-rg'", + }, }, }, ); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesDeleteSample.ts index 14fed5924c86..922913e6ff6a 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesDeleteSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to delete a DiscoveryRule * * @summary delete a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Delete.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Delete.json */ async function discoveryRulesDelete(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesGetSample.ts index 14990c263837..2aa5b7efa057 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesGetSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to get a DiscoveryRule * * @summary get a DiscoveryRule - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_Get.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_Get.json */ async function discoveryRulesGet(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesListByHealthModelSample.ts index 171f67efc5c7..7d9c7b94afbb 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/discoveryRulesListByHealthModelSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list DiscoveryRule resources by HealthModel * * @summary list DiscoveryRule resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/DiscoveryRules_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/DiscoveryRules_ListByHealthModel.json */ async function discoveryRulesListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesCreateOrUpdateSample.ts index 703e09f232dc..5d537e9d1198 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesCreateOrUpdateSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to create a Entity * * @summary create a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/Entities_CreateOrUpdate.json */ async function entitiesCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); @@ -22,40 +22,85 @@ async function entitiesCreateOrUpdate(): Promise { properties: { displayName: "My entity", canvasPosition: { x: 14, y: 13 }, - icon: { - iconName: "Custom", - customData: "rcitntvapruccrhtxmkqjphbxunkz", - }, + icon: { iconName: "Custom", customData: "rcitntvapruccrhtxmkqjphbxunkz" }, healthObjective: 62, impact: "Standard", - labels: { key1376: "ixfvzsfnpvkkbrce" }, - signals: { + tags: { key1376: "sample tag" }, + signalGroups: { azureResource: { - signalAssignments: [{ signalDefinitions: ["sigdef1"] }], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + authenticationSetting: "auth123", azureResourceId: "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", - }, - azureLogAnalytics: { - signalAssignments: [ + azureResourceKind: "functionapp", + signals: [ { - signalDefinitions: ["B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX"], + name: "uniqueSignalName1", + signalDefinitionName: "sigdef1", + signalKind: "AzureResourceMetric", + metricNamespace: "microsoft.compute/virtualMachines", + metricName: "cpuusage", + aggregationType: "None", + dimension: "nodename", + dimensionFilter: "node1", + displayName: "CPU usage", + refreshInterval: "PT1M", + timeGrain: "PT1M", + dataUnit: "Count", + evaluationRules: { + degradedRule: { operator: "LowerThan", threshold: 10 }, + unhealthyRule: { operator: "LowerThan", threshold: 1 }, + }, }, ], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + }, + azureLogAnalytics: { + authenticationSetting: "auth123", logAnalyticsWorkspaceResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.OperationalInsights/workspaces/myworkspace", + signals: [ + { + name: "uniqueSignalName2", + signalKind: "LogAnalyticsQuery", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 1 }, + unhealthyRule: { operator: "GreaterThan", threshold: 5 }, + }, + refreshInterval: "PT1M", + queryText: "print 1", + timeGrain: "PT30M", + valueColumnName: "result", + displayName: "Test LA signal", + dataUnit: "my unit", + }, + ], }, azureMonitorWorkspace: { - signalAssignments: [ - { signalDefinitions: ["sigdef2"] }, - { signalDefinitions: ["sigdef3"] }, - ], - authenticationSetting: "B3P1X3e-FZtZ-4Ak-2VLHGQ-4m4-05DE-XNW5zW3P-46XY-DC3SSX", + authenticationSetting: "auth123", azureMonitorWorkspaceResourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.OperationalInsights/workspaces/myworkspace", + signals: [ + { + name: "pod-cpu-usage", + signalDefinitionName: "PodCpuUsageDefinition", + signalKind: "PrometheusMetricsQuery", + displayName: "Pod CPU Usage", + refreshInterval: "PT1M", + dataUnit: "Percent", + queryText: 'rate(container_cpu_usage_seconds_total{pod=~"my-app-.*"}[5m]) * 100', + timeGrain: "PT5M", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 70 }, + unhealthyRule: { operator: "GreaterThan", threshold: 90 }, + }, + }, + ], + }, + dependencies: { + aggregationType: "MinHealthy", + unit: "Percentage", + degradedThreshold: 80, + unhealthyThreshold: 50, }, - dependencies: { aggregationType: "WorstOf" }, }, alerts: { unhealthy: { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesDeleteSample.ts index 0f6d521b5f19..71f5975fc3b6 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesDeleteSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to delete a Entity * * @summary delete a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_Delete.json + * x-ms-original-file: 2026-01-01-preview/Entities_Delete.json */ async function entitiesDelete(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetHistorySample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetHistorySample.ts new file mode 100644 index 000000000000..9e35c150bd04 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetHistorySample.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to retrieve the health state transition history for an entity + * + * @summary retrieve the health state transition history for an entity + * x-ms-original-file: 2026-01-01-preview/Entities_GetHistory.json + */ +async function entitiesGetHistory(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + const result = await client.entities.getHistory("rgopenapi", "myHealthModel", "entity1", { + startAt: new Date("2025-12-11T10:00:00Z"), + endAt: new Date("2025-12-12T10:00:00Z"), + }); + console.log(result); +} + +async function main(): Promise { + await entitiesGetHistory(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSample.ts index ea85c8d8bce7..9f4593108f3c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to get a Entity * * @summary get a Entity - * x-ms-original-file: 2025-05-01-preview/Entities_Get.json + * x-ms-original-file: 2026-01-01-preview/Entities_Get.json */ async function entitiesGet(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSignalHistorySample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSignalHistorySample.ts new file mode 100644 index 000000000000..9037bf5d2c7f --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesGetSignalHistorySample.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to retrieve the time series history for a signal on an entity + * + * @summary retrieve the time series history for a signal on an entity + * x-ms-original-file: 2026-01-01-preview/Entities_GetSignalHistory.json + */ +async function entitiesGetSignalHistory(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + const result = await client.entities.getSignalHistory("rgopenapi", "myHealthModel", "entity1", { + signalName: "uniqueSignalName1", + startAt: new Date("2025-12-11T10:00:00Z"), + endAt: new Date("2025-12-12T10:00:00Z"), + }); + console.log(result); +} + +async function main(): Promise { + await entitiesGetSignalHistory(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesIngestHealthReportSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesIngestHealthReportSample.ts new file mode 100644 index 000000000000..0e1f7efb5932 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesIngestHealthReportSample.ts @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { CloudHealthClient } from "@azure/arm-cloudhealth"; +import { DefaultAzureCredential } from "@azure/identity"; + +/** + * This sample demonstrates how to ingest a health report for a specific signal on an entity (the entity must already exist) + * + * @summary ingest a health report for a specific signal on an entity (the entity must already exist) + * x-ms-original-file: 2026-01-01-preview/Entities_IngestHealthReport.json + */ +async function entitiesIngestHealthReport(): Promise { + const credential = new DefaultAzureCredential(); + const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; + const client = new CloudHealthClient(credential, subscriptionId); + await client.entities.ingestHealthReport("rgopenapi", "myHealthModel", "entity1", { + signalName: "uniqueSignalName1", + value: 85.5, + healthState: "Degraded", + evaluationRules: { + degradedRule: { operator: "GreaterThan", threshold: 70 }, + unhealthyRule: { operator: "GreaterThan", threshold: 90 }, + }, + expiresInMinutes: 60, + additionalContext: "CPU usage elevated due to batch processing job", + }); +} + +async function main(): Promise { + await entitiesIngestHealthReport(); +} + +main().catch(console.error); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesListByHealthModelSample.ts index d97e0c91feee..dfaff0bdd73f 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/entitiesListByHealthModelSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list Entity resources by HealthModel * * @summary list Entity resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/Entities_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/Entities_ListByHealthModel.json */ async function entitiesListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsCreateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsCreateSample.ts index 37727f92c8d3..251f3558e982 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsCreateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsCreateSample.ts @@ -8,20 +8,14 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to create a HealthModel * * @summary create a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Create.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Create.json */ async function healthModelsCreate(): Promise { const credential = new DefaultAzureCredential(); const subscriptionId = "4980D7D5-4E07-47AD-AD34-E76C6BC9F061"; const client = new CloudHealthClient(credential, subscriptionId); const result = await client.healthModels.create("rgopenapi", "model1", { - properties: { - discovery: { - scope: "/providers/Microsoft.Management/serviceGroups/myServiceGroup", - identity: "SystemAssigned", - addRecommendedSignals: "Enabled", - }, - }, + properties: {}, identity: { type: "SystemAssigned, UserAssigned", userAssignedIdentities: { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsDeleteSample.ts index 43c0d39add4b..dce7523d4ed7 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsDeleteSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to delete a HealthModel * * @summary delete a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Delete.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Delete.json */ async function healthModelsDelete(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsGetSample.ts index 1eb87a239736..639e8fdbc255 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsGetSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to get a HealthModel * * @summary get a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Get.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Get.json */ async function healthModelsGet(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListByResourceGroupSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListByResourceGroupSample.ts index 5b3aaddc9c1b..0e54d073056d 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListByResourceGroupSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListByResourceGroupSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list HealthModel resources by resource group * * @summary list HealthModel resources by resource group - * x-ms-original-file: 2025-05-01-preview/HealthModels_ListByResourceGroup.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_ListByResourceGroup.json */ async function healthModelsListByResourceGroup(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListBySubscriptionSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListBySubscriptionSample.ts index 94a69d377786..4c5e04e34cec 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListBySubscriptionSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsListBySubscriptionSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list HealthModel resources by subscription ID * * @summary list HealthModel resources by subscription ID - * x-ms-original-file: 2025-05-01-preview/HealthModels_ListBySubscription.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_ListBySubscription.json */ async function healthModelsListBySubscription(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsUpdateSample.ts index e3adab02c8eb..a8f6c0d507b8 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/healthModelsUpdateSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to update a HealthModel * * @summary update a HealthModel - * x-ms-original-file: 2025-05-01-preview/HealthModels_Update.json + * x-ms-original-file: 2026-01-01-preview/HealthModels_Update.json */ async function healthModelsUpdate(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/operationsListSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/operationsListSample.ts index a0d7f5159f2a..33439cd96066 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/operationsListSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/operationsListSample.ts @@ -8,11 +8,11 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list the operations for the provider * * @summary list the operations for the provider - * x-ms-original-file: 2025-05-01-preview/Operations_List.json + * x-ms-original-file: 2026-01-01-preview/Operations_List.json */ async function operationsList(): Promise { const credential = new DefaultAzureCredential(); - const subscriptionId = "00000000-0000-0000-0000-00000000000"; + const subscriptionId = "00000000-0000-0000-0000-000000000000"; const client = new CloudHealthClient(credential, subscriptionId); const resArray = new Array(); for await (const item of client.operations.list()) { diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsCreateOrUpdateSample.ts index e18401665bc0..a55b82236829 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsCreateOrUpdateSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to create a Relationship * * @summary create a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/Relationships_CreateOrUpdate.json */ async function relationshipsCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); @@ -19,7 +19,7 @@ async function relationshipsCreateOrUpdate(): Promise { displayName: "My relationship", parentEntityName: "Entity1", childEntityName: "Entity2", - labels: { key9681: "ixfvzsfnpvkkbrce" }, + tags: { key9681: "ixfvzsfnpvkkbrce" }, }, }); console.log(result); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsDeleteSample.ts index dbca8b61aace..ae89a9510b33 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsDeleteSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to delete a Relationship * * @summary delete a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_Delete.json + * x-ms-original-file: 2026-01-01-preview/Relationships_Delete.json */ async function relationshipsDelete(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsGetSample.ts index 3595b4fcd408..003eaa9fa1bf 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsGetSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to get a Relationship * * @summary get a Relationship - * x-ms-original-file: 2025-05-01-preview/Relationships_Get.json + * x-ms-original-file: 2026-01-01-preview/Relationships_Get.json */ async function relationshipsGet(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsListByHealthModelSample.ts index 2fab20a66db7..59c9d16346f9 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/relationshipsListByHealthModelSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list Relationship resources by HealthModel * * @summary list Relationship resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/Relationships_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/Relationships_ListByHealthModel.json */ async function relationshipsListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsCreateOrUpdateSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsCreateOrUpdateSample.ts index adc9dd3037b8..8f18320b1dd0 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsCreateOrUpdateSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsCreateOrUpdateSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to create a SignalDefinition * * @summary create a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_CreateOrUpdate.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_CreateOrUpdate.json */ async function signalDefinitionsCreateOrUpdate(): Promise { const credential = new DefaultAzureCredential(); @@ -28,12 +28,12 @@ async function signalDefinitionsCreateOrUpdate(): Promise { displayName: "cpu usage", signalKind: "AzureResourceMetric", refreshInterval: "PT1M", - labels: { key4788: "ixfvzsfnpvkkbrce" }, + tags: { key4788: "ixfvzsfnpvkkbrce" }, timeGrain: "PT1M", dataUnit: "byte", evaluationRules: { - degradedRule: { operator: "LowerThan", threshold: "65" }, - unhealthyRule: { operator: "LowerThan", threshold: "60" }, + degradedRule: { operator: "LowerThan", threshold: 65 }, + unhealthyRule: { operator: "LowerThan", threshold: 60 }, }, }, }, diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsDeleteSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsDeleteSample.ts index 9fc0562cd4dc..db67d82eecf8 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsDeleteSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsDeleteSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to delete a SignalDefinition * * @summary delete a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Delete.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Delete.json */ async function signalDefinitionsDelete(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsGetSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsGetSample.ts index 07cf626b9648..11c2b755738c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsGetSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsGetSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to get a SignalDefinition * * @summary get a SignalDefinition - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_Get.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_Get.json */ async function signalDefinitionsGet(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsListByHealthModelSample.ts b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsListByHealthModelSample.ts index 223aa3d7d5d9..1002c3aa8e2c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsListByHealthModelSample.ts +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/src/signalDefinitionsListByHealthModelSample.ts @@ -8,7 +8,7 @@ import { DefaultAzureCredential } from "@azure/identity"; * This sample demonstrates how to list SignalDefinition resources by HealthModel * * @summary list SignalDefinition resources by HealthModel - * x-ms-original-file: 2025-05-01-preview/SignalDefinitions_ListByHealthModel.json + * x-ms-original-file: 2026-01-01-preview/SignalDefinitions_ListByHealthModel.json */ async function signalDefinitionsListByHealthModel(): Promise { const credential = new DefaultAzureCredential(); diff --git a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/tsconfig.json b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/tsconfig.json index 400db87cf648..82d2ed3be723 100644 --- a/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/tsconfig.json +++ b/sdk/cloudhealth/arm-cloudhealth/samples/v1-beta/typescript/tsconfig.json @@ -1,20 +1,17 @@ { "compilerOptions": { "target": "ES2023", - "module": "commonjs", - "lib": [], - "importHelpers": true, - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node10", + "module": "nodenext", + "moduleResolution": "nodenext", + "resolveJsonModule": true, "esModuleInterop": true, - "outDir": "./dist", - "resolveJsonModule": true + "allowSyntheticDefaultImports": true, + "strict": true, + "alwaysStrict": true, + "outDir": "dist", + "rootDir": "src" }, "include": [ - "./src" + "src/**/*.ts" ] } diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/index.ts index 49c048d01ba4..5bb9b70d53c2 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/index.ts @@ -2,9 +2,9 @@ // Licensed under the MIT License. export { listByHealthModel, $delete, createOrUpdate, get } from "./operations.js"; -export { - type AuthenticationSettingsListByHealthModelOptionalParams, - type AuthenticationSettingsDeleteOptionalParams, - type AuthenticationSettingsCreateOrUpdateOptionalParams, - type AuthenticationSettingsGetOptionalParams, +export type { + AuthenticationSettingsListByHealthModelOptionalParams, + AuthenticationSettingsDeleteOptionalParams, + AuthenticationSettingsCreateOrUpdateOptionalParams, + AuthenticationSettingsGetOptionalParams, } from "./options.js"; diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/operations.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/operations.ts index 41fc7ee3c156..403529088c13 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/operations.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/operations.ts @@ -1,40 +1,36 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext as Client } from "../index.js"; +import type { CloudHealthContext as Client } from "../index.js"; +import type { + AuthenticationSetting, + _AuthenticationSettingListResult, +} from "../../models/models.js"; import { errorResponseDeserializer, - AuthenticationSetting, authenticationSettingSerializer, authenticationSettingDeserializer, - _AuthenticationSettingListResult, _authenticationSettingListResultDeserializer, } from "../../models/models.js"; -import { +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { getLongRunningPoller } from "../../static-helpers/pollingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { AuthenticationSettingsListByHealthModelOptionalParams, AuthenticationSettingsDeleteOptionalParams, AuthenticationSettingsCreateOrUpdateOptionalParams, AuthenticationSettingsGetOptionalParams, } from "./options.js"; -import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; -import { - PagedAsyncIterableIterator, - buildPagedAsyncIterator, -} from "../../static-helpers/pagingHelpers.js"; -import { - StreamableMethod, - PathUncheckedResponse, - createRestError, - operationOptionsToRequestParameters, -} from "@azure-rest/core-client"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; +import type { PollerLike, OperationState } from "@azure/core-lro"; export function _listByHealthModelSend( context: Client, resourceGroupName: string, healthModelName: string, - options: AuthenticationSettingsListByHealthModelOptionalParams = { - requestOptions: {}, - }, + options: AuthenticationSettingsListByHealthModelOptionalParams = { requestOptions: {} }, ): StreamableMethod { const path = expandUrlTemplate( "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/authenticationsettings{?api%2Dversion}", @@ -42,7 +38,7 @@ export function _listByHealthModelSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -50,10 +46,7 @@ export function _listByHealthModelSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -63,7 +56,10 @@ export async function _listByHealthModelDeserialize( const expectedStatuses = ["200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -75,16 +71,18 @@ export function listByHealthModel( context: Client, resourceGroupName: string, healthModelName: string, - options: AuthenticationSettingsListByHealthModelOptionalParams = { - requestOptions: {}, - }, + options: AuthenticationSettingsListByHealthModelOptionalParams = { requestOptions: {} }, ): PagedAsyncIterableIterator { return buildPagedAsyncIterator( context, () => _listByHealthModelSend(context, resourceGroupName, healthModelName, options), _listByHealthModelDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } @@ -102,26 +100,23 @@ export function _$deleteSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, authenticationSettingName: authenticationSettingName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, }, ); - return context.path(path).delete({ - ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, - }); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); } export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "204"]; + const expectedStatuses = ["202", "204", "200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -129,26 +124,21 @@ export async function _$deleteDeserialize(result: PathUncheckedResponse): Promis } /** Delete a AuthenticationSetting */ -/** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ -export async function $delete( +export function $delete( context: Client, resourceGroupName: string, healthModelName: string, authenticationSettingName: string, options: AuthenticationSettingsDeleteOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _$deleteSend( - context, - resourceGroupName, - healthModelName, - authenticationSettingName, - options, - ); - return _$deleteDeserialize(result); +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _$deleteSend(context, resourceGroupName, healthModelName, authenticationSettingName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, void>; } export function _createOrUpdateSend( @@ -157,9 +147,7 @@ export function _createOrUpdateSend( healthModelName: string, authenticationSettingName: string, resource: AuthenticationSetting, - options: AuthenticationSettingsCreateOrUpdateOptionalParams = { - requestOptions: {}, - }, + options: AuthenticationSettingsCreateOrUpdateOptionalParams = { requestOptions: {} }, ): StreamableMethod { const path = expandUrlTemplate( "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/authenticationsettings/{authenticationSettingName}{?api%2Dversion}", @@ -168,7 +156,7 @@ export function _createOrUpdateSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, authenticationSettingName: authenticationSettingName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -177,10 +165,7 @@ export function _createOrUpdateSend( return context.path(path).put({ ...operationOptionsToRequestParameters(options), contentType: "application/json", - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, body: authenticationSettingSerializer(resource), }); } @@ -188,10 +173,13 @@ export function _createOrUpdateSend( export async function _createOrUpdateDeserialize( result: PathUncheckedResponse, ): Promise { - const expectedStatuses = ["200", "201"]; + const expectedStatuses = ["200", "201", "202"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -199,25 +187,29 @@ export async function _createOrUpdateDeserialize( } /** Create a AuthenticationSetting */ -export async function createOrUpdate( +export function createOrUpdate( context: Client, resourceGroupName: string, healthModelName: string, authenticationSettingName: string, resource: AuthenticationSetting, - options: AuthenticationSettingsCreateOrUpdateOptionalParams = { - requestOptions: {}, - }, -): Promise { - const result = await _createOrUpdateSend( - context, - resourceGroupName, - healthModelName, - authenticationSettingName, - resource, - options, - ); - return _createOrUpdateDeserialize(result); + options: AuthenticationSettingsCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, AuthenticationSetting> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend( + context, + resourceGroupName, + healthModelName, + authenticationSettingName, + resource, + options, + ), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, AuthenticationSetting>; } export function _getSend( @@ -234,7 +226,7 @@ export function _getSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, authenticationSettingName: authenticationSettingName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -242,10 +234,7 @@ export function _getSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -255,7 +244,10 @@ export async function _getDeserialize( const expectedStatuses = ["200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/options.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/options.ts index c578f8a6d383..4cb7bcd34425 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/options.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/authenticationSettings/options.ts @@ -1,16 +1,22 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { OperationOptions } from "@azure-rest/core-client"; +import type { OperationOptions } from "@azure-rest/core-client"; /** Optional parameters. */ export interface AuthenticationSettingsListByHealthModelOptionalParams extends OperationOptions {} /** Optional parameters. */ -export interface AuthenticationSettingsDeleteOptionalParams extends OperationOptions {} +export interface AuthenticationSettingsDeleteOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} /** Optional parameters. */ -export interface AuthenticationSettingsCreateOrUpdateOptionalParams extends OperationOptions {} +export interface AuthenticationSettingsCreateOrUpdateOptionalParams extends OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; +} /** Optional parameters. */ export interface AuthenticationSettingsGetOptionalParams extends OperationOptions {} diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/cloudHealthContext.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/cloudHealthContext.ts index 17135451d2fd..cb94c5456449 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/cloudHealthContext.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/cloudHealthContext.ts @@ -3,15 +3,18 @@ import { logger } from "../logger.js"; import { KnownVersions } from "../models/models.js"; -import { Client, ClientOptions, getClient } from "@azure-rest/core-client"; -import { TokenCredential } from "@azure/core-auth"; +import type { AzureSupportedClouds } from "../static-helpers/cloudSettingHelpers.js"; +import { getArmEndpoint } from "../static-helpers/cloudSettingHelpers.js"; +import type { Client, ClientOptions } from "@azure-rest/core-client"; +import { getClient } from "@azure-rest/core-client"; +import type { TokenCredential } from "@azure/core-auth"; export interface CloudHealthContext extends Client { - /** The API version to use for this operation. */ - /** Known values of {@link KnownVersions} that the service accepts. */ - apiVersion: string; /** The ID of the target subscription. The value must be an UUID. */ subscriptionId: string; + /** The API version to use for this operation. */ + /** Known values of {@link KnownVersions} that the service accepts. */ + apiVersion?: string; } /** Optional parameters for the client. */ @@ -19,6 +22,8 @@ export interface CloudHealthClientOptionalParams extends ClientOptions { /** The API version to use for this operation. */ /** Known values of {@link KnownVersions} that the service accepts. */ apiVersion?: string; + /** Specifies the Azure cloud environment for the client. */ + cloudSetting?: AzureSupportedClouds; } export function createCloudHealth( @@ -26,7 +31,8 @@ export function createCloudHealth( subscriptionId: string, options: CloudHealthClientOptionalParams = {}, ): CloudHealthContext { - const endpointUrl = options.endpoint ?? options.baseUrl ?? "https://management.azure.com"; + const endpointUrl = + options.endpoint ?? getArmEndpoint(options.cloudSetting) ?? "https://management.azure.com"; const prefixFromOptions = options?.userAgentOptions?.userAgentPrefix; const userAgentInfo = `azsdk-js-arm-cloudhealth/1.0.0-beta.1`; const userAgentPrefix = prefixFromOptions @@ -37,26 +43,10 @@ export function createCloudHealth( userAgentOptions: { userAgentPrefix }, loggingOptions: { logger: options.loggingOptions?.logger ?? logger.info }, credentials: { - scopes: options.credentials?.scopes ?? [`${endpointUrl}/.default`], + scopes: options.credentials?.scopes ?? [`${endpointUrl.replace(/\/$/, "")}/.default`], }, }; const clientContext = getClient(endpointUrl, credential, updatedOptions); - clientContext.pipeline.removePolicy({ name: "ApiVersionPolicy" }); - const apiVersion = options.apiVersion ?? "2025-05-01-preview"; - clientContext.pipeline.addPolicy({ - name: "ClientApiVersionPolicy", - sendRequest: (req, next) => { - // Use the apiVersion defined in request url directly - // Append one if there is no apiVersion and we have one at client options - const url = new URL(req.url); - if (!url.searchParams.get("api-version")) { - req.url = `${req.url}${ - Array.from(url.searchParams.keys()).length > 0 ? "&" : "?" - }api-version=${apiVersion}`; - } - - return next(req); - }, - }); + const apiVersion = options.apiVersion; return { ...clientContext, apiVersion, subscriptionId } as CloudHealthContext; } diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/index.ts index bcc05e654222..89f3cac3fe27 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/index.ts @@ -2,9 +2,9 @@ // Licensed under the MIT License. export { listByHealthModel, $delete, createOrUpdate, get } from "./operations.js"; -export { - type DiscoveryRulesListByHealthModelOptionalParams, - type DiscoveryRulesDeleteOptionalParams, - type DiscoveryRulesCreateOrUpdateOptionalParams, - type DiscoveryRulesGetOptionalParams, +export type { + DiscoveryRulesListByHealthModelOptionalParams, + DiscoveryRulesDeleteOptionalParams, + DiscoveryRulesCreateOrUpdateOptionalParams, + DiscoveryRulesGetOptionalParams, } from "./options.js"; diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/operations.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/operations.ts index de1b934a7838..b30dd2e300c3 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/operations.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/discoveryRules/operations.ts @@ -1,40 +1,37 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext as Client } from "../index.js"; +import type { CloudHealthContext as Client } from "../index.js"; +import type { + DiscoveryRule, + DiscoveryRuleResourceCreate, + _DiscoveryRuleListResult, +} from "../../models/models.js"; import { errorResponseDeserializer, - DiscoveryRule, - discoveryRuleSerializer, discoveryRuleDeserializer, - _DiscoveryRuleListResult, + discoveryRuleResourceCreateSerializer, _discoveryRuleListResultDeserializer, } from "../../models/models.js"; -import { +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { getLongRunningPoller } from "../../static-helpers/pollingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { DiscoveryRulesListByHealthModelOptionalParams, DiscoveryRulesDeleteOptionalParams, DiscoveryRulesCreateOrUpdateOptionalParams, DiscoveryRulesGetOptionalParams, } from "./options.js"; -import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; -import { - PagedAsyncIterableIterator, - buildPagedAsyncIterator, -} from "../../static-helpers/pagingHelpers.js"; -import { - StreamableMethod, - PathUncheckedResponse, - createRestError, - operationOptionsToRequestParameters, -} from "@azure-rest/core-client"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; +import type { PollerLike, OperationState } from "@azure/core-lro"; export function _listByHealthModelSend( context: Client, resourceGroupName: string, healthModelName: string, - options: DiscoveryRulesListByHealthModelOptionalParams = { - requestOptions: {}, - }, + options: DiscoveryRulesListByHealthModelOptionalParams = { requestOptions: {} }, ): StreamableMethod { const path = expandUrlTemplate( "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/discoveryrules{?api%2Dversion,timestamp}", @@ -42,7 +39,7 @@ export function _listByHealthModelSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", timestamp: !options?.timestamp ? options?.timestamp : options?.timestamp.toISOString(), }, { @@ -51,10 +48,7 @@ export function _listByHealthModelSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -64,7 +58,10 @@ export async function _listByHealthModelDeserialize( const expectedStatuses = ["200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -76,16 +73,18 @@ export function listByHealthModel( context: Client, resourceGroupName: string, healthModelName: string, - options: DiscoveryRulesListByHealthModelOptionalParams = { - requestOptions: {}, - }, + options: DiscoveryRulesListByHealthModelOptionalParams = { requestOptions: {} }, ): PagedAsyncIterableIterator { return buildPagedAsyncIterator( context, () => _listByHealthModelSend(context, resourceGroupName, healthModelName, options), _listByHealthModelDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } @@ -103,26 +102,23 @@ export function _$deleteSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, discoveryRuleName: discoveryRuleName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, }, ); - return context.path(path).delete({ - ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, - }); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); } export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "204"]; + const expectedStatuses = ["202", "204", "200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -130,26 +126,21 @@ export async function _$deleteDeserialize(result: PathUncheckedResponse): Promis } /** Delete a DiscoveryRule */ -/** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ -export async function $delete( +export function $delete( context: Client, resourceGroupName: string, healthModelName: string, discoveryRuleName: string, options: DiscoveryRulesDeleteOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _$deleteSend( - context, - resourceGroupName, - healthModelName, - discoveryRuleName, - options, - ); - return _$deleteDeserialize(result); +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _$deleteSend(context, resourceGroupName, healthModelName, discoveryRuleName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, void>; } export function _createOrUpdateSend( @@ -157,7 +148,7 @@ export function _createOrUpdateSend( resourceGroupName: string, healthModelName: string, discoveryRuleName: string, - resource: DiscoveryRule, + resource: DiscoveryRuleResourceCreate, options: DiscoveryRulesCreateOrUpdateOptionalParams = { requestOptions: {} }, ): StreamableMethod { const path = expandUrlTemplate( @@ -167,7 +158,7 @@ export function _createOrUpdateSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, discoveryRuleName: discoveryRuleName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -176,21 +167,21 @@ export function _createOrUpdateSend( return context.path(path).put({ ...operationOptionsToRequestParameters(options), contentType: "application/json", - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, - body: discoveryRuleSerializer(resource), + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: discoveryRuleResourceCreateSerializer(resource), }); } export async function _createOrUpdateDeserialize( result: PathUncheckedResponse, ): Promise { - const expectedStatuses = ["200", "201"]; + const expectedStatuses = ["200", "201", "202"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -198,23 +189,29 @@ export async function _createOrUpdateDeserialize( } /** Create a DiscoveryRule */ -export async function createOrUpdate( +export function createOrUpdate( context: Client, resourceGroupName: string, healthModelName: string, discoveryRuleName: string, - resource: DiscoveryRule, + resource: DiscoveryRuleResourceCreate, options: DiscoveryRulesCreateOrUpdateOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _createOrUpdateSend( - context, - resourceGroupName, - healthModelName, - discoveryRuleName, - resource, - options, - ); - return _createOrUpdateDeserialize(result); +): PollerLike, DiscoveryRule> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend( + context, + resourceGroupName, + healthModelName, + discoveryRuleName, + resource, + options, + ), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, DiscoveryRule>; } export function _getSend( @@ -231,7 +228,7 @@ export function _getSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, discoveryRuleName: discoveryRuleName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -239,10 +236,7 @@ export function _getSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -250,7 +244,10 @@ export async function _getDeserialize(result: PathUncheckedResponse): Promise { + const expectedStatuses = ["204"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + + throw error; + } + + return; +} + +/** Ingest a health report for a specific signal on an entity (the entity must already exist) */ +export async function ingestHealthReport( + context: Client, + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: HealthReportRequest, + options: EntitiesIngestHealthReportOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _ingestHealthReportSend( + context, + resourceGroupName, + healthModelName, + entityName, + body, + options, + ); + return _ingestHealthReportDeserialize(result); +} + +export function _getSignalHistorySend( + context: Client, + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: SignalHistoryRequest, + options: EntitiesGetSignalHistoryOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/entities/{entityName}/getSignalHistory{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + healthModelName: healthModelName, + entityName: entityName, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).post({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: signalHistoryRequestSerializer(body), + }); +} + +export async function _getSignalHistoryDeserialize( + result: PathUncheckedResponse, +): Promise { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + + throw error; + } + + return signalHistoryResponseDeserializer(result.body); +} + +/** Retrieve the time series history for a signal on an entity */ +export async function getSignalHistory( + context: Client, + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: SignalHistoryRequest, + options: EntitiesGetSignalHistoryOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _getSignalHistorySend( + context, + resourceGroupName, + healthModelName, + entityName, + body, + options, + ); + return _getSignalHistoryDeserialize(result); +} + +export function _getHistorySend( + context: Client, + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: EntityHistoryRequest, + options: EntitiesGetHistoryOptionalParams = { requestOptions: {} }, +): StreamableMethod { + const path = expandUrlTemplate( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/entities/{entityName}/getHistory{?api%2Dversion}", + { + subscriptionId: context.subscriptionId, + resourceGroupName: resourceGroupName, + healthModelName: healthModelName, + entityName: entityName, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", + }, + { + allowReserved: options?.requestOptions?.skipUrlEncoding, + }, + ); + return context.path(path).post({ + ...operationOptionsToRequestParameters(options), + contentType: "application/json", + headers: { accept: "application/json", ...options.requestOptions?.headers }, + body: entityHistoryRequestSerializer(body), + }); +} + +export async function _getHistoryDeserialize( + result: PathUncheckedResponse, +): Promise { + const expectedStatuses = ["200"]; + if (!expectedStatuses.includes(result.status)) { + const error = createRestError(result); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + + throw error; + } + + return entityHistoryResponseDeserializer(result.body); +} + +/** Retrieve the health state transition history for an entity */ +export async function getHistory( + context: Client, + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: EntityHistoryRequest, + options: EntitiesGetHistoryOptionalParams = { requestOptions: {} }, +): Promise { + const result = await _getHistorySend( + context, + resourceGroupName, + healthModelName, + entityName, + body, + options, + ); + return _getHistoryDeserialize(result); +} export function _listByHealthModelSend( context: Client, @@ -40,7 +243,7 @@ export function _listByHealthModelSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", timestamp: !options?.timestamp ? options?.timestamp : options?.timestamp.toISOString(), }, { @@ -49,10 +252,7 @@ export function _listByHealthModelSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -62,7 +262,10 @@ export async function _listByHealthModelDeserialize( const expectedStatuses = ["200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -81,7 +284,11 @@ export function listByHealthModel( () => _listByHealthModelSend(context, resourceGroupName, healthModelName, options), _listByHealthModelDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } @@ -99,26 +306,23 @@ export function _$deleteSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, entityName: entityName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, }, ); - return context.path(path).delete({ - ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, - }); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); } export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "204"]; + const expectedStatuses = ["202", "204", "200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -126,26 +330,21 @@ export async function _$deleteDeserialize(result: PathUncheckedResponse): Promis } /** Delete a Entity */ -/** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ -export async function $delete( +export function $delete( context: Client, resourceGroupName: string, healthModelName: string, entityName: string, options: EntitiesDeleteOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _$deleteSend( - context, - resourceGroupName, - healthModelName, - entityName, - options, - ); - return _$deleteDeserialize(result); +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _$deleteSend(context, resourceGroupName, healthModelName, entityName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, void>; } export function _createOrUpdateSend( @@ -163,7 +362,7 @@ export function _createOrUpdateSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, entityName: entityName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -172,19 +371,19 @@ export function _createOrUpdateSend( return context.path(path).put({ ...operationOptionsToRequestParameters(options), contentType: "application/json", - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, body: entitySerializer(resource), }); } export async function _createOrUpdateDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "201"]; + const expectedStatuses = ["200", "201", "202"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -192,23 +391,29 @@ export async function _createOrUpdateDeserialize(result: PathUncheckedResponse): } /** Create a Entity */ -export async function createOrUpdate( +export function createOrUpdate( context: Client, resourceGroupName: string, healthModelName: string, entityName: string, resource: Entity, options: EntitiesCreateOrUpdateOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _createOrUpdateSend( - context, - resourceGroupName, - healthModelName, - entityName, - resource, - options, - ); - return _createOrUpdateDeserialize(result); +): PollerLike, Entity> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend( + context, + resourceGroupName, + healthModelName, + entityName, + resource, + options, + ), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, Entity>; } export function _getSend( @@ -225,7 +430,7 @@ export function _getSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, entityName: entityName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -233,10 +438,7 @@ export function _getSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -244,7 +446,10 @@ export async function _getDeserialize(result: PathUncheckedResponse): Promise { return buildPagedAsyncIterator( context, () => _listBySubscriptionSend(context, options), _listBySubscriptionDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } export function _listByResourceGroupSend( context: Client, resourceGroupName: string, - options: HealthModelsListByResourceGroupOptionalParams = { - requestOptions: {}, - }, + options: HealthModelsListByResourceGroupOptionalParams = { requestOptions: {} }, ): StreamableMethod { const path = expandUrlTemplate( "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels{?api%2Dversion}", { subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -108,10 +102,7 @@ export function _listByResourceGroupSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -121,7 +112,10 @@ export async function _listByResourceGroupDeserialize( const expectedStatuses = ["200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -132,16 +126,18 @@ export async function _listByResourceGroupDeserialize( export function listByResourceGroup( context: Client, resourceGroupName: string, - options: HealthModelsListByResourceGroupOptionalParams = { - requestOptions: {}, - }, + options: HealthModelsListByResourceGroupOptionalParams = { requestOptions: {} }, ): PagedAsyncIterableIterator { return buildPagedAsyncIterator( context, () => _listByResourceGroupSend(context, resourceGroupName, options), _listByResourceGroupDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } @@ -157,26 +153,23 @@ export function _$deleteSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, }, ); - return context.path(path).delete({ - ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, - }); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); } export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { const expectedStatuses = ["202", "204", "200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -184,11 +177,6 @@ export async function _$deleteDeserialize(result: PathUncheckedResponse): Promis } /** Delete a HealthModel */ -/** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ export function $delete( context: Client, resourceGroupName: string, @@ -200,6 +188,7 @@ export function $delete( abortSignal: options?.abortSignal, getInitialResponse: () => _$deleteSend(context, resourceGroupName, healthModelName, options), resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2026-01-01-preview", }) as PollerLike, void>; } @@ -216,7 +205,7 @@ export function _updateSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -225,19 +214,19 @@ export function _updateSend( return context.path(path).patch({ ...operationOptionsToRequestParameters(options), contentType: "application/json", - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, body: healthModelUpdateSerializer(properties), }); } export async function _updateDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "202"]; + const expectedStatuses = ["200", "202", "201"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -252,12 +241,13 @@ export function update( properties: HealthModelUpdate, options: HealthModelsUpdateOptionalParams = { requestOptions: {} }, ): PollerLike, HealthModel> { - return getLongRunningPoller(context, _updateDeserialize, ["200", "202"], { + return getLongRunningPoller(context, _updateDeserialize, ["200", "202", "201"], { updateIntervalInMs: options?.updateIntervalInMs, abortSignal: options?.abortSignal, getInitialResponse: () => _updateSend(context, resourceGroupName, healthModelName, properties, options), resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2026-01-01-preview", }) as PollerLike, HealthModel>; } @@ -274,7 +264,7 @@ export function _createSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -283,19 +273,19 @@ export function _createSend( return context.path(path).put({ ...operationOptionsToRequestParameters(options), contentType: "application/json", - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, body: healthModelSerializer(resource), }); } export async function _createDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "201"]; + const expectedStatuses = ["200", "201", "202"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -310,12 +300,13 @@ export function create( resource: HealthModel, options: HealthModelsCreateOptionalParams = { requestOptions: {} }, ): PollerLike, HealthModel> { - return getLongRunningPoller(context, _createDeserialize, ["200", "201"], { + return getLongRunningPoller(context, _createDeserialize, ["200", "201", "202"], { updateIntervalInMs: options?.updateIntervalInMs, abortSignal: options?.abortSignal, getInitialResponse: () => _createSend(context, resourceGroupName, healthModelName, resource, options), resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2026-01-01-preview", }) as PollerLike, HealthModel>; } @@ -331,7 +322,7 @@ export function _getSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -339,10 +330,7 @@ export function _getSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -350,7 +338,10 @@ export async function _getDeserialize(result: PathUncheckedResponse): Promise _listSend(context, options), _listDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/operations/options.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/operations/options.ts index c461016ad1c5..b9a3fd9758a3 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/operations/options.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/operations/options.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { OperationOptions } from "@azure-rest/core-client"; +import type { OperationOptions } from "@azure-rest/core-client"; /** Optional parameters. */ export interface OperationsListOptionalParams extends OperationOptions {} diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/index.ts index bec367f34183..25baddd10a2a 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/index.ts @@ -2,9 +2,9 @@ // Licensed under the MIT License. export { listByHealthModel, $delete, createOrUpdate, get } from "./operations.js"; -export { - type RelationshipsListByHealthModelOptionalParams, - type RelationshipsDeleteOptionalParams, - type RelationshipsCreateOrUpdateOptionalParams, - type RelationshipsGetOptionalParams, +export type { + RelationshipsListByHealthModelOptionalParams, + RelationshipsDeleteOptionalParams, + RelationshipsCreateOrUpdateOptionalParams, + RelationshipsGetOptionalParams, } from "./options.js"; diff --git a/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/operations.ts b/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/operations.ts index 74a5baec0df2..7b8eee4bfd5a 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/operations.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/api/relationships/operations.ts @@ -1,40 +1,33 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext as Client } from "../index.js"; +import type { CloudHealthContext as Client } from "../index.js"; +import type { Relationship, _RelationshipListResult } from "../../models/models.js"; import { errorResponseDeserializer, - Relationship, relationshipSerializer, relationshipDeserializer, - _RelationshipListResult, _relationshipListResultDeserializer, } from "../../models/models.js"; -import { +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import { buildPagedAsyncIterator } from "../../static-helpers/pagingHelpers.js"; +import { getLongRunningPoller } from "../../static-helpers/pollingHelpers.js"; +import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; +import type { RelationshipsListByHealthModelOptionalParams, RelationshipsDeleteOptionalParams, RelationshipsCreateOrUpdateOptionalParams, RelationshipsGetOptionalParams, } from "./options.js"; -import { expandUrlTemplate } from "../../static-helpers/urlTemplate.js"; -import { - PagedAsyncIterableIterator, - buildPagedAsyncIterator, -} from "../../static-helpers/pagingHelpers.js"; -import { - StreamableMethod, - PathUncheckedResponse, - createRestError, - operationOptionsToRequestParameters, -} from "@azure-rest/core-client"; +import type { StreamableMethod, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError, operationOptionsToRequestParameters } from "@azure-rest/core-client"; +import type { PollerLike, OperationState } from "@azure/core-lro"; export function _listByHealthModelSend( context: Client, resourceGroupName: string, healthModelName: string, - options: RelationshipsListByHealthModelOptionalParams = { - requestOptions: {}, - }, + options: RelationshipsListByHealthModelOptionalParams = { requestOptions: {} }, ): StreamableMethod { const path = expandUrlTemplate( "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/relationships{?api%2Dversion,timestamp}", @@ -42,7 +35,7 @@ export function _listByHealthModelSend( subscriptionId: context.subscriptionId, resourceGroupName: resourceGroupName, healthModelName: healthModelName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", timestamp: !options?.timestamp ? options?.timestamp : options?.timestamp.toISOString(), }, { @@ -51,10 +44,7 @@ export function _listByHealthModelSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -64,7 +54,10 @@ export async function _listByHealthModelDeserialize( const expectedStatuses = ["200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -76,16 +69,18 @@ export function listByHealthModel( context: Client, resourceGroupName: string, healthModelName: string, - options: RelationshipsListByHealthModelOptionalParams = { - requestOptions: {}, - }, + options: RelationshipsListByHealthModelOptionalParams = { requestOptions: {} }, ): PagedAsyncIterableIterator { return buildPagedAsyncIterator( context, () => _listByHealthModelSend(context, resourceGroupName, healthModelName, options), _listByHealthModelDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } @@ -103,26 +98,23 @@ export function _$deleteSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, relationshipName: relationshipName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, }, ); - return context.path(path).delete({ - ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, - }); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); } export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "204"]; + const expectedStatuses = ["202", "204", "200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -130,26 +122,21 @@ export async function _$deleteDeserialize(result: PathUncheckedResponse): Promis } /** Delete a Relationship */ -/** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ -export async function $delete( +export function $delete( context: Client, resourceGroupName: string, healthModelName: string, relationshipName: string, options: RelationshipsDeleteOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _$deleteSend( - context, - resourceGroupName, - healthModelName, - relationshipName, - options, - ); - return _$deleteDeserialize(result); +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _$deleteSend(context, resourceGroupName, healthModelName, relationshipName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, void>; } export function _createOrUpdateSend( @@ -167,7 +154,7 @@ export function _createOrUpdateSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, relationshipName: relationshipName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -176,10 +163,7 @@ export function _createOrUpdateSend( return context.path(path).put({ ...operationOptionsToRequestParameters(options), contentType: "application/json", - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, body: relationshipSerializer(resource), }); } @@ -187,10 +171,13 @@ export function _createOrUpdateSend( export async function _createOrUpdateDeserialize( result: PathUncheckedResponse, ): Promise { - const expectedStatuses = ["200", "201"]; + const expectedStatuses = ["200", "201", "202"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -198,23 +185,29 @@ export async function _createOrUpdateDeserialize( } /** Create a Relationship */ -export async function createOrUpdate( +export function createOrUpdate( context: Client, resourceGroupName: string, healthModelName: string, relationshipName: string, resource: Relationship, options: RelationshipsCreateOrUpdateOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _createOrUpdateSend( - context, - resourceGroupName, - healthModelName, - relationshipName, - resource, - options, - ); - return _createOrUpdateDeserialize(result); +): PollerLike, Relationship> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend( + context, + resourceGroupName, + healthModelName, + relationshipName, + resource, + options, + ), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, Relationship>; } export function _getSend( @@ -231,7 +224,7 @@ export function _getSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, relationshipName: relationshipName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -239,10 +232,7 @@ export function _getSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -250,7 +240,10 @@ export async function _getDeserialize(result: PathUncheckedResponse): Promise { return buildPagedAsyncIterator( context, () => _listByHealthModelSend(context, resourceGroupName, healthModelName, options), _listByHealthModelDeserialize, ["200"], - { itemName: "value", nextLinkName: "nextLink" }, + { + itemName: "value", + nextLinkName: "nextLink", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }, ); } @@ -103,26 +98,23 @@ export function _$deleteSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, signalDefinitionName: signalDefinitionName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, }, ); - return context.path(path).delete({ - ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, - }); + return context.path(path).delete({ ...operationOptionsToRequestParameters(options) }); } export async function _$deleteDeserialize(result: PathUncheckedResponse): Promise { - const expectedStatuses = ["200", "204"]; + const expectedStatuses = ["202", "204", "200"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -130,26 +122,21 @@ export async function _$deleteDeserialize(result: PathUncheckedResponse): Promis } /** Delete a SignalDefinition */ -/** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ -export async function $delete( +export function $delete( context: Client, resourceGroupName: string, healthModelName: string, signalDefinitionName: string, options: SignalDefinitionsDeleteOptionalParams = { requestOptions: {} }, -): Promise { - const result = await _$deleteSend( - context, - resourceGroupName, - healthModelName, - signalDefinitionName, - options, - ); - return _$deleteDeserialize(result); +): PollerLike, void> { + return getLongRunningPoller(context, _$deleteDeserialize, ["202", "204", "200"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _$deleteSend(context, resourceGroupName, healthModelName, signalDefinitionName, options), + resourceLocationConfig: "location", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, void>; } export function _createOrUpdateSend( @@ -158,9 +145,7 @@ export function _createOrUpdateSend( healthModelName: string, signalDefinitionName: string, resource: SignalDefinition, - options: SignalDefinitionsCreateOrUpdateOptionalParams = { - requestOptions: {}, - }, + options: SignalDefinitionsCreateOrUpdateOptionalParams = { requestOptions: {} }, ): StreamableMethod { const path = expandUrlTemplate( "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/signaldefinitions/{signalDefinitionName}{?api%2Dversion}", @@ -169,7 +154,7 @@ export function _createOrUpdateSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, signalDefinitionName: signalDefinitionName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -178,10 +163,7 @@ export function _createOrUpdateSend( return context.path(path).put({ ...operationOptionsToRequestParameters(options), contentType: "application/json", - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, body: signalDefinitionSerializer(resource), }); } @@ -189,10 +171,13 @@ export function _createOrUpdateSend( export async function _createOrUpdateDeserialize( result: PathUncheckedResponse, ): Promise { - const expectedStatuses = ["200", "201"]; + const expectedStatuses = ["200", "201", "202"]; if (!expectedStatuses.includes(result.status)) { const error = createRestError(result); - error.details = errorResponseDeserializer(result.body); + if (result.body) { + error.details = errorResponseDeserializer(result.body); + } + throw error; } @@ -200,25 +185,29 @@ export async function _createOrUpdateDeserialize( } /** Create a SignalDefinition */ -export async function createOrUpdate( +export function createOrUpdate( context: Client, resourceGroupName: string, healthModelName: string, signalDefinitionName: string, resource: SignalDefinition, - options: SignalDefinitionsCreateOrUpdateOptionalParams = { - requestOptions: {}, - }, -): Promise { - const result = await _createOrUpdateSend( - context, - resourceGroupName, - healthModelName, - signalDefinitionName, - resource, - options, - ); - return _createOrUpdateDeserialize(result); + options: SignalDefinitionsCreateOrUpdateOptionalParams = { requestOptions: {} }, +): PollerLike, SignalDefinition> { + return getLongRunningPoller(context, _createOrUpdateDeserialize, ["200", "201", "202"], { + updateIntervalInMs: options?.updateIntervalInMs, + abortSignal: options?.abortSignal, + getInitialResponse: () => + _createOrUpdateSend( + context, + resourceGroupName, + healthModelName, + signalDefinitionName, + resource, + options, + ), + resourceLocationConfig: "azure-async-operation", + apiVersion: context.apiVersion ?? "2026-01-01-preview", + }) as PollerLike, SignalDefinition>; } export function _getSend( @@ -235,7 +224,7 @@ export function _getSend( resourceGroupName: resourceGroupName, healthModelName: healthModelName, signalDefinitionName: signalDefinitionName, - "api%2Dversion": context.apiVersion, + "api%2Dversion": context.apiVersion ?? "2026-01-01-preview", }, { allowReserved: options?.requestOptions?.skipUrlEncoding, @@ -243,10 +232,7 @@ export function _getSend( ); return context.path(path).get({ ...operationOptionsToRequestParameters(options), - headers: { - accept: "application/json", - ...options.requestOptions?.headers, - }, + headers: { accept: "application/json", ...options.requestOptions?.headers }, }); } @@ -254,7 +240,10 @@ export async function _getDeserialize(result: PathUncheckedResponse): Promise PagedAsyncIterableIterator; /** Delete a AuthenticationSetting */ - /** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ delete: ( resourceGroupName: string, healthModelName: string, authenticationSettingName: string, options?: AuthenticationSettingsDeleteOptionalParams, - ) => Promise; + ) => PollerLike, void>; /** Create a AuthenticationSetting */ createOrUpdate: ( resourceGroupName: string, @@ -44,7 +40,7 @@ export interface AuthenticationSettingsOperations { authenticationSettingName: string, resource: AuthenticationSetting, options?: AuthenticationSettingsCreateOrUpdateOptionalParams, - ) => Promise; + ) => PollerLike, AuthenticationSetting>; /** Get a AuthenticationSetting */ get: ( resourceGroupName: string, diff --git a/sdk/cloudhealth/arm-cloudhealth/src/classic/discoveryRules/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/classic/discoveryRules/index.ts index ba06a1194ae6..af8806f8df81 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/classic/discoveryRules/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/classic/discoveryRules/index.ts @@ -1,21 +1,22 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext } from "../../api/cloudHealthContext.js"; -import { DiscoveryRule } from "../../models/models.js"; -import { - DiscoveryRulesListByHealthModelOptionalParams, - DiscoveryRulesDeleteOptionalParams, - DiscoveryRulesCreateOrUpdateOptionalParams, - DiscoveryRulesGetOptionalParams, -} from "../../api/discoveryRules/options.js"; +import type { CloudHealthContext } from "../../api/cloudHealthContext.js"; import { listByHealthModel, $delete, createOrUpdate, get, } from "../../api/discoveryRules/operations.js"; -import { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { + DiscoveryRulesListByHealthModelOptionalParams, + DiscoveryRulesDeleteOptionalParams, + DiscoveryRulesCreateOrUpdateOptionalParams, + DiscoveryRulesGetOptionalParams, +} from "../../api/discoveryRules/options.js"; +import type { DiscoveryRule, DiscoveryRuleResourceCreate } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; /** Interface representing a DiscoveryRules operations. */ export interface DiscoveryRulesOperations { @@ -26,25 +27,20 @@ export interface DiscoveryRulesOperations { options?: DiscoveryRulesListByHealthModelOptionalParams, ) => PagedAsyncIterableIterator; /** Delete a DiscoveryRule */ - /** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ delete: ( resourceGroupName: string, healthModelName: string, discoveryRuleName: string, options?: DiscoveryRulesDeleteOptionalParams, - ) => Promise; + ) => PollerLike, void>; /** Create a DiscoveryRule */ createOrUpdate: ( resourceGroupName: string, healthModelName: string, discoveryRuleName: string, - resource: DiscoveryRule, + resource: DiscoveryRuleResourceCreate, options?: DiscoveryRulesCreateOrUpdateOptionalParams, - ) => Promise; + ) => PollerLike, DiscoveryRule>; /** Get a DiscoveryRule */ get: ( resourceGroupName: string, @@ -71,7 +67,7 @@ function _getDiscoveryRules(context: CloudHealthContext) { resourceGroupName: string, healthModelName: string, discoveryRuleName: string, - resource: DiscoveryRule, + resource: DiscoveryRuleResourceCreate, options?: DiscoveryRulesCreateOrUpdateOptionalParams, ) => createOrUpdate( diff --git a/sdk/cloudhealth/arm-cloudhealth/src/classic/entities/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/classic/entities/index.ts index d9fb658aaacd..b12a351aa8e3 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/classic/entities/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/classic/entities/index.ts @@ -1,19 +1,62 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext } from "../../api/cloudHealthContext.js"; -import { Entity } from "../../models/models.js"; +import type { CloudHealthContext } from "../../api/cloudHealthContext.js"; import { + ingestHealthReport, + getSignalHistory, + getHistory, + listByHealthModel, + $delete, + createOrUpdate, + get, +} from "../../api/entities/operations.js"; +import type { + EntitiesIngestHealthReportOptionalParams, + EntitiesGetSignalHistoryOptionalParams, + EntitiesGetHistoryOptionalParams, EntitiesListByHealthModelOptionalParams, EntitiesDeleteOptionalParams, EntitiesCreateOrUpdateOptionalParams, EntitiesGetOptionalParams, } from "../../api/entities/options.js"; -import { listByHealthModel, $delete, createOrUpdate, get } from "../../api/entities/operations.js"; -import { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { + Entity, + EntityHistoryRequest, + EntityHistoryResponse, + SignalHistoryRequest, + SignalHistoryResponse, + HealthReportRequest, +} from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; /** Interface representing a Entities operations. */ export interface EntitiesOperations { + /** Ingest a health report for a specific signal on an entity (the entity must already exist) */ + ingestHealthReport: ( + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: HealthReportRequest, + options?: EntitiesIngestHealthReportOptionalParams, + ) => Promise; + /** Retrieve the time series history for a signal on an entity */ + getSignalHistory: ( + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: SignalHistoryRequest, + options?: EntitiesGetSignalHistoryOptionalParams, + ) => Promise; + /** Retrieve the health state transition history for an entity */ + getHistory: ( + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: EntityHistoryRequest, + options?: EntitiesGetHistoryOptionalParams, + ) => Promise; /** List Entity resources by HealthModel */ listByHealthModel: ( resourceGroupName: string, @@ -21,17 +64,12 @@ export interface EntitiesOperations { options?: EntitiesListByHealthModelOptionalParams, ) => PagedAsyncIterableIterator; /** Delete a Entity */ - /** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ delete: ( resourceGroupName: string, healthModelName: string, entityName: string, options?: EntitiesDeleteOptionalParams, - ) => Promise; + ) => PollerLike, void>; /** Create a Entity */ createOrUpdate: ( resourceGroupName: string, @@ -39,7 +77,7 @@ export interface EntitiesOperations { entityName: string, resource: Entity, options?: EntitiesCreateOrUpdateOptionalParams, - ) => Promise; + ) => PollerLike, Entity>; /** Get a Entity */ get: ( resourceGroupName: string, @@ -51,6 +89,27 @@ export interface EntitiesOperations { function _getEntities(context: CloudHealthContext) { return { + ingestHealthReport: ( + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: HealthReportRequest, + options?: EntitiesIngestHealthReportOptionalParams, + ) => ingestHealthReport(context, resourceGroupName, healthModelName, entityName, body, options), + getSignalHistory: ( + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: SignalHistoryRequest, + options?: EntitiesGetSignalHistoryOptionalParams, + ) => getSignalHistory(context, resourceGroupName, healthModelName, entityName, body, options), + getHistory: ( + resourceGroupName: string, + healthModelName: string, + entityName: string, + body: EntityHistoryRequest, + options?: EntitiesGetHistoryOptionalParams, + ) => getHistory(context, resourceGroupName, healthModelName, entityName, body, options), listByHealthModel: ( resourceGroupName: string, healthModelName: string, diff --git a/sdk/cloudhealth/arm-cloudhealth/src/classic/healthModels/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/classic/healthModels/index.ts index 99123f866b64..84e0ef39be8d 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/classic/healthModels/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/classic/healthModels/index.ts @@ -1,16 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext } from "../../api/cloudHealthContext.js"; -import { HealthModel, HealthModelUpdate } from "../../models/models.js"; -import { - HealthModelsListBySubscriptionOptionalParams, - HealthModelsListByResourceGroupOptionalParams, - HealthModelsDeleteOptionalParams, - HealthModelsUpdateOptionalParams, - HealthModelsCreateOptionalParams, - HealthModelsGetOptionalParams, -} from "../../api/healthModels/options.js"; +import type { CloudHealthContext } from "../../api/cloudHealthContext.js"; import { listBySubscription, listByResourceGroup, @@ -19,8 +10,17 @@ import { create, get, } from "../../api/healthModels/operations.js"; -import { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; -import { PollerLike, OperationState } from "@azure/core-lro"; +import type { + HealthModelsListBySubscriptionOptionalParams, + HealthModelsListByResourceGroupOptionalParams, + HealthModelsDeleteOptionalParams, + HealthModelsUpdateOptionalParams, + HealthModelsCreateOptionalParams, + HealthModelsGetOptionalParams, +} from "../../api/healthModels/options.js"; +import type { HealthModel, HealthModelUpdate } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; /** Interface representing a HealthModels operations. */ export interface HealthModelsOperations { @@ -34,11 +34,6 @@ export interface HealthModelsOperations { options?: HealthModelsListByResourceGroupOptionalParams, ) => PagedAsyncIterableIterator; /** Delete a HealthModel */ - /** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ delete: ( resourceGroupName: string, healthModelName: string, diff --git a/sdk/cloudhealth/arm-cloudhealth/src/classic/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/classic/index.ts index 6906f7f5bfa0..d37cacd74ab0 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/classic/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/classic/index.ts @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -export { type AuthenticationSettingsOperations } from "./authenticationSettings/index.js"; -export { type DiscoveryRulesOperations } from "./discoveryRules/index.js"; -export { type EntitiesOperations } from "./entities/index.js"; -export { type HealthModelsOperations } from "./healthModels/index.js"; -export { type OperationsOperations } from "./operations/index.js"; -export { type RelationshipsOperations } from "./relationships/index.js"; -export { type SignalDefinitionsOperations } from "./signalDefinitions/index.js"; +export type { AuthenticationSettingsOperations } from "./authenticationSettings/index.js"; +export type { DiscoveryRulesOperations } from "./discoveryRules/index.js"; +export type { EntitiesOperations } from "./entities/index.js"; +export type { HealthModelsOperations } from "./healthModels/index.js"; +export type { OperationsOperations } from "./operations/index.js"; +export type { RelationshipsOperations } from "./relationships/index.js"; +export type { SignalDefinitionsOperations } from "./signalDefinitions/index.js"; diff --git a/sdk/cloudhealth/arm-cloudhealth/src/classic/operations/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/classic/operations/index.ts index 994f9f6abc04..8c48f5912bef 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/classic/operations/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/classic/operations/index.ts @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext } from "../../api/cloudHealthContext.js"; -import { Operation } from "../../models/models.js"; -import { OperationsListOptionalParams } from "../../api/operations/options.js"; +import type { CloudHealthContext } from "../../api/cloudHealthContext.js"; import { list } from "../../api/operations/operations.js"; -import { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { OperationsListOptionalParams } from "../../api/operations/options.js"; +import type { Operation } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; /** Interface representing a Operations operations. */ export interface OperationsOperations { diff --git a/sdk/cloudhealth/arm-cloudhealth/src/classic/relationships/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/classic/relationships/index.ts index 6ef2ac28e869..cdf0d46321d0 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/classic/relationships/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/classic/relationships/index.ts @@ -1,21 +1,22 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext } from "../../api/cloudHealthContext.js"; -import { Relationship } from "../../models/models.js"; -import { - RelationshipsListByHealthModelOptionalParams, - RelationshipsDeleteOptionalParams, - RelationshipsCreateOrUpdateOptionalParams, - RelationshipsGetOptionalParams, -} from "../../api/relationships/options.js"; +import type { CloudHealthContext } from "../../api/cloudHealthContext.js"; import { listByHealthModel, $delete, createOrUpdate, get, } from "../../api/relationships/operations.js"; -import { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { + RelationshipsListByHealthModelOptionalParams, + RelationshipsDeleteOptionalParams, + RelationshipsCreateOrUpdateOptionalParams, + RelationshipsGetOptionalParams, +} from "../../api/relationships/options.js"; +import type { Relationship } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; /** Interface representing a Relationships operations. */ export interface RelationshipsOperations { @@ -26,17 +27,12 @@ export interface RelationshipsOperations { options?: RelationshipsListByHealthModelOptionalParams, ) => PagedAsyncIterableIterator; /** Delete a Relationship */ - /** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ delete: ( resourceGroupName: string, healthModelName: string, relationshipName: string, options?: RelationshipsDeleteOptionalParams, - ) => Promise; + ) => PollerLike, void>; /** Create a Relationship */ createOrUpdate: ( resourceGroupName: string, @@ -44,7 +40,7 @@ export interface RelationshipsOperations { relationshipName: string, resource: Relationship, options?: RelationshipsCreateOrUpdateOptionalParams, - ) => Promise; + ) => PollerLike, Relationship>; /** Get a Relationship */ get: ( resourceGroupName: string, diff --git a/sdk/cloudhealth/arm-cloudhealth/src/classic/signalDefinitions/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/classic/signalDefinitions/index.ts index 69fd30fba101..cfc80e4d589e 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/classic/signalDefinitions/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/classic/signalDefinitions/index.ts @@ -1,21 +1,22 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthContext } from "../../api/cloudHealthContext.js"; -import { SignalDefinition } from "../../models/models.js"; -import { - SignalDefinitionsListByHealthModelOptionalParams, - SignalDefinitionsDeleteOptionalParams, - SignalDefinitionsCreateOrUpdateOptionalParams, - SignalDefinitionsGetOptionalParams, -} from "../../api/signalDefinitions/options.js"; +import type { CloudHealthContext } from "../../api/cloudHealthContext.js"; import { listByHealthModel, $delete, createOrUpdate, get, } from "../../api/signalDefinitions/operations.js"; -import { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { + SignalDefinitionsListByHealthModelOptionalParams, + SignalDefinitionsDeleteOptionalParams, + SignalDefinitionsCreateOrUpdateOptionalParams, + SignalDefinitionsGetOptionalParams, +} from "../../api/signalDefinitions/options.js"; +import type { SignalDefinition } from "../../models/models.js"; +import type { PagedAsyncIterableIterator } from "../../static-helpers/pagingHelpers.js"; +import type { PollerLike, OperationState } from "@azure/core-lro"; /** Interface representing a SignalDefinitions operations. */ export interface SignalDefinitionsOperations { @@ -26,17 +27,12 @@ export interface SignalDefinitionsOperations { options?: SignalDefinitionsListByHealthModelOptionalParams, ) => PagedAsyncIterableIterator; /** Delete a SignalDefinition */ - /** - * @fixme delete is a reserved word that cannot be used as an operation name. - * Please add @clientName("clientName") or @clientName("", "javascript") - * to the operation to override the generated name. - */ delete: ( resourceGroupName: string, healthModelName: string, signalDefinitionName: string, options?: SignalDefinitionsDeleteOptionalParams, - ) => Promise; + ) => PollerLike, void>; /** Create a SignalDefinition */ createOrUpdate: ( resourceGroupName: string, @@ -44,7 +40,7 @@ export interface SignalDefinitionsOperations { signalDefinitionName: string, resource: SignalDefinition, options?: SignalDefinitionsCreateOrUpdateOptionalParams, - ) => Promise; + ) => PollerLike, SignalDefinition>; /** Get a SignalDefinition */ get: ( resourceGroupName: string, diff --git a/sdk/cloudhealth/arm-cloudhealth/src/cloudHealthClient.ts b/sdk/cloudhealth/arm-cloudhealth/src/cloudHealthClient.ts index 2eefd9ccfda1..0d811c725375 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/cloudHealthClient.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/cloudHealthClient.ts @@ -1,37 +1,26 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { - createCloudHealth, - CloudHealthContext, - CloudHealthClientOptionalParams, -} from "./api/index.js"; -import { - DiscoveryRulesOperations, - _getDiscoveryRulesOperations, -} from "./classic/discoveryRules/index.js"; -import { - RelationshipsOperations, - _getRelationshipsOperations, -} from "./classic/relationships/index.js"; -import { EntitiesOperations, _getEntitiesOperations } from "./classic/entities/index.js"; -import { - AuthenticationSettingsOperations, - _getAuthenticationSettingsOperations, -} from "./classic/authenticationSettings/index.js"; -import { - SignalDefinitionsOperations, - _getSignalDefinitionsOperations, -} from "./classic/signalDefinitions/index.js"; -import { - HealthModelsOperations, - _getHealthModelsOperations, -} from "./classic/healthModels/index.js"; -import { OperationsOperations, _getOperationsOperations } from "./classic/operations/index.js"; -import { Pipeline } from "@azure/core-rest-pipeline"; -import { TokenCredential } from "@azure/core-auth"; +import type { CloudHealthContext, CloudHealthClientOptionalParams } from "./api/index.js"; +import { createCloudHealth } from "./api/index.js"; +import type { AuthenticationSettingsOperations } from "./classic/authenticationSettings/index.js"; +import { _getAuthenticationSettingsOperations } from "./classic/authenticationSettings/index.js"; +import type { DiscoveryRulesOperations } from "./classic/discoveryRules/index.js"; +import { _getDiscoveryRulesOperations } from "./classic/discoveryRules/index.js"; +import type { EntitiesOperations } from "./classic/entities/index.js"; +import { _getEntitiesOperations } from "./classic/entities/index.js"; +import type { HealthModelsOperations } from "./classic/healthModels/index.js"; +import { _getHealthModelsOperations } from "./classic/healthModels/index.js"; +import type { OperationsOperations } from "./classic/operations/index.js"; +import { _getOperationsOperations } from "./classic/operations/index.js"; +import type { RelationshipsOperations } from "./classic/relationships/index.js"; +import { _getRelationshipsOperations } from "./classic/relationships/index.js"; +import type { SignalDefinitionsOperations } from "./classic/signalDefinitions/index.js"; +import { _getSignalDefinitionsOperations } from "./classic/signalDefinitions/index.js"; +import type { TokenCredential } from "@azure/core-auth"; +import type { Pipeline } from "@azure/core-rest-pipeline"; -export { type CloudHealthClientOptionalParams } from "./api/cloudHealthContext.js"; +export type { CloudHealthClientOptionalParams } from "./api/cloudHealthContext.js"; export class CloudHealthClient { private _client: CloudHealthContext; diff --git a/sdk/cloudhealth/arm-cloudhealth/src/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/index.ts index bb1fa000f896..9ba19b4d66c0 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/index.ts @@ -1,145 +1,175 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { +import type { AzureSupportedClouds } from "./static-helpers/cloudSettingHelpers.js"; +import { AzureClouds } from "./static-helpers/cloudSettingHelpers.js"; +import type { PageSettings, ContinuablePage, PagedAsyncIterableIterator, } from "./static-helpers/pagingHelpers.js"; export { CloudHealthClient } from "./cloudHealthClient.js"; -export { restorePoller, type RestorePollerOptions } from "./restorePollerHelpers.js"; +export type { RestorePollerOptions } from "./restorePollerHelpers.js"; +export { restorePoller } from "./restorePollerHelpers.js"; +export type { + Operation, + OperationDisplay, + Origin, + ActionType, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + HealthModel, + HealthModelProperties, + HealthModelProvisioningState, + ManagedServiceIdentity, + ManagedServiceIdentityType, + UserAssignedIdentity, + TrackedResource, + Resource, + SystemData, + CreatedByType, + HealthModelUpdate, + SignalDefinition, + SignalDefinitionProperties, + SignalDefinitionPropertiesUnion, + SignalKind, + RefreshInterval, + EvaluationRule, + ThresholdRuleV2, + SignalOperator, + ResourceMetricSignalDefinitionProperties, + MetricAggregationType, + LogAnalyticsQuerySignalDefinitionProperties, + PrometheusMetricsSignalDefinitionProperties, + ProxyResource, + AuthenticationSetting, + AuthenticationSettingProperties, + AuthenticationSettingPropertiesUnion, + AuthenticationKind, + ManagedIdentityAuthenticationSettingProperties, + Entity, + EntityProperties, + EntityCoordinates, + IconDefinition, + EntityImpact, + SignalGroups, + AzureResourceSignals, + AzureResourceSignal, + LogAnalyticsSignals, + LogAnalyticsSignal, + AzureMonitorWorkspaceSignals, + PrometheusMetricsSignal, + DependenciesSignalGroupV2, + DependenciesAggregationType, + DependenciesAggregationUnit, + ExternalSignalGroup, + ExternalSignal, + HealthState, + EntityAlerts, + AlertConfiguration, + AlertSeverity, + SignalInstanceProperties, + SignalInstancePropertiesUnion, + SignalStatus, + EntityHistoryRequest, + EntityHistoryResponse, + HealthStateTransition, + SignalHistoryRequest, + SignalHistoryResponse, + SignalHistoryDataPoint, + HealthReportRequest, + HealthReportEvaluationRule, + Relationship, + RelationshipProperties, + DiscoveryRule, + DiscoveryRuleProperties, + DiscoveryRuleRelationshipDiscoveryBehavior, + DiscoveryRuleRecommendedSignalsBehavior, + DiscoveryRuleSpecification, + DiscoveryRuleSpecificationUnion, + DiscoveryRuleKind, + ResourceGraphQuerySpecification, + ApplicationInsightsTopologySpecification, + DiscoveryError, + DiscoveryRuleResourceCreate, + DiscoveryRulePropertiesCreate, +} from "./models/index.js"; export { - type Operation, - type OperationDisplay, KnownOrigin, - type Origin, KnownActionType, - type ActionType, - type ErrorResponse, - type ErrorDetail, - type ErrorAdditionalInfo, - type HealthModel, - type HealthModelProperties, KnownHealthModelProvisioningState, - type HealthModelProvisioningState, - type ModelDiscoverySettings, - KnownDiscoveryRuleRecommendedSignalsBehavior, - type DiscoveryRuleRecommendedSignalsBehavior, - type ManagedServiceIdentity, KnownManagedServiceIdentityType, - type ManagedServiceIdentityType, - type UserAssignedIdentity, - type TrackedResource, - type Resource, - type SystemData, KnownCreatedByType, - type CreatedByType, - type HealthModelUpdate, - type HealthModelUpdateProperties, - type SignalDefinition, - type SignalDefinitionProperties, - type SignalDefinitionPropertiesUnion, KnownSignalKind, - type SignalKind, KnownRefreshInterval, - type RefreshInterval, - type EvaluationRule, - type DynamicDetectionRule, - KnownDynamicThresholdModel, - type DynamicThresholdModel, - KnownDynamicThresholdDirection, - type DynamicThresholdDirection, - type ThresholdRule, KnownSignalOperator, - type SignalOperator, - type ResourceMetricSignalDefinitionProperties, KnownMetricAggregationType, - type MetricAggregationType, - type LogAnalyticsQuerySignalDefinitionProperties, - type PrometheusMetricsSignalDefinitionProperties, - type ProxyResource, - type AuthenticationSetting, - type AuthenticationSettingProperties, - type AuthenticationSettingPropertiesUnion, KnownAuthenticationKind, - type AuthenticationKind, - type ManagedIdentityAuthenticationSettingProperties, - type Entity, - type EntityProperties, - type EntityCoordinates, - type IconDefinition, KnownEntityImpact, - type EntityImpact, - type SignalGroup, - type AzureResourceSignalGroup, - type SignalAssignment, - type LogAnalyticsSignalGroup, - type AzureMonitorWorkspaceSignalGroup, - type DependenciesSignalGroup, KnownDependenciesAggregationType, - type DependenciesAggregationType, + KnownDependenciesAggregationUnit, KnownHealthState, - type HealthState, - type EntityAlerts, - type AlertConfiguration, KnownAlertSeverity, - type AlertSeverity, - type Relationship, - type RelationshipProperties, - type DiscoveryRule, - type DiscoveryRuleProperties, KnownDiscoveryRuleRelationshipDiscoveryBehavior, - type DiscoveryRuleRelationshipDiscoveryBehavior, + KnownDiscoveryRuleRecommendedSignalsBehavior, + KnownDiscoveryRuleKind, KnownVersions, } from "./models/index.js"; -export { type CloudHealthClientOptionalParams } from "./api/index.js"; -export { - type AuthenticationSettingsListByHealthModelOptionalParams, - type AuthenticationSettingsDeleteOptionalParams, - type AuthenticationSettingsCreateOrUpdateOptionalParams, - type AuthenticationSettingsGetOptionalParams, +export type { CloudHealthClientOptionalParams } from "./api/index.js"; +export type { + AuthenticationSettingsListByHealthModelOptionalParams, + AuthenticationSettingsDeleteOptionalParams, + AuthenticationSettingsCreateOrUpdateOptionalParams, + AuthenticationSettingsGetOptionalParams, } from "./api/authenticationSettings/index.js"; -export { - type DiscoveryRulesListByHealthModelOptionalParams, - type DiscoveryRulesDeleteOptionalParams, - type DiscoveryRulesCreateOrUpdateOptionalParams, - type DiscoveryRulesGetOptionalParams, +export type { + DiscoveryRulesListByHealthModelOptionalParams, + DiscoveryRulesDeleteOptionalParams, + DiscoveryRulesCreateOrUpdateOptionalParams, + DiscoveryRulesGetOptionalParams, } from "./api/discoveryRules/index.js"; -export { - type EntitiesListByHealthModelOptionalParams, - type EntitiesDeleteOptionalParams, - type EntitiesCreateOrUpdateOptionalParams, - type EntitiesGetOptionalParams, +export type { + EntitiesIngestHealthReportOptionalParams, + EntitiesGetSignalHistoryOptionalParams, + EntitiesGetHistoryOptionalParams, + EntitiesListByHealthModelOptionalParams, + EntitiesDeleteOptionalParams, + EntitiesCreateOrUpdateOptionalParams, + EntitiesGetOptionalParams, } from "./api/entities/index.js"; -export { - type HealthModelsListBySubscriptionOptionalParams, - type HealthModelsListByResourceGroupOptionalParams, - type HealthModelsDeleteOptionalParams, - type HealthModelsUpdateOptionalParams, - type HealthModelsCreateOptionalParams, - type HealthModelsGetOptionalParams, +export type { + HealthModelsListBySubscriptionOptionalParams, + HealthModelsListByResourceGroupOptionalParams, + HealthModelsDeleteOptionalParams, + HealthModelsUpdateOptionalParams, + HealthModelsCreateOptionalParams, + HealthModelsGetOptionalParams, } from "./api/healthModels/index.js"; -export { type OperationsListOptionalParams } from "./api/operations/index.js"; -export { - type RelationshipsListByHealthModelOptionalParams, - type RelationshipsDeleteOptionalParams, - type RelationshipsCreateOrUpdateOptionalParams, - type RelationshipsGetOptionalParams, +export type { OperationsListOptionalParams } from "./api/operations/index.js"; +export type { + RelationshipsListByHealthModelOptionalParams, + RelationshipsDeleteOptionalParams, + RelationshipsCreateOrUpdateOptionalParams, + RelationshipsGetOptionalParams, } from "./api/relationships/index.js"; -export { - type SignalDefinitionsListByHealthModelOptionalParams, - type SignalDefinitionsDeleteOptionalParams, - type SignalDefinitionsCreateOrUpdateOptionalParams, - type SignalDefinitionsGetOptionalParams, +export type { + SignalDefinitionsListByHealthModelOptionalParams, + SignalDefinitionsDeleteOptionalParams, + SignalDefinitionsCreateOrUpdateOptionalParams, + SignalDefinitionsGetOptionalParams, } from "./api/signalDefinitions/index.js"; -export { - type AuthenticationSettingsOperations, - type DiscoveryRulesOperations, - type EntitiesOperations, - type HealthModelsOperations, - type OperationsOperations, - type RelationshipsOperations, - type SignalDefinitionsOperations, +export type { + AuthenticationSettingsOperations, + DiscoveryRulesOperations, + EntitiesOperations, + HealthModelsOperations, + OperationsOperations, + RelationshipsOperations, + SignalDefinitionsOperations, } from "./classic/index.js"; -export { type PageSettings, type ContinuablePage, type PagedAsyncIterableIterator }; +export type { PageSettings, ContinuablePage, PagedAsyncIterableIterator }; +export { AzureClouds }; +export type { AzureSupportedClouds }; +export { RestError, isRestError } from "@azure/core-rest-pipeline"; diff --git a/sdk/cloudhealth/arm-cloudhealth/src/models/index.ts b/sdk/cloudhealth/arm-cloudhealth/src/models/index.ts index d1262bee5bfc..d9aa9b69a0c5 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/models/index.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/models/index.ts @@ -1,87 +1,108 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +export type { + Operation, + OperationDisplay, + Origin, + ActionType, + ErrorResponse, + ErrorDetail, + ErrorAdditionalInfo, + HealthModel, + HealthModelProperties, + HealthModelProvisioningState, + ManagedServiceIdentity, + ManagedServiceIdentityType, + UserAssignedIdentity, + TrackedResource, + Resource, + SystemData, + CreatedByType, + HealthModelUpdate, + SignalDefinition, + SignalDefinitionProperties, + SignalDefinitionPropertiesUnion, + SignalKind, + RefreshInterval, + EvaluationRule, + ThresholdRuleV2, + SignalOperator, + ResourceMetricSignalDefinitionProperties, + MetricAggregationType, + LogAnalyticsQuerySignalDefinitionProperties, + PrometheusMetricsSignalDefinitionProperties, + ProxyResource, + AuthenticationSetting, + AuthenticationSettingProperties, + AuthenticationSettingPropertiesUnion, + AuthenticationKind, + ManagedIdentityAuthenticationSettingProperties, + Entity, + EntityProperties, + EntityCoordinates, + IconDefinition, + EntityImpact, + SignalGroups, + AzureResourceSignals, + AzureResourceSignal, + LogAnalyticsSignals, + LogAnalyticsSignal, + AzureMonitorWorkspaceSignals, + PrometheusMetricsSignal, + DependenciesSignalGroupV2, + DependenciesAggregationType, + DependenciesAggregationUnit, + ExternalSignalGroup, + ExternalSignal, + HealthState, + EntityAlerts, + AlertConfiguration, + AlertSeverity, + SignalInstanceProperties, + SignalInstancePropertiesUnion, + SignalStatus, + EntityHistoryRequest, + EntityHistoryResponse, + HealthStateTransition, + SignalHistoryRequest, + SignalHistoryResponse, + SignalHistoryDataPoint, + HealthReportRequest, + HealthReportEvaluationRule, + Relationship, + RelationshipProperties, + DiscoveryRule, + DiscoveryRuleProperties, + DiscoveryRuleRelationshipDiscoveryBehavior, + DiscoveryRuleRecommendedSignalsBehavior, + DiscoveryRuleSpecification, + DiscoveryRuleSpecificationUnion, + DiscoveryRuleKind, + ResourceGraphQuerySpecification, + ApplicationInsightsTopologySpecification, + DiscoveryError, + DiscoveryRuleResourceCreate, + DiscoveryRulePropertiesCreate, +} from "./models.js"; export { - type Operation, - type OperationDisplay, KnownOrigin, - type Origin, KnownActionType, - type ActionType, - type ErrorResponse, - type ErrorDetail, - type ErrorAdditionalInfo, - type HealthModel, - type HealthModelProperties, KnownHealthModelProvisioningState, - type HealthModelProvisioningState, - type ModelDiscoverySettings, - KnownDiscoveryRuleRecommendedSignalsBehavior, - type DiscoveryRuleRecommendedSignalsBehavior, - type ManagedServiceIdentity, KnownManagedServiceIdentityType, - type ManagedServiceIdentityType, - type UserAssignedIdentity, - type TrackedResource, - type Resource, - type SystemData, KnownCreatedByType, - type CreatedByType, - type HealthModelUpdate, - type HealthModelUpdateProperties, - type SignalDefinition, - type SignalDefinitionProperties, - type SignalDefinitionPropertiesUnion, KnownSignalKind, - type SignalKind, KnownRefreshInterval, - type RefreshInterval, - type EvaluationRule, - type DynamicDetectionRule, - KnownDynamicThresholdModel, - type DynamicThresholdModel, - KnownDynamicThresholdDirection, - type DynamicThresholdDirection, - type ThresholdRule, KnownSignalOperator, - type SignalOperator, - type ResourceMetricSignalDefinitionProperties, KnownMetricAggregationType, - type MetricAggregationType, - type LogAnalyticsQuerySignalDefinitionProperties, - type PrometheusMetricsSignalDefinitionProperties, - type ProxyResource, - type AuthenticationSetting, - type AuthenticationSettingProperties, - type AuthenticationSettingPropertiesUnion, KnownAuthenticationKind, - type AuthenticationKind, - type ManagedIdentityAuthenticationSettingProperties, - type Entity, - type EntityProperties, - type EntityCoordinates, - type IconDefinition, KnownEntityImpact, - type EntityImpact, - type SignalGroup, - type AzureResourceSignalGroup, - type SignalAssignment, - type LogAnalyticsSignalGroup, - type AzureMonitorWorkspaceSignalGroup, - type DependenciesSignalGroup, KnownDependenciesAggregationType, - type DependenciesAggregationType, + KnownDependenciesAggregationUnit, KnownHealthState, - type HealthState, - type EntityAlerts, - type AlertConfiguration, KnownAlertSeverity, - type AlertSeverity, - type Relationship, - type RelationshipProperties, - type DiscoveryRule, - type DiscoveryRuleProperties, KnownDiscoveryRuleRelationshipDiscoveryBehavior, - type DiscoveryRuleRelationshipDiscoveryBehavior, + KnownDiscoveryRuleRecommendedSignalsBehavior, + KnownDiscoveryRuleKind, KnownVersions, } from "./models.js"; diff --git a/sdk/cloudhealth/arm-cloudhealth/src/models/models.ts b/sdk/cloudhealth/arm-cloudhealth/src/models/models.ts index 16a548f1cdb9..d92d0c023d25 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/models/models.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/models/models.ts @@ -1,6 +1,12 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +/** + * This file contains only generated model types and their (de)serializers. + * Disable the following rules for internal models with '_' prefix and deserializers which require 'any' for raw JSON input. + */ +/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /** A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results. */ export interface _OperationListResult { /** The Operation items on this page */ @@ -46,7 +52,7 @@ export function operationDeserializer(item: any): Operation { }; } -/** Localized display information for and operation. */ +/** Localized display information for an operation. */ export interface OperationDisplay { /** The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft Compute". */ readonly provider?: string; @@ -191,7 +197,9 @@ export function healthModelSerializer(item: HealthModel): any { export function healthModelDeserializer(item: any): HealthModel { return { - tags: item["tags"], + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), location: item["location"], id: item["id"], name: item["name"], @@ -210,29 +218,17 @@ export function healthModelDeserializer(item: any): HealthModel { /** HealthModel properties */ export interface HealthModelProperties { - /** The data plane endpoint for interacting with health data */ - readonly dataplaneEndpoint?: string; /** The status of the last operation. */ readonly provisioningState?: HealthModelProvisioningState; - /** Configure to automatically discover entities from a given scope, such as a Service Group. The discovered entities will be linked to the root entity of the health model. */ - discovery?: ModelDiscoverySettings; } -export function healthModelPropertiesSerializer(item: HealthModelProperties): any { - return { - discovery: !item["discovery"] - ? item["discovery"] - : modelDiscoverySettingsSerializer(item["discovery"]), - }; +export function healthModelPropertiesSerializer(_item: HealthModelProperties): any { + return {}; } export function healthModelPropertiesDeserializer(item: any): HealthModelProperties { return { - dataplaneEndpoint: item["dataplaneEndpoint"], provisioningState: item["provisioningState"], - discovery: !item["discovery"] - ? item["discovery"] - : modelDiscoverySettingsDeserializer(item["discovery"]), }; } @@ -244,7 +240,9 @@ export enum KnownHealthModelProvisioningState { Failed = "Failed", /** Resource creation was canceled. */ Canceled = "Canceled", + /** Creating */ Creating = "Creating", + /** Deleting */ Deleting = "Deleting", } @@ -261,50 +259,6 @@ export enum KnownHealthModelProvisioningState { */ export type HealthModelProvisioningState = string; -/** Settings for automatically discovering entities for the health model. */ -export interface ModelDiscoverySettings { - /** The scope from which entities should be automatically discovered. For example, the resource id of a Service Group. */ - scope: string; - /** Whether to add all recommended signals to the discovered entities. */ - addRecommendedSignals: DiscoveryRuleRecommendedSignalsBehavior; - /** Which Managed Identity of the health model to use for discovery. Defaults to SystemAssigned, if not set. Can be set to 'SystemAssigned' or to the resource id of a user-assigned managed identity which is linked to the health model. */ - identity?: string; -} - -export function modelDiscoverySettingsSerializer(item: ModelDiscoverySettings): any { - return { - scope: item["scope"], - addRecommendedSignals: item["addRecommendedSignals"], - identity: item["identity"], - }; -} - -export function modelDiscoverySettingsDeserializer(item: any): ModelDiscoverySettings { - return { - scope: item["scope"], - addRecommendedSignals: item["addRecommendedSignals"], - identity: item["identity"], - }; -} - -/** Discovery rule recommended signal behavior */ -export enum KnownDiscoveryRuleRecommendedSignalsBehavior { - /** Automatically add recommended signals */ - Enabled = "Enabled", - /** Do not automatically add recommended signals */ - Disabled = "Disabled", -} - -/** - * Discovery rule recommended signal behavior \ - * {@link KnownDiscoveryRuleRecommendedSignalsBehavior} can be used interchangeably with DiscoveryRuleRecommendedSignalsBehavior, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **Enabled**: Automatically add recommended signals \ - * **Disabled**: Do not automatically add recommended signals - */ -export type DiscoveryRuleRecommendedSignalsBehavior = string; - /** Managed service identity (system assigned and/or user assigned identities) */ export interface ManagedServiceIdentity { /** The service principal ID of the system assigned identity. This property will only be provided for a system assigned identity. */ @@ -314,14 +268,11 @@ export interface ManagedServiceIdentity { /** The type of managed identity assigned to this resource. */ type: ManagedServiceIdentityType; /** The identities assigned to this resource by the user. */ - userAssignedIdentities?: Record; + userAssignedIdentities?: Record; } export function managedServiceIdentitySerializer(item: ManagedServiceIdentity): any { - return { - type: item["type"], - userAssignedIdentities: item["userAssignedIdentities"], - }; + return { type: item["type"], userAssignedIdentities: item["userAssignedIdentities"] }; } export function managedServiceIdentityDeserializer(item: any): ManagedServiceIdentity { @@ -329,7 +280,14 @@ export function managedServiceIdentityDeserializer(item: any): ManagedServiceIde principalId: item["principalId"], tenantId: item["tenantId"], type: item["type"], - userAssignedIdentities: item["userAssignedIdentities"], + userAssignedIdentities: !item["userAssignedIdentities"] + ? item["userAssignedIdentities"] + : Object.fromEntries( + Object.entries(item["userAssignedIdentities"]).map(([k, p]: [string, any]) => [ + k, + !p ? p : userAssignedIdentityDeserializer(p), + ]), + ), }; } @@ -365,8 +323,8 @@ export interface UserAssignedIdentity { readonly clientId?: string; } -export function userAssignedIdentitySerializer(item: UserAssignedIdentity): any { - return item; +export function userAssignedIdentitySerializer(_item: UserAssignedIdentity): any { + return {}; } export function userAssignedIdentityDeserializer(item: any): UserAssignedIdentity { @@ -396,7 +354,9 @@ export function trackedResourceDeserializer(item: any): TrackedResource { systemData: !item["systemData"] ? item["systemData"] : systemDataDeserializer(item["systemData"]), - tags: item["tags"], + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), location: item["location"], }; } @@ -413,8 +373,8 @@ export interface Resource { readonly systemData?: SystemData; } -export function resourceSerializer(item: Resource): any { - return item; +export function resourceSerializer(_item: Resource): any { + return {}; } export function resourceDeserializer(item: any): Resource { @@ -471,7 +431,7 @@ export enum KnownCreatedByType { /** * The kind of entity that created the resource. \ - * {@link KnowncreatedByType} can be used interchangeably with createdByType, + * {@link KnownCreatedByType} can be used interchangeably with CreatedByType, * this enum contains the known values that the service supports. * ### Known values supported by the service * **User**: The entity was created by a user. \ @@ -487,8 +447,6 @@ export interface HealthModelUpdate { identity?: ManagedServiceIdentity; /** Resource tags. */ tags?: Record; - /** The resource-specific properties for this resource. */ - properties?: HealthModelUpdateProperties; } export function healthModelUpdateSerializer(item: HealthModelUpdate): any { @@ -497,23 +455,6 @@ export function healthModelUpdateSerializer(item: HealthModelUpdate): any { ? item["identity"] : managedServiceIdentitySerializer(item["identity"]), tags: item["tags"], - properties: !item["properties"] - ? item["properties"] - : healthModelUpdatePropertiesSerializer(item["properties"]), - }; -} - -/** The updatable properties of the HealthModel. */ -export interface HealthModelUpdateProperties { - /** Configure to automatically discover entities from a given scope, such as a Service Group. The discovered entities will be linked to the root entity of the health model. */ - discovery?: ModelDiscoverySettings; -} - -export function healthModelUpdatePropertiesSerializer(item: HealthModelUpdateProperties): any { - return { - discovery: !item["discovery"] - ? item["discovery"] - : modelDiscoverySettingsSerializer(item["discovery"]), }; } @@ -583,14 +524,12 @@ export interface SignalDefinitionProperties { signalKind: SignalKind; /** Interval in which the signal is being evaluated. Defaults to PT1M (1 minute). */ refreshInterval?: RefreshInterval; - /** Optional set of labels (key-value pairs) */ - labels?: Record; + /** Optional set of tags (key-value pairs) */ + tags?: Record; /** Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count)) */ dataUnit?: string; /** Evaluation rules for the signal definition */ evaluationRules: EvaluationRule; - /** Date when the signal definition was (soft-)deleted */ - readonly deletionDate?: Date; } export function signalDefinitionPropertiesSerializer(item: SignalDefinitionProperties): any { @@ -598,7 +537,7 @@ export function signalDefinitionPropertiesSerializer(item: SignalDefinitionPrope displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: item["tags"], dataUnit: item["dataUnit"], evaluationRules: evaluationRuleSerializer(item["evaluationRules"]), }; @@ -610,10 +549,11 @@ export function signalDefinitionPropertiesDeserializer(item: any): SignalDefinit displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), dataUnit: item["dataUnit"], evaluationRules: evaluationRuleDeserializer(item["evaluationRules"]), - deletionDate: !item["deletionDate"] ? item["deletionDate"] : new Date(item["deletionDate"]), }; } @@ -651,7 +591,7 @@ export function signalDefinitionPropertiesUnionSerializer( export function signalDefinitionPropertiesUnionDeserializer( item: any, ): SignalDefinitionPropertiesUnion { - switch (item.signalKind) { + switch (item["signalKind"]) { case "AzureResourceMetric": return resourceMetricSignalDefinitionPropertiesDeserializer( item as ResourceMetricSignalDefinitionProperties, @@ -674,9 +614,14 @@ export function signalDefinitionPropertiesUnionDeserializer( /** Supported signal kinds as discriminator */ export enum KnownSignalKind { + /** AzureResourceMetric */ AzureResourceMetric = "AzureResourceMetric", + /** LogAnalyticsQuery */ LogAnalyticsQuery = "LogAnalyticsQuery", + /** PrometheusMetricsQuery */ PrometheusMetricsQuery = "PrometheusMetricsQuery", + /** External */ + ExternalSignal = "External", } /** @@ -686,7 +631,8 @@ export enum KnownSignalKind { * ### Known values supported by the service * **AzureResourceMetric** \ * **LogAnalyticsQuery** \ - * **PrometheusMetricsQuery** + * **PrometheusMetricsQuery** \ + * **External** */ export type SignalKind = string; @@ -722,125 +668,43 @@ export type RefreshInterval = string; /** Evaluation rule for a signal definition */ export interface EvaluationRule { - /** Configure to use ML-based dynamic thresholds. When used, degradedRule and unhealthyRule must not be set. */ - dynamicDetectionRule?: DynamicDetectionRule; - /** Degraded rule with static threshold. When used, dynamicDetectionRule must not be set. */ - degradedRule?: ThresholdRule; - /** Unhealthy rule with static threshold. When used, dynamicDetectionRule must not be set. */ - unhealthyRule?: ThresholdRule; + /** Degraded rule with static threshold. */ + degradedRule?: ThresholdRuleV2; + /** Unhealthy rule with static threshold. */ + unhealthyRule: ThresholdRuleV2; } export function evaluationRuleSerializer(item: EvaluationRule): any { return { - dynamicDetectionRule: !item["dynamicDetectionRule"] - ? item["dynamicDetectionRule"] - : dynamicDetectionRuleSerializer(item["dynamicDetectionRule"]), degradedRule: !item["degradedRule"] ? item["degradedRule"] - : thresholdRuleSerializer(item["degradedRule"]), - unhealthyRule: !item["unhealthyRule"] - ? item["unhealthyRule"] - : thresholdRuleSerializer(item["unhealthyRule"]), + : thresholdRuleV2Serializer(item["degradedRule"]), + unhealthyRule: thresholdRuleV2Serializer(item["unhealthyRule"]), }; } export function evaluationRuleDeserializer(item: any): EvaluationRule { return { - dynamicDetectionRule: !item["dynamicDetectionRule"] - ? item["dynamicDetectionRule"] - : dynamicDetectionRuleDeserializer(item["dynamicDetectionRule"]), degradedRule: !item["degradedRule"] ? item["degradedRule"] - : thresholdRuleDeserializer(item["degradedRule"]), - unhealthyRule: !item["unhealthyRule"] - ? item["unhealthyRule"] - : thresholdRuleDeserializer(item["unhealthyRule"]), - }; -} - -/** ML-based evaluation rule for a signal definition */ -export interface DynamicDetectionRule { - /** ML model to use for dynamic thresholds */ - dynamicThresholdModel: DynamicThresholdModel; - /** ML model sensitivity. Lowest value = high sensitivity. Supported step size = 0.5 */ - modelSensitivity: number; - /** Threshold direction */ - dynamicThresholdDirection: DynamicThresholdDirection; - /** Start time of the training in UTC. */ - trainingStartTime?: Date; -} - -export function dynamicDetectionRuleSerializer(item: DynamicDetectionRule): any { - return { - dynamicThresholdModel: item["dynamicThresholdModel"], - modelSensitivity: item["modelSensitivity"], - dynamicThresholdDirection: item["dynamicThresholdDirection"], - trainingStartTime: !item["trainingStartTime"] - ? item["trainingStartTime"] - : item["trainingStartTime"].toISOString(), - }; -} - -export function dynamicDetectionRuleDeserializer(item: any): DynamicDetectionRule { - return { - dynamicThresholdModel: item["dynamicThresholdModel"], - modelSensitivity: item["modelSensitivity"], - dynamicThresholdDirection: item["dynamicThresholdDirection"], - trainingStartTime: !item["trainingStartTime"] - ? item["trainingStartTime"] - : new Date(item["trainingStartTime"]), + : thresholdRuleV2Deserializer(item["degradedRule"]), + unhealthyRule: thresholdRuleV2Deserializer(item["unhealthyRule"]), }; } -/** ML-based model variants */ -export enum KnownDynamicThresholdModel { - /** Anomaly detection model */ - AnomalyDetection = "AnomalyDetection", -} - -/** - * ML-based model variants \ - * {@link KnownDynamicThresholdModel} can be used interchangeably with DynamicThresholdModel, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **AnomalyDetection**: Anomaly detection model - */ -export type DynamicThresholdModel = string; - -/** Threshold direction for dynamic thresholds */ -export enum KnownDynamicThresholdDirection { - /** Lower than */ - LowerThan = "LowerThan", - /** Greater than */ - GreaterThan = "GreaterThan", - /** Greater or Lower Than */ - GreaterOrLowerThan = "GreaterOrLowerThan", -} - -/** - * Threshold direction for dynamic thresholds \ - * {@link KnownDynamicThresholdDirection} can be used interchangeably with DynamicThresholdDirection, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **LowerThan**: Lower than \ - * **GreaterThan**: Greater than \ - * **GreaterOrLowerThan**: Greater or Lower Than - */ -export type DynamicThresholdDirection = string; - /** Threshold-based evaluation rule for a signal definition */ -export interface ThresholdRule { +export interface ThresholdRuleV2 { /** Operator how to compare the signal value with the threshold */ operator: SignalOperator; /** Threshold value */ - threshold: string; + threshold: number; } -export function thresholdRuleSerializer(item: ThresholdRule): any { +export function thresholdRuleV2Serializer(item: ThresholdRuleV2): any { return { operator: item["operator"], threshold: item["threshold"] }; } -export function thresholdRuleDeserializer(item: any): ThresholdRule { +export function thresholdRuleV2Deserializer(item: any): ThresholdRuleV2 { return { operator: item["operator"], threshold: item["threshold"], @@ -849,16 +713,18 @@ export function thresholdRuleDeserializer(item: any): ThresholdRule { /** Signal operator */ export enum KnownSignalOperator { - /** Lower than */ - LowerThan = "LowerThan", - /** Lower than or equal to */ - LowerOrEquals = "LowerOrEquals", /** Greater than */ GreaterThan = "GreaterThan", + /** Less than */ + LessThan = "LessThan", + /** Less than or equal to */ + LessThanOrEqual = "LessThanOrEqual", /** Greater than or equal to */ - GreaterOrEquals = "GreaterOrEquals", + GreaterThanOrEqual = "GreaterThanOrEqual", /** Equal to */ - Equals = "Equals", + Equal = "Equal", + /** Not equal to */ + NotEqual = "NotEqual", } /** @@ -866,11 +732,12 @@ export enum KnownSignalOperator { * {@link KnownSignalOperator} can be used interchangeably with SignalOperator, * this enum contains the known values that the service supports. * ### Known values supported by the service - * **LowerThan**: Lower than \ - * **LowerOrEquals**: Lower than or equal to \ * **GreaterThan**: Greater than \ - * **GreaterOrEquals**: Greater than or equal to \ - * **Equals**: Equal to + * **LessThan**: Less than \ + * **LessThanOrEqual**: Less than or equal to \ + * **GreaterThanOrEqual**: Greater than or equal to \ + * **Equal**: Equal to \ + * **NotEqual**: Not equal to */ export type SignalOperator = string; @@ -899,7 +766,7 @@ export function resourceMetricSignalDefinitionPropertiesSerializer( displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: item["tags"], dataUnit: item["dataUnit"], evaluationRules: evaluationRuleSerializer(item["evaluationRules"]), metricNamespace: item["metricNamespace"], @@ -919,10 +786,11 @@ export function resourceMetricSignalDefinitionPropertiesDeserializer( displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), dataUnit: item["dataUnit"], evaluationRules: evaluationRuleDeserializer(item["evaluationRules"]), - deletionDate: !item["deletionDate"] ? item["deletionDate"] : new Date(item["deletionDate"]), metricNamespace: item["metricNamespace"], metricName: item["metricName"], timeGrain: item["timeGrain"], @@ -934,11 +802,17 @@ export function resourceMetricSignalDefinitionPropertiesDeserializer( /** Metric aggregation type */ export enum KnownMetricAggregationType { + /** None */ None = "None", + /** Average */ Average = "Average", + /** Count */ Count = "Count", + /** Minimum */ Minimum = "Minimum", + /** Maximum */ Maximum = "Maximum", + /** Total */ Total = "Total", } @@ -975,7 +849,7 @@ export function logAnalyticsQuerySignalDefinitionPropertiesSerializer( displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: item["tags"], dataUnit: item["dataUnit"], evaluationRules: evaluationRuleSerializer(item["evaluationRules"]), queryText: item["queryText"], @@ -992,10 +866,11 @@ export function logAnalyticsQuerySignalDefinitionPropertiesDeserializer( displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), dataUnit: item["dataUnit"], evaluationRules: evaluationRuleDeserializer(item["evaluationRules"]), - deletionDate: !item["deletionDate"] ? item["deletionDate"] : new Date(item["deletionDate"]), queryText: item["queryText"], timeGrain: item["timeGrain"], valueColumnName: item["valueColumnName"], @@ -1019,7 +894,7 @@ export function prometheusMetricsSignalDefinitionPropertiesSerializer( displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: item["tags"], dataUnit: item["dataUnit"], evaluationRules: evaluationRuleSerializer(item["evaluationRules"]), queryText: item["queryText"], @@ -1035,10 +910,11 @@ export function prometheusMetricsSignalDefinitionPropertiesDeserializer( displayName: item["displayName"], signalKind: item["signalKind"], refreshInterval: item["refreshInterval"], - labels: item["labels"], + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), dataUnit: item["dataUnit"], evaluationRules: evaluationRuleDeserializer(item["evaluationRules"]), - deletionDate: !item["deletionDate"] ? item["deletionDate"] : new Date(item["deletionDate"]), queryText: item["queryText"], timeGrain: item["timeGrain"], }; @@ -1047,8 +923,8 @@ export function prometheusMetricsSignalDefinitionPropertiesDeserializer( /** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */ export interface ProxyResource extends Resource {} -export function proxyResourceSerializer(item: ProxyResource): any { - return item; +export function proxyResourceSerializer(_item: ProxyResource): any { + return {}; } export function proxyResourceDeserializer(item: any): ProxyResource { @@ -1131,10 +1007,7 @@ export interface AuthenticationSettingProperties { export function authenticationSettingPropertiesSerializer( item: AuthenticationSettingProperties, ): any { - return { - displayName: item["displayName"], - authenticationKind: item["authenticationKind"], - }; + return { displayName: item["displayName"], authenticationKind: item["authenticationKind"] }; } export function authenticationSettingPropertiesDeserializer( @@ -1169,7 +1042,7 @@ export function authenticationSettingPropertiesUnionSerializer( export function authenticationSettingPropertiesUnionDeserializer( item: any, ): AuthenticationSettingPropertiesUnion { - switch (item.authenticationKind) { + switch (item["authenticationKind"]) { case "ManagedIdentity": return managedIdentityAuthenticationSettingPropertiesDeserializer( item as ManagedIdentityAuthenticationSettingProperties, @@ -1182,6 +1055,7 @@ export function authenticationSettingPropertiesUnionDeserializer( /** Supported kinds of authentication settings as discriminator */ export enum KnownAuthenticationKind { + /** ManagedIdentity */ ManagedIdentity = "ManagedIdentity", } @@ -1288,8 +1162,6 @@ export interface EntityProperties { readonly provisioningState?: HealthModelProvisioningState; /** Display name */ displayName?: string; - /** Entity kind */ - kind?: string; /** Positioning of the entity on the model canvas */ canvasPosition?: EntityCoordinates; /** Visual icon definition. If not set, a default icon is used. */ @@ -1298,14 +1170,12 @@ export interface EntityProperties { healthObjective?: number; /** Impact of the entity in health state propagation */ impact?: EntityImpact; - /** Optional set of labels (key-value pairs) */ - labels?: Record; + /** Optional set of tags (key-value pairs) */ + tags?: Record; /** Signal groups which are assigned to this entity */ - signals?: SignalGroup; + signalGroups?: SignalGroups; /** Discovered by which discovery rule. If set, the entity cannot be deleted manually. */ readonly discoveredBy?: string; - /** Date when the entity was (soft-)deleted */ - readonly deletionDate?: Date; /** Health state of this entity */ readonly healthState?: HealthState; /** Alert configuration for this entity */ @@ -1315,15 +1185,16 @@ export interface EntityProperties { export function entityPropertiesSerializer(item: EntityProperties): any { return { displayName: item["displayName"], - kind: item["kind"], canvasPosition: !item["canvasPosition"] ? item["canvasPosition"] : entityCoordinatesSerializer(item["canvasPosition"]), icon: !item["icon"] ? item["icon"] : iconDefinitionSerializer(item["icon"]), healthObjective: item["healthObjective"], impact: item["impact"], - labels: item["labels"], - signals: !item["signals"] ? item["signals"] : signalGroupSerializer(item["signals"]), + tags: item["tags"], + signalGroups: !item["signalGroups"] + ? item["signalGroups"] + : signalGroupsSerializer(item["signalGroups"]), alerts: !item["alerts"] ? item["alerts"] : entityAlertsSerializer(item["alerts"]), }; } @@ -1332,17 +1203,19 @@ export function entityPropertiesDeserializer(item: any): EntityProperties { return { provisioningState: item["provisioningState"], displayName: item["displayName"], - kind: item["kind"], canvasPosition: !item["canvasPosition"] ? item["canvasPosition"] : entityCoordinatesDeserializer(item["canvasPosition"]), icon: !item["icon"] ? item["icon"] : iconDefinitionDeserializer(item["icon"]), healthObjective: item["healthObjective"], impact: item["impact"], - labels: item["labels"], - signals: !item["signals"] ? item["signals"] : signalGroupDeserializer(item["signals"]), + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), + signalGroups: !item["signalGroups"] + ? item["signalGroups"] + : signalGroupsDeserializer(item["signalGroups"]), discoveredBy: item["discoveredBy"], - deletionDate: !item["deletionDate"] ? item["deletionDate"] : new Date(item["deletionDate"]), healthState: item["healthState"], alerts: !item["alerts"] ? item["alerts"] : entityAlertsDeserializer(item["alerts"]), }; @@ -1408,202 +1281,394 @@ export enum KnownEntityImpact { export type EntityImpact = string; /** Contains various signal groups that can be assigned to an entity */ -export interface SignalGroup { +export interface SignalGroups { /** Azure Resource Signal Group */ - azureResource?: AzureResourceSignalGroup; + azureResource?: AzureResourceSignals; /** Log Analytics Signal Group */ - azureLogAnalytics?: LogAnalyticsSignalGroup; + azureLogAnalytics?: LogAnalyticsSignals; /** Azure Monitor Workspace Signal Group */ - azureMonitorWorkspace?: AzureMonitorWorkspaceSignalGroup; + azureMonitorWorkspace?: AzureMonitorWorkspaceSignals; /** Settings for dependency signals to control how the health state of child entities influences the health state of the parent entity. */ - dependencies?: DependenciesSignalGroup; + dependencies?: DependenciesSignalGroupV2; + /** List of signals which have been externally submitted for this entity. */ + readonly external?: ExternalSignalGroup; } -export function signalGroupSerializer(item: SignalGroup): any { +export function signalGroupsSerializer(item: SignalGroups): any { return { azureResource: !item["azureResource"] ? item["azureResource"] - : azureResourceSignalGroupSerializer(item["azureResource"]), + : azureResourceSignalsSerializer(item["azureResource"]), azureLogAnalytics: !item["azureLogAnalytics"] ? item["azureLogAnalytics"] - : logAnalyticsSignalGroupSerializer(item["azureLogAnalytics"]), + : logAnalyticsSignalsSerializer(item["azureLogAnalytics"]), azureMonitorWorkspace: !item["azureMonitorWorkspace"] ? item["azureMonitorWorkspace"] - : azureMonitorWorkspaceSignalGroupSerializer(item["azureMonitorWorkspace"]), + : azureMonitorWorkspaceSignalsSerializer(item["azureMonitorWorkspace"]), dependencies: !item["dependencies"] ? item["dependencies"] - : dependenciesSignalGroupSerializer(item["dependencies"]), + : dependenciesSignalGroupV2Serializer(item["dependencies"]), }; } -export function signalGroupDeserializer(item: any): SignalGroup { +export function signalGroupsDeserializer(item: any): SignalGroups { return { azureResource: !item["azureResource"] ? item["azureResource"] - : azureResourceSignalGroupDeserializer(item["azureResource"]), + : azureResourceSignalsDeserializer(item["azureResource"]), azureLogAnalytics: !item["azureLogAnalytics"] ? item["azureLogAnalytics"] - : logAnalyticsSignalGroupDeserializer(item["azureLogAnalytics"]), + : logAnalyticsSignalsDeserializer(item["azureLogAnalytics"]), azureMonitorWorkspace: !item["azureMonitorWorkspace"] ? item["azureMonitorWorkspace"] - : azureMonitorWorkspaceSignalGroupDeserializer(item["azureMonitorWorkspace"]), + : azureMonitorWorkspaceSignalsDeserializer(item["azureMonitorWorkspace"]), dependencies: !item["dependencies"] ? item["dependencies"] - : dependenciesSignalGroupDeserializer(item["dependencies"]), + : dependenciesSignalGroupV2Deserializer(item["dependencies"]), + external: !item["external"] + ? item["external"] + : externalSignalGroupDeserializer(item["external"]), }; } -/** A grouping of signal assignments for an Azure resource */ -export interface AzureResourceSignalGroup { - /** Signal definitions which are assigned to this signal group. All assignments are combined with an OR operator. */ - signalAssignments?: SignalAssignment[]; - /** Reference to the name of the authentication setting which is used for querying the data source */ +/** A grouping of Azure resource signals */ +export interface AzureResourceSignals { + /** Reference to the name of the authentication setting which is used for querying the data source. */ authenticationSetting: string; /** Azure resource ID */ azureResourceId: string; + /** Azure resource kind (e.g., 'functionapp'). Populated by the UI for icon rendering. Can be null if not populated. */ + azureResourceKind?: string; + /** Signals assigned to this group. */ + signals?: AzureResourceSignal[]; } -export function azureResourceSignalGroupSerializer(item: AzureResourceSignalGroup): any { +export function azureResourceSignalsSerializer(item: AzureResourceSignals): any { return { - signalAssignments: !item["signalAssignments"] - ? item["signalAssignments"] - : signalAssignmentArraySerializer(item["signalAssignments"]), authenticationSetting: item["authenticationSetting"], azureResourceId: item["azureResourceId"], + azureResourceKind: item["azureResourceKind"], + signals: !item["signals"] + ? item["signals"] + : azureResourceSignalArraySerializer(item["signals"]), }; } -export function azureResourceSignalGroupDeserializer(item: any): AzureResourceSignalGroup { +export function azureResourceSignalsDeserializer(item: any): AzureResourceSignals { return { - signalAssignments: !item["signalAssignments"] - ? item["signalAssignments"] - : signalAssignmentArrayDeserializer(item["signalAssignments"]), authenticationSetting: item["authenticationSetting"], azureResourceId: item["azureResourceId"], + azureResourceKind: item["azureResourceKind"], + signals: !item["signals"] + ? item["signals"] + : azureResourceSignalArrayDeserializer(item["signals"]), }; } -export function signalAssignmentArraySerializer(result: Array): any[] { +export function azureResourceSignalArraySerializer(result: Array): any[] { return result.map((item) => { - return signalAssignmentSerializer(item); + return azureResourceSignalSerializer(item); }); } -export function signalAssignmentArrayDeserializer(result: Array): any[] { +export function azureResourceSignalArrayDeserializer(result: Array): any[] { return result.map((item) => { - return signalAssignmentDeserializer(item); + return azureResourceSignalDeserializer(item); }); } -/** Group of signal definition assignments */ -export interface SignalAssignment { - /** Signal definitions referenced by their names. All definitions are combined with an AND operator. */ - signalDefinitions: string[]; +/** An Azure Resource Metric signal instance assigned to an entity. */ +export interface AzureResourceSignal extends SignalInstanceProperties { + /** Kind of the signal instance */ + signalKind: "AzureResourceMetric"; + /** Metric namespace */ + metricNamespace?: string; + /** Name of the metric */ + metricName?: string; + /** Time range of signal. ISO duration format like PT10M. */ + timeGrain?: string; + /** Type of aggregation to apply to the metric */ + aggregationType?: MetricAggregationType; + /** Optional: Dimension to split by */ + dimension?: string; + /** Optional: Dimension filter to apply to the dimension. Must only be set if also Dimension is set. */ + dimensionFilter?: string; + /** Display name */ + displayName?: string; + /** Interval in which the signal is being evaluated. Defaults to PT1M (1 minute). */ + refreshInterval?: RefreshInterval; + /** Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count)) */ + dataUnit?: string; + /** Evaluation rules for the signal definition */ + evaluationRules?: EvaluationRule; } -export function signalAssignmentSerializer(item: SignalAssignment): any { +export function azureResourceSignalSerializer(item: AzureResourceSignal): any { return { - signalDefinitions: item["signalDefinitions"].map((p: any) => { - return p; - }), + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + metricNamespace: item["metricNamespace"], + metricName: item["metricName"], + timeGrain: item["timeGrain"], + aggregationType: item["aggregationType"], + dimension: item["dimension"], + dimensionFilter: item["dimensionFilter"], + displayName: item["displayName"], + refreshInterval: item["refreshInterval"], + dataUnit: item["dataUnit"], + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : evaluationRuleSerializer(item["evaluationRules"]), }; } -export function signalAssignmentDeserializer(item: any): SignalAssignment { +export function azureResourceSignalDeserializer(item: any): AzureResourceSignal { return { - signalDefinitions: item["signalDefinitions"].map((p: any) => { - return p; - }), + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + status: !item["status"] ? item["status"] : signalStatusDeserializer(item["status"]), + metricNamespace: item["metricNamespace"], + metricName: item["metricName"], + timeGrain: item["timeGrain"], + aggregationType: item["aggregationType"], + dimension: item["dimension"], + dimensionFilter: item["dimensionFilter"], + displayName: item["displayName"], + refreshInterval: item["refreshInterval"], + dataUnit: item["dataUnit"], + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : evaluationRuleDeserializer(item["evaluationRules"]), }; } -/** A grouping of signal assignments for a Log Analytics Workspace */ -export interface LogAnalyticsSignalGroup { - /** Signal definitions which are assigned to this signal group. All assignments are combined with an OR operator. */ - signalAssignments?: SignalAssignment[]; - /** Reference to the name of the authentication setting which is used for querying the data source */ +/** A grouping of Log Analytics workspace signals. */ +export interface LogAnalyticsSignals { + /** Reference to the name of the authentication setting which is used for querying the data source. */ authenticationSetting: string; - /** Log Analytics Workspace resource ID */ + /** Log Analytics workspace resource ID. */ logAnalyticsWorkspaceResourceId: string; + /** Signals assigned to this group. */ + signals?: LogAnalyticsSignal[]; } -export function logAnalyticsSignalGroupSerializer(item: LogAnalyticsSignalGroup): any { +export function logAnalyticsSignalsSerializer(item: LogAnalyticsSignals): any { return { - signalAssignments: !item["signalAssignments"] - ? item["signalAssignments"] - : signalAssignmentArraySerializer(item["signalAssignments"]), authenticationSetting: item["authenticationSetting"], logAnalyticsWorkspaceResourceId: item["logAnalyticsWorkspaceResourceId"], + signals: !item["signals"] + ? item["signals"] + : logAnalyticsSignalArraySerializer(item["signals"]), }; } -export function logAnalyticsSignalGroupDeserializer(item: any): LogAnalyticsSignalGroup { +export function logAnalyticsSignalsDeserializer(item: any): LogAnalyticsSignals { return { - signalAssignments: !item["signalAssignments"] - ? item["signalAssignments"] - : signalAssignmentArrayDeserializer(item["signalAssignments"]), authenticationSetting: item["authenticationSetting"], logAnalyticsWorkspaceResourceId: item["logAnalyticsWorkspaceResourceId"], + signals: !item["signals"] + ? item["signals"] + : logAnalyticsSignalArrayDeserializer(item["signals"]), }; } -/** A grouping of signal assignments for a Azure Monitor Workspace */ -export interface AzureMonitorWorkspaceSignalGroup { - /** Signal definitions which are assigned to this signal group. All assignments are combined with an OR operator. */ - signalAssignments?: SignalAssignment[]; - /** Reference to the name of the authentication setting which is used for querying the data source */ +export function logAnalyticsSignalArraySerializer(result: Array): any[] { + return result.map((item) => { + return logAnalyticsSignalSerializer(item); + }); +} + +export function logAnalyticsSignalArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return logAnalyticsSignalDeserializer(item); + }); +} + +/** A Log Analytics Query signal instance assigned to an entity. */ +export interface LogAnalyticsSignal extends SignalInstanceProperties { + /** Kind of the signal instance */ + signalKind: "LogAnalyticsQuery"; + /** Query text in KQL syntax */ + queryText?: string; + /** Time range of signal. ISO duration format like PT10M. If not specified, the KQL query must define a time range. */ + timeGrain?: string; + /** Name of the column in the result set to evaluate against the thresholds. Defaults to the first column in the result set if not specified. The column must be numeric. */ + valueColumnName?: string; + /** Display name */ + displayName?: string; + /** Interval in which the signal is being evaluated. Defaults to PT1M (1 minute). */ + refreshInterval?: RefreshInterval; + /** Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count)) */ + dataUnit?: string; + /** Evaluation rules for the signal definition */ + evaluationRules?: EvaluationRule; +} + +export function logAnalyticsSignalSerializer(item: LogAnalyticsSignal): any { + return { + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + queryText: item["queryText"], + timeGrain: item["timeGrain"], + valueColumnName: item["valueColumnName"], + displayName: item["displayName"], + refreshInterval: item["refreshInterval"], + dataUnit: item["dataUnit"], + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : evaluationRuleSerializer(item["evaluationRules"]), + }; +} + +export function logAnalyticsSignalDeserializer(item: any): LogAnalyticsSignal { + return { + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + status: !item["status"] ? item["status"] : signalStatusDeserializer(item["status"]), + queryText: item["queryText"], + timeGrain: item["timeGrain"], + valueColumnName: item["valueColumnName"], + displayName: item["displayName"], + refreshInterval: item["refreshInterval"], + dataUnit: item["dataUnit"], + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : evaluationRuleDeserializer(item["evaluationRules"]), + }; +} + +/** A grouping of Azure Monitor workspace signals. */ +export interface AzureMonitorWorkspaceSignals { + /** Reference to the name of the authentication setting which is used for querying the data source. */ authenticationSetting: string; - /** Azure Monitor workspace resource ID */ + /** Azure Monitor workspace resource ID. */ azureMonitorWorkspaceResourceId: string; + /** Signals assigned to this signal group. */ + signals?: PrometheusMetricsSignal[]; } -export function azureMonitorWorkspaceSignalGroupSerializer( - item: AzureMonitorWorkspaceSignalGroup, -): any { +export function azureMonitorWorkspaceSignalsSerializer(item: AzureMonitorWorkspaceSignals): any { return { - signalAssignments: !item["signalAssignments"] - ? item["signalAssignments"] - : signalAssignmentArraySerializer(item["signalAssignments"]), authenticationSetting: item["authenticationSetting"], azureMonitorWorkspaceResourceId: item["azureMonitorWorkspaceResourceId"], + signals: !item["signals"] + ? item["signals"] + : prometheusMetricsSignalArraySerializer(item["signals"]), }; } -export function azureMonitorWorkspaceSignalGroupDeserializer( - item: any, -): AzureMonitorWorkspaceSignalGroup { +export function azureMonitorWorkspaceSignalsDeserializer(item: any): AzureMonitorWorkspaceSignals { return { - signalAssignments: !item["signalAssignments"] - ? item["signalAssignments"] - : signalAssignmentArrayDeserializer(item["signalAssignments"]), authenticationSetting: item["authenticationSetting"], azureMonitorWorkspaceResourceId: item["azureMonitorWorkspaceResourceId"], + signals: !item["signals"] + ? item["signals"] + : prometheusMetricsSignalArrayDeserializer(item["signals"]), + }; +} + +export function prometheusMetricsSignalArraySerializer( + result: Array, +): any[] { + return result.map((item) => { + return prometheusMetricsSignalSerializer(item); + }); +} + +export function prometheusMetricsSignalArrayDeserializer( + result: Array, +): any[] { + return result.map((item) => { + return prometheusMetricsSignalDeserializer(item); + }); +} + +/** A Prometheus Metrics Query signal instance assigned to an entity. */ +export interface PrometheusMetricsSignal extends SignalInstanceProperties { + /** Kind of the signal instance */ + signalKind: "PrometheusMetricsQuery"; + /** Query text in PromQL syntax */ + queryText?: string; + /** Time range of signal. ISO duration format like PT10M. */ + timeGrain?: string; + /** Display name */ + displayName?: string; + /** Interval in which the signal is being evaluated. Defaults to PT1M (1 minute). */ + refreshInterval?: RefreshInterval; + /** Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count)) */ + dataUnit?: string; + /** Evaluation rules for the signal definition */ + evaluationRules?: EvaluationRule; +} + +export function prometheusMetricsSignalSerializer(item: PrometheusMetricsSignal): any { + return { + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + queryText: item["queryText"], + timeGrain: item["timeGrain"], + displayName: item["displayName"], + refreshInterval: item["refreshInterval"], + dataUnit: item["dataUnit"], + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : evaluationRuleSerializer(item["evaluationRules"]), + }; +} + +export function prometheusMetricsSignalDeserializer(item: any): PrometheusMetricsSignal { + return { + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + status: !item["status"] ? item["status"] : signalStatusDeserializer(item["status"]), + queryText: item["queryText"], + timeGrain: item["timeGrain"], + displayName: item["displayName"], + refreshInterval: item["refreshInterval"], + dataUnit: item["dataUnit"], + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : evaluationRuleDeserializer(item["evaluationRules"]), }; } /** Properties for dependent entities, i.e. child entities */ -export interface DependenciesSignalGroup { +export interface DependenciesSignalGroupV2 { /** Aggregation type for child dependencies. */ aggregationType: DependenciesAggregationType; - /** Degraded threshold for aggregating the propagated health state of child dependencies. Can be either an absolute number that is greater than 0, or a percentage between 1-100%. The entity will be considered degraded when the number of not healthy child dependents (unhealthy, degraded, unknown) is equal to or above the threshold value. Must only be set when AggregationType is 'Thresholds'. */ - degradedThreshold?: string; - /** Unhealthy threshold for aggregating the propagated health state of child dependencies. Can be either an absolute number that is greater than 0, or a percentage between 1-100%. The entity will be considered unhealthy when the number of not healthy child dependents (unhealthy, degraded, unknown) is equal to or above the threshold value. Must only be set when AggregationType is 'Thresholds'. */ - unhealthyThreshold?: string; + /** Degraded threshold for aggregation. For MinHealthy: parent is degraded when healthy count/percentage falls to or below this value. For MaxNotHealthy: parent is degraded when not-healthy count/percentage reaches or exceeds this value. Optional — if not set, there is no degraded state (transitions directly from Healthy to Unhealthy). */ + degradedThreshold?: number; + /** Unhealthy threshold for aggregation. For MinHealthy: parent is unhealthy when healthy count/percentage falls to or below this value. For MaxNotHealthy: parent is unhealthy when not-healthy count/percentage reaches or exceeds this value. Required when aggregationType is MinHealthy or MaxNotHealthy. */ + unhealthyThreshold?: number; + /** Unit type for the aggregation thresholds. Required when aggregationType is MinHealthy or MaxNotHealthy. */ + unit?: DependenciesAggregationUnit; + /** If true, children with Unknown health state are excluded from aggregation calculations. Defaults to true. */ + ignoreUnknown?: boolean; } -export function dependenciesSignalGroupSerializer(item: DependenciesSignalGroup): any { +export function dependenciesSignalGroupV2Serializer(item: DependenciesSignalGroupV2): any { return { aggregationType: item["aggregationType"], degradedThreshold: item["degradedThreshold"], unhealthyThreshold: item["unhealthyThreshold"], + unit: item["unit"], + ignoreUnknown: item["ignoreUnknown"], }; } -export function dependenciesSignalGroupDeserializer(item: any): DependenciesSignalGroup { +export function dependenciesSignalGroupV2Deserializer(item: any): DependenciesSignalGroupV2 { return { aggregationType: item["aggregationType"], degradedThreshold: item["degradedThreshold"], unhealthyThreshold: item["unhealthyThreshold"], + unit: item["unit"], + ignoreUnknown: item["ignoreUnknown"], }; } @@ -1611,8 +1676,10 @@ export function dependenciesSignalGroupDeserializer(item: any): DependenciesSign export enum KnownDependenciesAggregationType { /** Default behavior: Worst child health state is propagated. */ WorstOf = "WorstOf", - /** Based on configurable thresholds. */ - Thresholds = "Thresholds", + /** Healthy if the count/percentage of healthy children meets the threshold. */ + MinHealthy = "MinHealthy", + /** Healthy if the count/percentage of not-healthy children stays below the threshold. */ + MaxNotHealthy = "MaxNotHealthy", } /** @@ -1621,18 +1688,75 @@ export enum KnownDependenciesAggregationType { * this enum contains the known values that the service supports. * ### Known values supported by the service * **WorstOf**: Default behavior: Worst child health state is propagated. \ - * **Thresholds**: Based on configurable thresholds. + * **MinHealthy**: Healthy if the count\/percentage of healthy children meets the threshold. \ + * **MaxNotHealthy**: Healthy if the count\/percentage of not-healthy children stays below the threshold. */ export type DependenciesAggregationType = string; +/** Unit type for dependency aggregation thresholds. */ +export enum KnownDependenciesAggregationUnit { + /** Threshold is an absolute count of entities. */ + Absolute = "Absolute", + /** Threshold is a percentage of entities (0-100). */ + Percentage = "Percentage", +} + +/** + * Unit type for dependency aggregation thresholds. \ + * {@link KnownDependenciesAggregationUnit} can be used interchangeably with DependenciesAggregationUnit, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Absolute**: Threshold is an absolute count of entities. \ + * **Percentage**: Threshold is a percentage of entities (0-100). + */ +export type DependenciesAggregationUnit = string; + +/** A grouping of externally submitted signals. */ +export interface ExternalSignalGroup { + /** Signals assigned to this signal group. */ + readonly signals?: ExternalSignal[]; +} + +export function externalSignalGroupDeserializer(item: any): ExternalSignalGroup { + return { + signals: !item["signals"] ? item["signals"] : externalSignalArrayDeserializer(item["signals"]), + }; +} + +export function externalSignalArrayDeserializer(result: Array): any[] { + return result.map((item) => { + return externalSignalDeserializer(item); + }); +} + +/** An externally submitted signal instance assigned to an entity. */ +export interface ExternalSignal extends SignalInstanceProperties { + /** Kind of the signal instance */ + signalKind: "External"; + /** Evaluation rules for the external signal as submitted. */ + evaluationRules?: EvaluationRule; +} + +export function externalSignalDeserializer(item: any): ExternalSignal { + return { + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + status: !item["status"] ? item["status"] : signalStatusDeserializer(item["status"]), + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : evaluationRuleDeserializer(item["evaluationRules"]), + }; +} + /** Health state of an entity */ export enum KnownHealthState { /** Healthy status */ Healthy = "Healthy", /** Degraded status */ Degraded = "Degraded", - /** Error status (Unhealthy) */ - Error = "Error", + /** Unhealthy status */ + Unhealthy = "Unhealthy", /** Unknown status */ Unknown = "Unknown", /** Deleted status */ @@ -1646,7 +1770,7 @@ export enum KnownHealthState { * ### Known values supported by the service * **Healthy**: Healthy status \ * **Degraded**: Degraded status \ - * **Error**: Error status (Unhealthy) \ + * **Unhealthy**: Unhealthy status \ * **Unknown**: Unknown status \ * **Deleted**: Deleted status */ @@ -1741,6 +1865,102 @@ export enum KnownAlertSeverity { */ export type AlertSeverity = string; +/** Additional properties for signal instances assigned to an entity */ +export interface SignalInstanceProperties { + /** Kind of the signal instance */ + /** The discriminator possible values: AzureResourceMetric, LogAnalyticsQuery, PrometheusMetricsQuery, External */ + signalKind: SignalKind; + /** Unique name of the signal within the entity. */ + name: string; + /** Optional reference to a signal definition that provides default values. */ + signalDefinitionName?: string; + /** Current status of the signal. */ + readonly status?: SignalStatus; +} + +export function signalInstancePropertiesSerializer(item: SignalInstanceProperties): any { + return { + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + }; +} + +export function signalInstancePropertiesDeserializer(item: any): SignalInstanceProperties { + return { + signalKind: item["signalKind"], + name: item["name"], + signalDefinitionName: item["signalDefinitionName"], + status: !item["status"] ? item["status"] : signalStatusDeserializer(item["status"]), + }; +} + +/** Alias for SignalInstancePropertiesUnion */ +export type SignalInstancePropertiesUnion = + | AzureResourceSignal + | LogAnalyticsSignal + | PrometheusMetricsSignal + | ExternalSignal + | SignalInstanceProperties; + +export function signalInstancePropertiesUnionSerializer(item: SignalInstancePropertiesUnion): any { + switch (item.signalKind) { + case "AzureResourceMetric": + return azureResourceSignalSerializer(item as AzureResourceSignal); + + case "LogAnalyticsQuery": + return logAnalyticsSignalSerializer(item as LogAnalyticsSignal); + + case "PrometheusMetricsQuery": + return prometheusMetricsSignalSerializer(item as PrometheusMetricsSignal); + + default: + return signalInstancePropertiesSerializer(item); + } +} + +export function signalInstancePropertiesUnionDeserializer( + item: any, +): SignalInstancePropertiesUnion { + switch (item["signalKind"]) { + case "AzureResourceMetric": + return azureResourceSignalDeserializer(item as AzureResourceSignal); + + case "LogAnalyticsQuery": + return logAnalyticsSignalDeserializer(item as LogAnalyticsSignal); + + case "PrometheusMetricsQuery": + return prometheusMetricsSignalDeserializer(item as PrometheusMetricsSignal); + + case "External": + return externalSignalDeserializer(item as ExternalSignal); + + default: + return signalInstancePropertiesDeserializer(item); + } +} + +/** Status of a signal */ +export interface SignalStatus { + /** Health state of this signal */ + readonly healthState?: HealthState; + /** Reported value of the signal */ + readonly value?: number; + /** Timestamp when the value was reported */ + readonly reportedAt?: Date; + /** Error message if the signal status cannot be retrieved */ + readonly error?: string; +} + +export function signalStatusDeserializer(item: any): SignalStatus { + return { + healthState: item["healthState"], + value: item["value"], + reportedAt: !item["reportedAt"] ? item["reportedAt"] : new Date(item["reportedAt"]), + error: item["error"], + }; +} + /** The response of a Entity list operation. */ export interface _EntityListResult { /** The Entity items on this page */ @@ -1768,6 +1988,176 @@ export function entityArrayDeserializer(result: Array): any[] { }); } +/** Request body for getting entity health history */ +export interface EntityHistoryRequest { + /** Start time for the history query. Defaults to 24 hours ago if not specified. */ + startAt?: Date; + /** End time for the history query. Defaults to now if not specified. */ + endAt?: Date; +} + +export function entityHistoryRequestSerializer(item: EntityHistoryRequest): any { + return { + startAt: !item["startAt"] ? item["startAt"] : item["startAt"].toISOString(), + endAt: !item["endAt"] ? item["endAt"] : item["endAt"].toISOString(), + }; +} + +/** Response containing entity health state transitions */ +export interface EntityHistoryResponse { + /** Name of the entity */ + entityName: string; + /** List of health state transitions */ + history: HealthStateTransition[]; +} + +export function entityHistoryResponseDeserializer(item: any): EntityHistoryResponse { + return { + entityName: item["entityName"], + history: healthStateTransitionArrayDeserializer(item["history"]), + }; +} + +export function healthStateTransitionArrayDeserializer( + result: Array, +): any[] { + return result.map((item) => { + return healthStateTransitionDeserializer(item); + }); +} + +/** A health state transition record */ +export interface HealthStateTransition { + /** Previous health state before the transition */ + previousState: HealthState; + /** New health state after the transition */ + newState: HealthState; + /** Timestamp when the transition occurred */ + occurredAt: Date; + /** Reason of the transition */ + reason?: string; +} + +export function healthStateTransitionDeserializer(item: any): HealthStateTransition { + return { + previousState: item["previousState"], + newState: item["newState"], + occurredAt: new Date(item["occurredAt"]), + reason: item["reason"], + }; +} + +/** Request body for getting signal history */ +export interface SignalHistoryRequest { + /** Name of the signal to get history for */ + signalName: string; + /** Start time for the history query. Defaults to 24 hours ago if not specified. */ + startAt?: Date; + /** End time for the history query. Defaults to now if not specified. */ + endAt?: Date; +} + +export function signalHistoryRequestSerializer(item: SignalHistoryRequest): any { + return { + signalName: item["signalName"], + startAt: !item["startAt"] ? item["startAt"] : item["startAt"].toISOString(), + endAt: !item["endAt"] ? item["endAt"] : item["endAt"].toISOString(), + }; +} + +/** Response containing signal history */ +export interface SignalHistoryResponse { + /** Name of the entity */ + entityName: string; + /** Name of the signal */ + signalName: string; + /** Signal history data points */ + history: SignalHistoryDataPoint[]; +} + +export function signalHistoryResponseDeserializer(item: any): SignalHistoryResponse { + return { + entityName: item["entityName"], + signalName: item["signalName"], + history: signalHistoryDataPointArrayDeserializer(item["history"]), + }; +} + +export function signalHistoryDataPointArrayDeserializer( + result: Array, +): any[] { + return result.map((item) => { + return signalHistoryDataPointDeserializer(item); + }); +} + +/** A data point in the signal time series */ +export interface SignalHistoryDataPoint { + /** Timestamp of the data point */ + occurredAt: Date; + /** Signal value at this point in time */ + value?: number; + /** Health state at this point in time */ + healthState: HealthState; + /** Additional context as provided by the submitter */ + additionalContext?: string; +} + +export function signalHistoryDataPointDeserializer(item: any): SignalHistoryDataPoint { + return { + occurredAt: new Date(item["occurredAt"]), + value: item["value"], + healthState: item["healthState"], + additionalContext: item["additionalContext"], + }; +} + +/** Health report that's submitted for a specific signal */ +export interface HealthReportRequest { + /** Name of the entity signal to report health for */ + signalName: string; + /** Health state to report for the signal */ + healthState: HealthState; + /** Reported value of the signal */ + value?: number; + /** Evaluation rules that were used to determine the reported health state */ + evaluationRules?: HealthReportEvaluationRule; + /** Number of minutes until the health report expires. Defaults to 60 (1 hour) if not specified. */ + expiresInMinutes?: number; + /** Optional additional context or description for the health report */ + additionalContext?: string; +} + +export function healthReportRequestSerializer(item: HealthReportRequest): any { + return { + signalName: item["signalName"], + healthState: item["healthState"], + value: item["value"], + evaluationRules: !item["evaluationRules"] + ? item["evaluationRules"] + : healthReportEvaluationRuleSerializer(item["evaluationRules"]), + expiresInMinutes: item["expiresInMinutes"], + additionalContext: item["additionalContext"], + }; +} + +/** Evaluation rules for the health report */ +export interface HealthReportEvaluationRule { + /** Degraded rule with static threshold. */ + degradedRule?: ThresholdRuleV2; + /** Unhealthy rule with static threshold. */ + unhealthyRule: ThresholdRuleV2; +} + +export function healthReportEvaluationRuleSerializer(item: HealthReportEvaluationRule): any { + return { + degradedRule: !item["degradedRule"] + ? item["degradedRule"] + : thresholdRuleV2Serializer(item["degradedRule"]), + unhealthyRule: thresholdRuleV2Serializer(item["unhealthyRule"]), + }; +} + /** A relationship (aka edge) between two entities in a health model */ export interface Relationship extends ProxyResource { /** The resource-specific properties for this resource. */ @@ -1806,12 +2196,10 @@ export interface RelationshipProperties { parentEntityName: string; /** Resource name of the child entity */ childEntityName: string; - /** Optional set of labels (key-value pairs) */ - labels?: Record; + /** Optional set of tags (key-value pairs) */ + tags?: Record; /** Discovered by which discovery rule. If set, the relationship cannot be deleted manually. */ readonly discoveredBy?: string; - /** Date when the relationship was (soft-)deleted */ - readonly deletionDate?: Date; } export function relationshipPropertiesSerializer(item: RelationshipProperties): any { @@ -1819,7 +2207,7 @@ export function relationshipPropertiesSerializer(item: RelationshipProperties): displayName: item["displayName"], parentEntityName: item["parentEntityName"], childEntityName: item["childEntityName"], - labels: item["labels"], + tags: item["tags"], }; } @@ -1829,9 +2217,10 @@ export function relationshipPropertiesDeserializer(item: any): RelationshipPrope displayName: item["displayName"], parentEntityName: item["parentEntityName"], childEntityName: item["childEntityName"], - labels: item["labels"], + tags: !item["tags"] + ? item["tags"] + : Object.fromEntries(Object.entries(item["tags"]).map(([k, p]: [string, any]) => [k, p])), discoveredBy: item["discoveredBy"], - deletionDate: !item["deletionDate"] ? item["deletionDate"] : new Date(item["deletionDate"]), }; } @@ -1868,14 +2257,6 @@ export interface DiscoveryRule extends ProxyResource { properties?: DiscoveryRuleProperties; } -export function discoveryRuleSerializer(item: DiscoveryRule): any { - return { - properties: !item["properties"] - ? item["properties"] - : discoveryRulePropertiesSerializer(item["properties"]), - }; -} - export function discoveryRuleDeserializer(item: any): DiscoveryRule { return { id: item["id"], @@ -1896,45 +2277,29 @@ export interface DiscoveryRuleProperties { readonly provisioningState?: HealthModelProvisioningState; /** Display name */ displayName?: string; - /** Azure Resource Graph query text in KQL syntax. The query must return at least a column named 'id' which contains the resource ID of the discovered resources. */ - resourceGraphQuery: string; /** Reference to the name of the authentication setting which is used for querying Azure Resource Graph. The same authentication setting will also be assigned to any discovered entities. */ authenticationSetting: string; /** Whether to create relationships between the discovered entities based on a set of built-in rules. These relationships cannot be manually deleted. */ discoverRelationships: DiscoveryRuleRelationshipDiscoveryBehavior; /** Whether to add all recommended signals to the discovered entities. */ addRecommendedSignals: DiscoveryRuleRecommendedSignalsBehavior; - /** Date when the discovery rule was (soft-)deleted. */ - readonly deletionDate?: Date; - /** Error message if the last discovery operation failed. */ - readonly errorMessage?: string; - /** Number of discovered entities in the last discovery operation. */ - readonly numberOfDiscoveredEntities?: number; + /** Specification of the discovery rule defining how entities are discovered. */ + specification: DiscoveryRuleSpecificationUnion; + /** Error details if the last discovery operation failed. */ + readonly error?: DiscoveryError; /** Name of the entity which represents the discovery rule. Note: It might take a few minutes after creating the discovery rule until the entity is created. */ readonly entityName: string; } -export function discoveryRulePropertiesSerializer(item: DiscoveryRuleProperties): any { - return { - displayName: item["displayName"], - resourceGraphQuery: item["resourceGraphQuery"], - authenticationSetting: item["authenticationSetting"], - discoverRelationships: item["discoverRelationships"], - addRecommendedSignals: item["addRecommendedSignals"], - }; -} - export function discoveryRulePropertiesDeserializer(item: any): DiscoveryRuleProperties { return { provisioningState: item["provisioningState"], displayName: item["displayName"], - resourceGraphQuery: item["resourceGraphQuery"], authenticationSetting: item["authenticationSetting"], discoverRelationships: item["discoverRelationships"], addRecommendedSignals: item["addRecommendedSignals"], - deletionDate: !item["deletionDate"] ? item["deletionDate"] : new Date(item["deletionDate"]), - errorMessage: item["errorMessage"], - numberOfDiscoveredEntities: item["numberOfDiscoveredEntities"], + specification: discoveryRuleSpecificationUnionDeserializer(item["specification"]), + error: !item["error"] ? item["error"] : discoveryErrorDeserializer(item["error"]), entityName: item["entityName"], }; } @@ -1957,6 +2322,205 @@ export enum KnownDiscoveryRuleRelationshipDiscoveryBehavior { */ export type DiscoveryRuleRelationshipDiscoveryBehavior = string; +/** Discovery rule recommended signal behavior */ +export enum KnownDiscoveryRuleRecommendedSignalsBehavior { + /** Automatically add recommended signals */ + Enabled = "Enabled", + /** Do not automatically add recommended signals */ + Disabled = "Disabled", +} + +/** + * Discovery rule recommended signal behavior \ + * {@link KnownDiscoveryRuleRecommendedSignalsBehavior} can be used interchangeably with DiscoveryRuleRecommendedSignalsBehavior, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Enabled**: Automatically add recommended signals \ + * **Disabled**: Do not automatically add recommended signals + */ +export type DiscoveryRuleRecommendedSignalsBehavior = string; + +/** Base model for discovery rule specifications */ +export interface DiscoveryRuleSpecification { + /** Kind of the discovery rule specification */ + /** The discriminator possible values: ResourceGraphQuery, ApplicationInsightsTopology */ + kind: DiscoveryRuleKind; +} + +export function discoveryRuleSpecificationSerializer(item: DiscoveryRuleSpecification): any { + return { kind: item["kind"] }; +} + +export function discoveryRuleSpecificationDeserializer(item: any): DiscoveryRuleSpecification { + return { + kind: item["kind"], + }; +} + +/** Alias for DiscoveryRuleSpecificationUnion */ +export type DiscoveryRuleSpecificationUnion = + | ResourceGraphQuerySpecification + | ApplicationInsightsTopologySpecification + | DiscoveryRuleSpecification; + +export function discoveryRuleSpecificationUnionSerializer( + item: DiscoveryRuleSpecificationUnion, +): any { + switch (item.kind) { + case "ResourceGraphQuery": + return resourceGraphQuerySpecificationSerializer(item as ResourceGraphQuerySpecification); + + case "ApplicationInsightsTopology": + return applicationInsightsTopologySpecificationSerializer( + item as ApplicationInsightsTopologySpecification, + ); + + default: + return discoveryRuleSpecificationSerializer(item); + } +} + +export function discoveryRuleSpecificationUnionDeserializer( + item: any, +): DiscoveryRuleSpecificationUnion { + switch (item["kind"]) { + case "ResourceGraphQuery": + return resourceGraphQuerySpecificationDeserializer(item as ResourceGraphQuerySpecification); + + case "ApplicationInsightsTopology": + return applicationInsightsTopologySpecificationDeserializer( + item as ApplicationInsightsTopologySpecification, + ); + + default: + return discoveryRuleSpecificationDeserializer(item); + } +} + +/** Discovery rule specification kind discriminator */ +export enum KnownDiscoveryRuleKind { + /** Azure Resource Graph query based discovery */ + ResourceGraphQuery = "ResourceGraphQuery", + /** Application Insights topology based discovery */ + ApplicationInsightsTopology = "ApplicationInsightsTopology", +} + +/** + * Discovery rule specification kind discriminator \ + * {@link KnownDiscoveryRuleKind} can be used interchangeably with DiscoveryRuleKind, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **ResourceGraphQuery**: Azure Resource Graph query based discovery \ + * **ApplicationInsightsTopology**: Application Insights topology based discovery + */ +export type DiscoveryRuleKind = string; + +/** Discovery rule specification for an Azure Resource Graph query */ +export interface ResourceGraphQuerySpecification extends DiscoveryRuleSpecification { + /** Kind of the discovery rule specification */ + kind: "ResourceGraphQuery"; + /** Azure Resource Graph query text in KQL syntax. The query must return at least a column named 'id' which contains the resource ID of the discovered resources. */ + resourceGraphQuery: string; +} + +export function resourceGraphQuerySpecificationSerializer( + item: ResourceGraphQuerySpecification, +): any { + return { kind: item["kind"], resourceGraphQuery: item["resourceGraphQuery"] }; +} + +export function resourceGraphQuerySpecificationDeserializer( + item: any, +): ResourceGraphQuerySpecification { + return { + kind: item["kind"], + resourceGraphQuery: item["resourceGraphQuery"], + }; +} + +/** Discovery rule specification for an Application Insights topology query */ +export interface ApplicationInsightsTopologySpecification extends DiscoveryRuleSpecification { + /** Kind of the discovery rule specification */ + kind: "ApplicationInsightsTopology"; + /** Application Insights resource ID */ + applicationInsightsResourceId: string; +} + +export function applicationInsightsTopologySpecificationSerializer( + item: ApplicationInsightsTopologySpecification, +): any { + return { + kind: item["kind"], + applicationInsightsResourceId: item["applicationInsightsResourceId"], + }; +} + +export function applicationInsightsTopologySpecificationDeserializer( + item: any, +): ApplicationInsightsTopologySpecification { + return { + kind: item["kind"], + applicationInsightsResourceId: item["applicationInsightsResourceId"], + }; +} + +/** Error details for a failed discovery operation */ +export interface DiscoveryError { + /** Error message */ + readonly message: string; + /** Additional context information, like resource IDs or query details */ + readonly context?: string[]; +} + +export function discoveryErrorDeserializer(item: any): DiscoveryError { + return { + message: item["message"], + context: !item["context"] + ? item["context"] + : item["context"].map((p: any) => { + return p; + }), + }; +} + +/** Discovery rule resource for create/update operations. */ +export interface DiscoveryRuleResourceCreate extends ProxyResource { + /** The resource-specific properties for this resource. */ + properties?: DiscoveryRulePropertiesCreate; +} + +export function discoveryRuleResourceCreateSerializer(item: DiscoveryRuleResourceCreate): any { + return { + properties: !item["properties"] + ? item["properties"] + : discoveryRulePropertiesCreateSerializer(item["properties"]), + }; +} + +/** Discovery rule properties for create/update operations, omitting server-side read-only fields (entityName is required+read-only in the canonical model). */ +export interface DiscoveryRulePropertiesCreate { + /** Display name */ + displayName?: string; + /** Reference to the name of the authentication setting which is used for querying Azure Resource Graph. The same authentication setting will also be assigned to any discovered entities. */ + authenticationSetting: string; + /** Whether to create relationships between the discovered entities based on a set of built-in rules. These relationships cannot be manually deleted. */ + discoverRelationships: DiscoveryRuleRelationshipDiscoveryBehavior; + /** Whether to add all recommended signals to the discovered entities. */ + addRecommendedSignals: DiscoveryRuleRecommendedSignalsBehavior; + /** Specification of the discovery rule defining how entities are discovered. */ + specification: DiscoveryRuleSpecificationUnion; +} + +export function discoveryRulePropertiesCreateSerializer(item: DiscoveryRulePropertiesCreate): any { + return { + displayName: item["displayName"], + authenticationSetting: item["authenticationSetting"], + discoverRelationships: item["discoverRelationships"], + addRecommendedSignals: item["addRecommendedSignals"], + specification: discoveryRuleSpecificationUnionSerializer(item["specification"]), + }; +} + /** The response of a DiscoveryRule list operation. */ export interface _DiscoveryRuleListResult { /** The DiscoveryRule items on this page */ @@ -1972,12 +2536,6 @@ export function _discoveryRuleListResultDeserializer(item: any): _DiscoveryRuleL }; } -export function discoveryRuleArraySerializer(result: Array): any[] { - return result.map((item) => { - return discoveryRuleSerializer(item); - }); -} - export function discoveryRuleArrayDeserializer(result: Array): any[] { return result.map((item) => { return discoveryRuleDeserializer(item); @@ -1988,4 +2546,6 @@ export function discoveryRuleArrayDeserializer(result: Array): an export enum KnownVersions { /** 2025-05-01-preview */ V20250501Preview = "2025-05-01-preview", + /** 2026-01-01-preview */ + V20260101Preview = "2026-01-01-preview", } diff --git a/sdk/cloudhealth/arm-cloudhealth/src/restorePollerHelpers.ts b/sdk/cloudhealth/arm-cloudhealth/src/restorePollerHelpers.ts index b03f77e9b282..bdeb55727a6c 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/restorePollerHelpers.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/restorePollerHelpers.ts @@ -1,21 +1,37 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { CloudHealthClient } from "./cloudHealthClient.js"; +import type { CloudHealthClient } from "./cloudHealthClient.js"; import { _$deleteDeserialize, + _createOrUpdateDeserialize, +} from "./api/discoveryRules/operations.js"; +import { + _$deleteDeserialize as _$deleteDeserializeRelationships, + _createOrUpdateDeserialize as _createOrUpdateDeserializeRelationships, +} from "./api/relationships/operations.js"; +import { + _$deleteDeserialize as _$deleteDeserializeEntities, + _createOrUpdateDeserialize as _createOrUpdateDeserializeEntities, +} from "./api/entities/operations.js"; +import { + _$deleteDeserialize as _$deleteDeserializeAuthenticationSettings, + _createOrUpdateDeserialize as _createOrUpdateDeserializeAuthenticationSettings, +} from "./api/authenticationSettings/operations.js"; +import { + _$deleteDeserialize as _$deleteDeserializeSignalDefinitions, + _createOrUpdateDeserialize as _createOrUpdateDeserializeSignalDefinitions, +} from "./api/signalDefinitions/operations.js"; +import { + _$deleteDeserialize as _$deleteDeserializeHealthModels, _updateDeserialize, _createDeserialize, } from "./api/healthModels/operations.js"; import { getLongRunningPoller } from "./static-helpers/pollingHelpers.js"; -import { OperationOptions, PathUncheckedResponse } from "@azure-rest/core-client"; -import { AbortSignalLike } from "@azure/abort-controller"; -import { - PollerLike, - OperationState, - deserializeState, - ResourceLocationConfig, -} from "@azure/core-lro"; +import type { OperationOptions, PathUncheckedResponse } from "@azure-rest/core-client"; +import type { AbortSignalLike } from "@azure/abort-controller"; +import type { PollerLike, OperationState, ResourceLocationConfig } from "@azure/core-lro"; +import { deserializeState } from "@azure/core-lro"; export interface RestorePollerOptions< TResult, @@ -60,6 +76,7 @@ export function restorePoller( `Please ensure the operation is in this client! We can't find its deserializeHelper for ${sourceOperation?.name}.`, ); } + const apiVersion = getApiVersionFromUrl(initialRequestUrl); return getLongRunningPoller( (client as any)["_client"] ?? client, deserializeHelper as (result: TResponse) => Promise, @@ -70,25 +87,55 @@ export function restorePoller( resourceLocationConfig, restoreFrom: serializedState, initialRequestUrl, + apiVersion, }, ); } interface DeserializationHelper { - deserializer: Function; + deserializer: (result: PathUncheckedResponse) => Promise; expectedStatuses: string[]; } const deserializeMap: Record = { - "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}": + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/discoveryrules/{discoveryRuleName}": + { deserializer: _$deleteDeserialize, expectedStatuses: ["202", "204", "200"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/discoveryrules/{discoveryRuleName}": + { deserializer: _createOrUpdateDeserialize, expectedStatuses: ["200", "201", "202"] }, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/relationships/{relationshipName}": + { deserializer: _$deleteDeserializeRelationships, expectedStatuses: ["202", "204", "200"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/relationships/{relationshipName}": + { + deserializer: _createOrUpdateDeserializeRelationships, + expectedStatuses: ["200", "201", "202"], + }, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/entities/{entityName}": + { deserializer: _$deleteDeserializeEntities, expectedStatuses: ["202", "204", "200"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/entities/{entityName}": + { deserializer: _createOrUpdateDeserializeEntities, expectedStatuses: ["200", "201", "202"] }, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/authenticationsettings/{authenticationSettingName}": { - deserializer: _$deleteDeserialize, + deserializer: _$deleteDeserializeAuthenticationSettings, expectedStatuses: ["202", "204", "200"], }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/authenticationsettings/{authenticationSettingName}": + { + deserializer: _createOrUpdateDeserializeAuthenticationSettings, + expectedStatuses: ["200", "201", "202"], + }, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/signaldefinitions/{signalDefinitionName}": + { deserializer: _$deleteDeserializeSignalDefinitions, expectedStatuses: ["202", "204", "200"] }, + "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}/signaldefinitions/{signalDefinitionName}": + { + deserializer: _createOrUpdateDeserializeSignalDefinitions, + expectedStatuses: ["200", "201", "202"], + }, + "DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}": + { deserializer: _$deleteDeserializeHealthModels, expectedStatuses: ["202", "204", "200"] }, "PATCH /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}": - { deserializer: _updateDeserialize, expectedStatuses: ["200", "202"] }, + { deserializer: _updateDeserialize, expectedStatuses: ["200", "202", "201"] }, "PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CloudHealth/healthmodels/{healthModelName}": - { deserializer: _createDeserialize, expectedStatuses: ["200", "201"] }, + { deserializer: _createDeserialize, expectedStatuses: ["200", "201", "202"] }, }; function getDeserializationHelper( @@ -160,3 +207,8 @@ function getPathFromMapKey(mapKey: string): string { const pathStart = mapKey.indexOf("/"); return mapKey.slice(pathStart); } + +function getApiVersionFromUrl(urlStr: string): string | undefined { + const url = new URL(urlStr); + return url.searchParams.get("api-version") ?? undefined; +} diff --git a/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/cloudSettingHelpers.ts b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/cloudSettingHelpers.ts new file mode 100644 index 000000000000..613112c6e397 --- /dev/null +++ b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/cloudSettingHelpers.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * An enum to describe Azure Cloud environments. + * @enum {string} + */ +export enum AzureClouds { + /** Azure public cloud, which is the default cloud for Azure SDKs. */ + AZURE_PUBLIC_CLOUD = "AZURE_PUBLIC_CLOUD", + /** Azure China cloud */ + AZURE_CHINA_CLOUD = "AZURE_CHINA_CLOUD", + /** Azure US government cloud */ + AZURE_US_GOVERNMENT = "AZURE_US_GOVERNMENT", +} + +/** The supported values for cloud setting as a string literal type */ +export type AzureSupportedClouds = `${AzureClouds}`; + +/** + * Gets the Azure Resource Manager endpoint URL for the specified cloud setting. + * @param cloudSetting - The Azure cloud environment setting. Use one of the AzureClouds enum values. + * @returns The ARM endpoint URL for the specified cloud, or undefined if cloudSetting is undefined. + * @throws {Error} Throws an error if an unknown cloud setting is provided. + */ +export function getArmEndpoint(cloudSetting?: AzureSupportedClouds): string | undefined { + if (cloudSetting === undefined) { + return undefined; + } + const cloudEndpoints: Record = { + AZURE_CHINA_CLOUD: "https://management.chinacloudapi.cn/", + AZURE_US_GOVERNMENT: "https://management.usgovcloudapi.net/", + AZURE_PUBLIC_CLOUD: "https://management.azure.com/", + }; + if (cloudSetting in cloudEndpoints) { + return cloudEndpoints[cloudSetting]; + } else { + throw new Error( + `Unknown cloud setting: ${cloudSetting}. Please refer to the enum AzureClouds for possible values.`, + ); + } +} diff --git a/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pagingHelpers.ts b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pagingHelpers.ts index ce33af5f4178..4b0ff077dafd 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pagingHelpers.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pagingHelpers.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { Client, createRestError, PathUncheckedResponse } from "@azure-rest/core-client"; +import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError } from "@azure-rest/core-client"; import { RestError } from "@azure/core-rest-pipeline"; /** @@ -79,6 +80,8 @@ export interface PagedResult< export interface BuildPagedAsyncIteratorOptions { itemName?: string; nextLinkName?: string; + nextLinkMethod?: "GET" | "POST"; + apiVersion?: string; } /** @@ -98,12 +101,20 @@ export function buildPagedAsyncIterator< ): PagedAsyncIterableIterator { const itemName = options.itemName ?? "value"; const nextLinkName = options.nextLinkName ?? "nextLink"; + const nextLinkMethod = options.nextLinkMethod ?? "GET"; + const apiVersion = options.apiVersion; const pagedResult: PagedResult = { getPage: async (pageLink?: string) => { - const result = - pageLink === undefined - ? await getInitialResponse() - : await client.pathUnchecked(pageLink).get(); + let result; + if (pageLink === undefined) { + result = await getInitialResponse(); + } else { + const resolvedPageLink = apiVersion ? addApiVersionToUrl(pageLink, apiVersion) : pageLink; + result = + nextLinkMethod === "POST" + ? await client.pathUnchecked(resolvedPageLink).post() + : await client.pathUnchecked(resolvedPageLink).get(); + } checkPagingRequest(result, expectedStatuses); const results = await processResponseBody(result as TResponse); const nextLink = getNextLink(results, nextLinkName); @@ -239,3 +250,19 @@ function checkPagingRequest(response: PathUncheckedResponse, expectedStatuses: s ); } } + +/** + * Adds the api-version query parameter on a URL if it's not present. + * @param url - the URL to modify + * @param apiVersion - the API version to set + * @returns - the URL with the api-version query parameter set + */ +function addApiVersionToUrl(url: string, apiVersion: string): string { + // The base URL is only used for parsing and won't appear in the returned URL + const urlObj = new URL(url, "https://microsoft.com"); + if (!urlObj.searchParams.get("api-version")) { + // Append one if there is no apiVersion + return `${url}${urlObj.search ? "&" : "?"}api-version=${apiVersion}`; + } + return url; +} diff --git a/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pollingHelpers.ts b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pollingHelpers.ts index f01c41bab69d..5c66c00d28e8 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pollingHelpers.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/pollingHelpers.ts @@ -1,17 +1,18 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { +import type { PollerLike, OperationState, ResourceLocationConfig, RunningOperation, - createHttpPoller, OperationResponse, } from "@azure/core-lro"; +import { createHttpPoller } from "@azure/core-lro"; -import { Client, PathUncheckedResponse, createRestError } from "@azure-rest/core-client"; -import { AbortSignalLike } from "@azure/abort-controller"; +import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; +import { createRestError } from "@azure-rest/core-client"; +import type { AbortSignalLike } from "@azure/abort-controller"; export interface GetLongRunningPollerOptions { /** Delay to wait until next poll, in milliseconds. */ @@ -37,6 +38,10 @@ export interface GetLongRunningPollerOptions { * The function to get the initial response */ getInitialResponse?: () => PromiseLike; + /** + * The api-version of the LRO + */ + apiVersion?: string; } export function getLongRunningPoller( client: Client, @@ -44,7 +49,7 @@ export function getLongRunningPoller, ): PollerLike, TResult> { - const { restoreFrom, getInitialResponse } = options; + const { restoreFrom, getInitialResponse, apiVersion } = options; if (!restoreFrom && !getInitialResponse) { throw new Error("Either restoreFrom or getInitialResponse must be specified"); } @@ -83,7 +88,8 @@ export function getLongRunningPoller( }, }; } + +/** + * Adds the api-version query parameter on a URL if it's not present. + * @param url - the URL to modify + * @param apiVersion - the API version to set + * @returns - the URL with the api-version query parameter set + */ +function addApiVersionToUrl(url: string, apiVersion: string): string { + // The base URL is only used for parsing and won't appear in the returned URL + const urlObj = new URL(url, "https://microsoft.com"); + if (!urlObj.searchParams.get("api-version")) { + // Append one if there is no apiVersion + return `${url}${urlObj.search ? "&" : "?"}api-version=${apiVersion}`; + } + return url; +} diff --git a/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/urlTemplate.ts b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/urlTemplate.ts index 9aac558fb377..4baa60cd99d0 100644 --- a/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/urlTemplate.ts +++ b/sdk/cloudhealth/arm-cloudhealth/src/static-helpers/urlTemplate.ts @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -//--------------------- +// --------------------- // interfaces -//--------------------- +// --------------------- interface ValueOptions { isFirst: boolean; // is first value in the expression op?: string; // operator @@ -21,27 +21,27 @@ export interface UrlTemplateOptions { // --------------------- // helpers // --------------------- -function encodeComponent(val: string, reserved?: boolean, op?: string) { +function encodeComponent(val: string, reserved?: boolean, op?: string): string { return (reserved ?? op === "+") || op === "#" ? encodeReservedComponent(val) : encodeRFC3986URIComponent(val); } -function encodeReservedComponent(str: string) { +function encodeReservedComponent(str: string): string { return str .split(/(%[0-9A-Fa-f]{2})/g) .map((part) => (!/%[0-9A-Fa-f]/.test(part) ? encodeURI(part) : part)) .join(""); } -function encodeRFC3986URIComponent(str: string) { +function encodeRFC3986URIComponent(str: string): string { return encodeURIComponent(str).replace( /[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, ); } -function isDefined(val: any) { +function isDefined(val: any): boolean { return val !== undefined && val !== null; } @@ -49,7 +49,7 @@ function getNamedAndIfEmpty(op?: string): [boolean, string] { return [!!op && [";", "?", "&"].includes(op), !!op && ["?", "&"].includes(op) ? "=" : ""]; } -function getFirstOrSep(op?: string, isFirst = false) { +function getFirstOrSep(op?: string, isFirst = false): string { if (isFirst) { return !op || op === "+" ? "" : op; } else if (!op || op === "+" || op === "#") { @@ -61,7 +61,7 @@ function getFirstOrSep(op?: string, isFirst = false) { } } -function getExpandedValue(option: ValueOptions) { +function getExpandedValue(option: ValueOptions): string { let isFirst = option.isFirst; const { op, varName, varValue: value, reserved } = option; const vals: string[] = []; @@ -73,7 +73,11 @@ function getExpandedValue(option: ValueOptions) { vals.push(`${getFirstOrSep(op, isFirst)}`); if (named && varName) { vals.push(`${encodeURIComponent(varName)}`); - val === "" ? vals.push(ifEmpty) : vals.push("="); + if (val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } } vals.push(encodeComponent(val, reserved, op)); isFirst = false; @@ -88,7 +92,11 @@ function getExpandedValue(option: ValueOptions) { vals.push(`${getFirstOrSep(op, isFirst)}`); if (key) { vals.push(`${encodeURIComponent(key)}`); - named && val === "" ? vals.push(ifEmpty) : vals.push("="); + if (named && val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } } vals.push(encodeComponent(val, reserved, op)); isFirst = false; @@ -97,7 +105,7 @@ function getExpandedValue(option: ValueOptions) { return vals.join(""); } -function getNonExpandedValue(option: ValueOptions) { +function getNonExpandedValue(option: ValueOptions): string | undefined { const { op, varName, varValue: value, isFirst, reserved } = option; const vals: string[] = []; const first = getFirstOrSep(op, isFirst); @@ -143,7 +151,11 @@ function getVarValue(option: ValueOptions): string | undefined { if (named && varName) { // No need to encode varName considering it is already encoded vals.push(varName); - val === "" ? vals.push(ifEmpty) : vals.push("="); + if (val === "") { + vals.push(ifEmpty); + } else { + vals.push("="); + } } if (modifier && modifier !== "*") { val = val.substring(0, parseInt(modifier, 10)); @@ -165,23 +177,24 @@ export function expandUrlTemplate( context: Record, option?: UrlTemplateOptions, ): string { - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, (_, expr, text) => { + const result = template.replace(/\{([^{}]+)\}|([^{}]+)/g, (_, expr, text) => { if (!expr) { return encodeReservedComponent(text); } let op; if (["+", "#", ".", "/", ";", "?", "&"].includes(expr[0])) { - ((op = expr[0]), (expr = expr.slice(1))); + op = expr[0]; + expr = expr.slice(1); } const varList = expr.split(/,/g); - const result = []; + const innerResult = []; for (const varSpec of varList) { - const varMatch = /([^:\*]*)(?::(\d+)|(\*))?/.exec(varSpec); + const varMatch = /([^:*]*)(?::(\d+)|(\*))?/.exec(varSpec); if (!varMatch || !varMatch[1]) { continue; } const varValue = getVarValue({ - isFirst: result.length === 0, + isFirst: innerResult.length === 0, op, varValue: context[varMatch[1]], varName: varMatch[1], @@ -189,9 +202,26 @@ export function expandUrlTemplate( reserved: option?.allowReserved, }); if (varValue) { - result.push(varValue); + innerResult.push(varValue); } } - return result.join(""); + return innerResult.join(""); + }); + + return normalizeUnreserved(result); +} + +/** + * Normalize an expanded URI by decoding percent-encoded unreserved characters. + * RFC 3986 unreserved: ALPHA / DIGIT / "-" / "." / "_" / "~" + */ +function normalizeUnreserved(uri: string): string { + return uri.replace(/%([0-9A-Fa-f]{2})/g, (match, hex) => { + const char = String.fromCharCode(parseInt(hex, 16)); + // Decode only if it's unreserved + if (/[-._~]/.test(char)) { + return char; + } + return match; // leave other encodings intact }); } diff --git a/sdk/cloudhealth/arm-cloudhealth/test/public/healthCloud.spec.ts b/sdk/cloudhealth/arm-cloudhealth/test/public/healthCloud.spec.ts index 9d02ba3ae905..26cf5aeb6128 100644 --- a/sdk/cloudhealth/arm-cloudhealth/test/public/healthCloud.spec.ts +++ b/sdk/cloudhealth/arm-cloudhealth/test/public/healthCloud.spec.ts @@ -5,7 +5,8 @@ * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ -import { env, Recorder, isPlaybackMode } from "@azure-tools/test-recorder"; +import type { Recorder } from "@azure-tools/test-recorder"; +import { env, isPlaybackMode } from "@azure-tools/test-recorder"; import { createTestCredential } from "@azure-tools/test-credential"; import { assert, beforeEach, afterEach, it, describe } from "vitest"; import { createRecorder } from "./utils/recordedClient.js"; @@ -34,7 +35,7 @@ describe("CloudHealth test", () => { }); it.skip("operations list test", async function () { const resArray = new Array(); - for await (let item of client.operations.list()) { + for await (const item of client.operations.list()) { resArray.push(item); } assert.notEqual(resArray.length, 0); diff --git a/sdk/cloudhealth/arm-cloudhealth/test/public/utils/recordedClient.ts b/sdk/cloudhealth/arm-cloudhealth/test/public/utils/recordedClient.ts index 14dcd9fa397c..285e4643c45e 100644 --- a/sdk/cloudhealth/arm-cloudhealth/test/public/utils/recordedClient.ts +++ b/sdk/cloudhealth/arm-cloudhealth/test/public/utils/recordedClient.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { Recorder, RecorderStartOptions, VitestTestContext } from "@azure-tools/test-recorder"; +import type { RecorderStartOptions, VitestTestContext } from "@azure-tools/test-recorder"; +import { Recorder } from "@azure-tools/test-recorder"; const replaceableVariables: Record = { SUBSCRIPTION_ID: "azure_subscription_id", diff --git a/sdk/cloudhealth/arm-cloudhealth/tsp-location.yaml b/sdk/cloudhealth/arm-cloudhealth/tsp-location.yaml index 248ebd54c8d7..519359785789 100644 --- a/sdk/cloudhealth/arm-cloudhealth/tsp-location.yaml +++ b/sdk/cloudhealth/arm-cloudhealth/tsp-location.yaml @@ -1,4 +1,4 @@ directory: specification/cloudhealth/CloudHealth.Management -commit: 0bf123645e53f9006c15a962087c9073d7fd455f +commit: 969cdf203d7093f4947ddaea9bc10010c7b6de83 repo: Azure/azure-rest-api-specs additionalDirectories: diff --git a/sdk/cloudhealth/arm-cloudhealth/warp.config.yml b/sdk/cloudhealth/arm-cloudhealth/warp.config.yml index 326e6c0415c8..714fe3c0123b 100644 --- a/sdk/cloudhealth/arm-cloudhealth/warp.config.yml +++ b/sdk/cloudhealth/arm-cloudhealth/warp.config.yml @@ -1,5 +1,17 @@ +# warp.config.yml — build configuration -extends: ../../../warp.base.config.yml +exports: + "./package.json": "./package.json" + ".": "./src/index.ts" + "./api": "./src/api/index.ts" + "./api/discoveryRules": "./src/api/discoveryRules/index.ts" + "./api/relationships": "./src/api/relationships/index.ts" + "./api/entities": "./src/api/entities/index.ts" + "./api/authenticationSettings": "./src/api/authenticationSettings/index.ts" + "./api/signalDefinitions": "./src/api/signalDefinitions/index.ts" + "./api/healthModels": "./src/api/healthModels/index.ts" + "./api/operations": "./src/api/operations/index.ts" + "./models": "./src/models/index.ts" targets: - name: browser