From df2d673b3f012206217ddd255d321e79bda675d5 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Mon, 12 Feb 2024 10:33:22 -0800 Subject: [PATCH] Upgrade terraform-provider-datadog to v3.36.0 (#451) This PR was generated via `$ upgrade-provider pulumi/pulumi-datadog`. --- - Upgrading terraform-provider-datadog from 3.35.0 to 3.36.0. Fixes #445 --- .../bridge-metadata.json | 225 +- .../cmd/pulumi-resource-datadog/schema.json | 686 +++- provider/go.mod | 4 +- provider/go.sum | 8 +- sdk/dotnet/GetApiKey.cs | 19 + sdk/dotnet/GetApplicationKey.cs | 19 + .../GetSecurityMonitoringSuppressions.cs | 57 + .../GetSensitiveDataScannerStandardPattern.cs | 7 + .../Inputs/LogsIndexDailyLimitResetArgs.cs | 32 + .../Inputs/LogsIndexDailyLimitResetGetArgs.cs | 32 + .../SecurityMonitoringRuleOptionsArgs.cs | 14 +- .../SecurityMonitoringRuleOptionsGetArgs.cs | 14 +- ...ingRuleOptionsThirdPartyRuleOptionsArgs.cs | 56 + ...RuleOptionsThirdPartyRuleOptionsGetArgs.cs | 56 + ...tionsThirdPartyRuleOptionsRootQueryArgs.cs | 38 + ...nsThirdPartyRuleOptionsRootQueryGetArgs.cs | 38 + ...ecurityMonitoringRuleThirdPartyCaseArgs.cs | 50 + ...rityMonitoringRuleThirdPartyCaseGetArgs.cs | 50 + ...nerRuleIncludedKeywordConfigurationArgs.cs | 38 + ...RuleIncludedKeywordConfigurationGetArgs.cs | 38 + ...rviceLevelObjectiveSliSpecificationArgs.cs | 26 + ...ceLevelObjectiveSliSpecificationGetArgs.cs | 26 + ...lObjectiveSliSpecificationTimeSliceArgs.cs | 38 + ...jectiveSliSpecificationTimeSliceGetArgs.cs | 38 + ...ctiveSliSpecificationTimeSliceQueryArgs.cs | 38 + ...iSpecificationTimeSliceQueryFormulaArgs.cs | 26 + ...ecificationTimeSliceQueryFormulaGetArgs.cs | 26 + ...veSliSpecificationTimeSliceQueryGetArgs.cs | 38 + ...SliSpecificationTimeSliceQueryQueryArgs.cs | 26 + ...SpecificationTimeSliceQueryQueryGetArgs.cs | 26 + ...ationTimeSliceQueryQueryMetricQueryArgs.cs | 38 + ...onTimeSliceQueryQueryMetricQueryGetArgs.cs | 38 + sdk/dotnet/LogsIndex.cs | 42 + sdk/dotnet/OpenapiApi.cs | 121 + ...gsIndexesLogsIndexDailyLimitResetResult.cs | 35 + .../Outputs/GetLogsIndexesLogsIndexResult.cs | 14 + ...ecurityMonitoringRulesRuleOptionsResult.cs | 17 +- ...sRuleOptionsThirdPartyRuleOptionsResult.cs | 49 + ...onsThirdPartyRuleOptionsRootQueryResult.cs | 35 + .../GetSecurityMonitoringRulesRuleResult.cs | 7 + ...MonitoringRulesRuleThirdPartyCaseResult.cs | 49 + ...MonitoringSuppressionsSuppressionResult.cs | 49 + .../Outputs/LogsIndexDailyLimitReset.cs | 35 + .../Outputs/SecurityMonitoringRuleOptions.cs | 17 +- ...itoringRuleOptionsThirdPartyRuleOptions.cs | 49 + ...leOptionsThirdPartyRuleOptionsRootQuery.cs | 35 + .../SecurityMonitoringRuleThirdPartyCase.cs | 49 + ...ScannerRuleIncludedKeywordConfiguration.cs | 35 + .../ServiceLevelObjectiveSliSpecification.cs | 27 + ...LevelObjectiveSliSpecificationTimeSlice.cs | 42 + ...ObjectiveSliSpecificationTimeSliceQuery.cs | 35 + ...veSliSpecificationTimeSliceQueryFormula.cs | 27 + ...tiveSliSpecificationTimeSliceQueryQuery.cs | 27 + ...ificationTimeSliceQueryQueryMetricQuery.cs | 42 + sdk/dotnet/SecurityMonitoringRule.cs | 32 +- sdk/dotnet/SecurityMonitoringSuppression.cs | 185 ++ sdk/dotnet/SensitiveDataScannerRule.cs | 29 +- sdk/dotnet/ServiceLevelObjective.cs | 118 +- sdk/go/datadog/getApiKey.go | 11 + sdk/go/datadog/getApplicationKey.go | 11 + .../getSecurityMonitoringSuppressions.go | 80 + .../getSensitiveDataScannerStandardPattern.go | 7 + sdk/go/datadog/init.go | 14 + sdk/go/datadog/logsIndex.go | 35 + sdk/go/datadog/openapiApi.go | 263 ++ sdk/go/datadog/pulumiTypes3.go | 232 +- sdk/go/datadog/pulumiTypes4.go | 251 +- sdk/go/datadog/pulumiTypes5.go | 2899 +++++++++++++++-- sdk/go/datadog/securityMonitoringRule.go | 20 +- .../datadog/securityMonitoringSuppression.go | 303 ++ sdk/go/datadog/sensitiveDataScannerRule.go | 26 +- sdk/go/datadog/serviceLevelObjective.go | 124 +- .../com/pulumi/datadog/DatadogFunctions.java | 43 + .../java/com/pulumi/datadog/LogsIndex.java | 36 + .../com/pulumi/datadog/LogsIndexArgs.java | 76 + .../java/com/pulumi/datadog/OpenapiApi.java | 121 + .../com/pulumi/datadog/OpenapiApiArgs.java | 85 + .../datadog/SecurityMonitoringRule.java | 21 +- .../datadog/SecurityMonitoringRuleArgs.java | 61 +- .../SecurityMonitoringSuppression.java | 157 + .../SecurityMonitoringSuppressionArgs.java | 282 ++ .../datadog/SensitiveDataScannerRule.java | 24 +- .../datadog/SensitiveDataScannerRuleArgs.java | 38 + .../pulumi/datadog/ServiceLevelObjective.java | 57 +- .../datadog/ServiceLevelObjectiveArgs.java | 54 +- .../pulumi/datadog/inputs/GetApiKeyArgs.java | 38 + .../datadog/inputs/GetApiKeyPlainArgs.java | 28 + .../datadog/inputs/GetApplicationKeyArgs.java | 38 + .../inputs/GetApplicationKeyPlainArgs.java | 28 + .../inputs/LogsIndexDailyLimitResetArgs.java | 125 + .../pulumi/datadog/inputs/LogsIndexState.java | 76 + .../datadog/inputs/OpenapiApiState.java | 83 + .../SecurityMonitoringRuleOptionsArgs.java | 65 +- ...gRuleOptionsThirdPartyRuleOptionsArgs.java | 223 ++ ...onsThirdPartyRuleOptionsRootQueryArgs.java | 135 + .../inputs/SecurityMonitoringRuleState.java | 48 + ...urityMonitoringRuleThirdPartyCaseArgs.java | 209 ++ .../SecurityMonitoringSuppressionState.java | 269 ++ ...rRuleIncludedKeywordConfigurationArgs.java | 137 + .../inputs/SensitiveDataScannerRuleState.java | 38 + ...iceLevelObjectiveSliSpecificationArgs.java | 85 + ...bjectiveSliSpecificationTimeSliceArgs.java | 167 + ...iveSliSpecificationTimeSliceQueryArgs.java | 137 + ...pecificationTimeSliceQueryFormulaArgs.java | 85 + ...iSpecificationTimeSliceQueryQueryArgs.java | 83 + ...ionTimeSliceQueryQueryMetricQueryArgs.java | 164 + .../inputs/ServiceLevelObjectiveState.java | 54 +- .../datadog/outputs/GetApiKeyResult.java | 22 + .../outputs/GetApplicationKeyResult.java | 22 + .../outputs/GetLogsIndexesLogsIndex.java | 51 + ...etLogsIndexesLogsIndexDailyLimitReset.java | 81 + .../GetSecurityMonitoringRulesRule.java | 37 +- ...GetSecurityMonitoringRulesRuleOptions.java | 51 +- ...RulesRuleOptionsThirdPartyRuleOptions.java | 133 + ...OptionsThirdPartyRuleOptionsRootQuery.java | 84 + ...rityMonitoringRulesRuleThirdPartyCase.java | 127 + ...tSecurityMonitoringSuppressionsResult.java | 112 + ...rityMonitoringSuppressionsSuppression.java | 141 + ...itiveDataScannerStandardPatternResult.java | 26 + .../outputs/LogsIndexDailyLimitReset.java | 81 + .../SecurityMonitoringRuleOptions.java | 51 +- ...oringRuleOptionsThirdPartyRuleOptions.java | 133 + ...OptionsThirdPartyRuleOptionsRootQuery.java | 84 + .../SecurityMonitoringRuleThirdPartyCase.java | 127 + ...annerRuleIncludedKeywordConfiguration.java | 86 + ...ServiceLevelObjectiveSliSpecification.java | 58 + ...velObjectiveSliSpecificationTimeSlice.java | 106 + ...jectiveSliSpecificationTimeSliceQuery.java | 86 + ...SliSpecificationTimeSliceQueryFormula.java | 58 + ...veSliSpecificationTimeSliceQueryQuery.java | 57 + ...icationTimeSliceQueryQueryMetricQuery.java | 104 + sdk/nodejs/getApiKey.ts | 13 + sdk/nodejs/getApplicationKey.ts | 13 + .../getSecurityMonitoringSuppressions.ts | 41 + .../getSensitiveDataScannerStandardPattern.ts | 4 + sdk/nodejs/index.ts | 21 + sdk/nodejs/logsIndex.ts | 33 + sdk/nodejs/openapiApi.ts | 104 + sdk/nodejs/securityMonitoringRule.ts | 21 +- sdk/nodejs/securityMonitoringSuppression.ts | 166 + sdk/nodejs/sensitiveDataScannerRule.ts | 23 +- sdk/nodejs/serviceLevelObjective.ts | 95 +- sdk/nodejs/tsconfig.json | 3 + sdk/nodejs/types/input.ts | 141 +- sdk/nodejs/types/output.ts | 233 +- sdk/python/pulumi_datadog/__init__.py | 19 + sdk/python/pulumi_datadog/_inputs.py | 551 +++- sdk/python/pulumi_datadog/get_api_key.py | 24 +- .../pulumi_datadog/get_application_key.py | 24 +- .../get_security_monitoring_suppressions.py | 91 + ...sensitive_data_scanner_standard_pattern.py | 15 +- sdk/python/pulumi_datadog/logs_index.py | 104 + sdk/python/pulumi_datadog/openapi_api.py | 178 + sdk/python/pulumi_datadog/outputs.py | 929 +++++- .../security_monitoring_rule.py | 82 +- .../security_monitoring_suppression.py | 384 +++ .../sensitive_data_scanner_rule.py | 65 +- .../pulumi_datadog/service_level_objective.py | 209 +- upstream | 2 +- 159 files changed, 15045 insertions(+), 1174 deletions(-) create mode 100644 sdk/dotnet/GetSecurityMonitoringSuppressions.cs create mode 100644 sdk/dotnet/Inputs/LogsIndexDailyLimitResetArgs.cs create mode 100644 sdk/dotnet/Inputs/LogsIndexDailyLimitResetGetArgs.cs create mode 100644 sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.cs create mode 100644 sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs.cs create mode 100644 sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.cs create mode 100644 sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs.cs create mode 100644 sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseArgs.cs create mode 100644 sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseGetArgs.cs create mode 100644 sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.cs create mode 100644 sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationGetArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.cs create mode 100644 sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs.cs create mode 100644 sdk/dotnet/OpenapiApi.cs create mode 100644 sdk/dotnet/Outputs/GetLogsIndexesLogsIndexDailyLimitResetResult.cs create mode 100644 sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult.cs create mode 100644 sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult.cs create mode 100644 sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleThirdPartyCaseResult.cs create mode 100644 sdk/dotnet/Outputs/GetSecurityMonitoringSuppressionsSuppressionResult.cs create mode 100644 sdk/dotnet/Outputs/LogsIndexDailyLimitReset.cs create mode 100644 sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.cs create mode 100644 sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.cs create mode 100644 sdk/dotnet/Outputs/SecurityMonitoringRuleThirdPartyCase.cs create mode 100644 sdk/dotnet/Outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.cs create mode 100644 sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecification.cs create mode 100644 sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.cs create mode 100644 sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.cs create mode 100644 sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.cs create mode 100644 sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.cs create mode 100644 sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.cs create mode 100644 sdk/dotnet/SecurityMonitoringSuppression.cs create mode 100644 sdk/go/datadog/getSecurityMonitoringSuppressions.go create mode 100644 sdk/go/datadog/openapiApi.go create mode 100644 sdk/go/datadog/securityMonitoringSuppression.go create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/OpenapiApi.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/OpenapiApiArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppression.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppressionArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexDailyLimitResetArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/OpenapiApiState.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleThirdPartyCaseArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringSuppressionState.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndexDailyLimitReset.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleThirdPartyCase.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsResult.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsSuppression.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/LogsIndexDailyLimitReset.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleThirdPartyCase.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecification.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.java create mode 100644 sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.java create mode 100644 sdk/nodejs/getSecurityMonitoringSuppressions.ts create mode 100644 sdk/nodejs/openapiApi.ts create mode 100644 sdk/nodejs/securityMonitoringSuppression.ts create mode 100644 sdk/python/pulumi_datadog/get_security_monitoring_suppressions.py create mode 100644 sdk/python/pulumi_datadog/openapi_api.py create mode 100644 sdk/python/pulumi_datadog/security_monitoring_suppression.py diff --git a/provider/cmd/pulumi-resource-datadog/bridge-metadata.json b/provider/cmd/pulumi-resource-datadog/bridge-metadata.json index c420da082..af26e35e8 100644 --- a/provider/cmd/pulumi-resource-datadog/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-datadog/bridge-metadata.json @@ -10262,6 +10262,9 @@ "current": "datadog:index/logsIndex:LogsIndex", "majorVersion": 4, "fields": { + "daily_limit_reset": { + "maxItemsOne": true + }, "exclusion_filter": { "maxItemsOne": false, "elem": { @@ -10427,6 +10430,10 @@ "current": "datadog:index/monitorJson:MonitorJson", "majorVersion": 4 }, + "datadog_openapi_api": { + "current": "datadog:index/openapiApi:OpenapiApi", + "majorVersion": 4 + }, "datadog_organization_settings": { "current": "datadog:index/organizationSettings:OrganizationSettings", "majorVersion": 4, @@ -13302,6 +13309,26 @@ }, "new_value_options": { "maxItemsOne": true + }, + "third_party_rule_options": { + "maxItemsOne": true, + "elem": { + "fields": { + "default_notifications": { + "maxItemsOne": false + }, + "root_query": { + "maxItemsOne": false, + "elem": { + "fields": { + "group_by_fields": { + "maxItemsOne": false + } + } + } + } + } + } } } } @@ -13337,9 +13364,23 @@ }, "tags": { "maxItemsOne": false + }, + "third_party_case": { + "maxItemsOne": false, + "elem": { + "fields": { + "notifications": { + "maxItemsOne": false + } + } + } } } }, + "datadog_security_monitoring_suppression": { + "current": "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression", + "majorVersion": 4 + }, "datadog_sensitive_data_scanner_group": { "current": "datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup", "majorVersion": 4, @@ -13368,6 +13409,16 @@ "excluded_namespaces": { "maxItemsOne": false }, + "included_keyword_configuration": { + "maxItemsOne": true, + "elem": { + "fields": { + "keywords": { + "maxItemsOne": false + } + } + } + }, "namespaces": { "maxItemsOne": false }, @@ -13409,6 +13460,40 @@ "query": { "maxItemsOne": true }, + "sli_specification": { + "maxItemsOne": true, + "elem": { + "fields": { + "time_slice": { + "maxItemsOne": true, + "elem": { + "fields": { + "query": { + "maxItemsOne": true, + "elem": { + "fields": { + "formula": { + "maxItemsOne": true + }, + "query": { + "maxItemsOne": false, + "elem": { + "fields": { + "metric_query": { + "maxItemsOne": true + } + } + } + } + } + } + } + } + } + } + } + } + }, "tags": { "maxItemsOne": false }, @@ -13860,6 +13945,9 @@ "maxItemsOne": false, "elem": { "fields": { + "daily_limit_reset": { + "maxItemsOne": false + }, "exclusion_filter": { "maxItemsOne": false, "elem": { @@ -14064,6 +14152,26 @@ }, "new_value_options": { "maxItemsOne": true + }, + "third_party_rule_options": { + "maxItemsOne": true, + "elem": { + "fields": { + "default_notifications": { + "maxItemsOne": false + }, + "root_query": { + "maxItemsOne": false, + "elem": { + "fields": { + "group_by_fields": { + "maxItemsOne": false + } + } + } + } + } + } } } } @@ -14099,6 +14207,16 @@ }, "tags": { "maxItemsOne": false + }, + "third_party_case": { + "maxItemsOne": false, + "elem": { + "fields": { + "notifications": { + "maxItemsOne": false + } + } + } } } } @@ -14108,6 +14226,18 @@ } } }, + "datadog_security_monitoring_suppressions": { + "current": "datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions", + "majorVersion": 4, + "fields": { + "suppression_ids": { + "maxItemsOne": false + }, + "suppressions": { + "maxItemsOne": false + } + } + }, "datadog_sensitive_data_scanner_group_order": { "current": "datadog:index/getSensitiveDataScannerGroupOrder:getSensitiveDataScannerGroupOrder", "majorVersion": 4, @@ -14121,6 +14251,9 @@ "current": "datadog:index/getSensitiveDataScannerStandardPattern:getSensitiveDataScannerStandardPattern", "majorVersion": 4, "fields": { + "included_keywords": { + "maxItemsOne": false + }, "tags": { "maxItemsOne": false } @@ -14234,7 +14367,7 @@ "datadog:index/dashboardList:DashboardList": 1, "datadog:index/downtime:Downtime": 0, "datadog:index/downtimeSchedule:DowntimeSchedule": 1, - "datadog:index/ipAllowlist:IpAllowlist": 0, + "datadog:index/ipAllowlist:IpAllowlist": 1, "datadog:index/logsArchive:LogsArchive": 0, "datadog:index/logsArchiveOrder:LogsArchiveOrder": 0, "datadog:index/logsCustomPipeline:LogsCustomPipeline": 0, @@ -14248,6 +14381,7 @@ "datadog:index/monitor:Monitor": 0, "datadog:index/monitorConfigPolicy:MonitorConfigPolicy": 0, "datadog:index/monitorJson:MonitorJson": 0, + "datadog:index/openapiApi:OpenapiApi": 1, "datadog:index/organizationSettings:OrganizationSettings": 0, "datadog:index/powerpack:Powerpack": 0, "datadog:index/restrictionPolicy:RestrictionPolicy": 1, @@ -14256,6 +14390,7 @@ "datadog:index/securityMonitoringDefaultRule:SecurityMonitoringDefaultRule": 0, "datadog:index/securityMonitoringFilter:SecurityMonitoringFilter": 0, "datadog:index/securityMonitoringRule:SecurityMonitoringRule": 0, + "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression": 1, "datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup": 0, "datadog:index/sensitiveDataScannerGroupOrder:SensitiveDataScannerGroupOrder": 1, "datadog:index/sensitiveDataScannerRule:SensitiveDataScannerRule": 0, @@ -14305,6 +14440,7 @@ "datadog:index/getRumApplication:getRumApplication": 1, "datadog:index/getSecurityMonitoringFilters:getSecurityMonitoringFilters": 0, "datadog:index/getSecurityMonitoringRules:getSecurityMonitoringRules": 0, + "datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions": 1, "datadog:index/getSensitiveDataScannerGroupOrder:getSensitiveDataScannerGroupOrder": 1, "datadog:index/getSensitiveDataScannerStandardPattern:getSensitiveDataScannerStandardPattern": 0, "datadog:index/getServiceAccount:getServiceAccount": 1, @@ -14361,6 +14497,7 @@ "datadog:index/monitor:Monitor": "datadog_monitor", "datadog:index/monitorConfigPolicy:MonitorConfigPolicy": "datadog_monitor_config_policy", "datadog:index/monitorJson:MonitorJson": "datadog_monitor_json", + "datadog:index/openapiApi:OpenapiApi": "datadog_openapi_api", "datadog:index/organizationSettings:OrganizationSettings": "datadog_organization_settings", "datadog:index/powerpack:Powerpack": "datadog_powerpack", "datadog:index/restrictionPolicy:RestrictionPolicy": "datadog_restriction_policy", @@ -14369,6 +14506,7 @@ "datadog:index/securityMonitoringDefaultRule:SecurityMonitoringDefaultRule": "datadog_security_monitoring_default_rule", "datadog:index/securityMonitoringFilter:SecurityMonitoringFilter": "datadog_security_monitoring_filter", "datadog:index/securityMonitoringRule:SecurityMonitoringRule": "datadog_security_monitoring_rule", + "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression": "datadog_security_monitoring_suppression", "datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup": "datadog_sensitive_data_scanner_group", "datadog:index/sensitiveDataScannerGroupOrder:SensitiveDataScannerGroupOrder": "datadog_sensitive_data_scanner_group_order", "datadog:index/sensitiveDataScannerRule:SensitiveDataScannerRule": "datadog_sensitive_data_scanner_rule", @@ -14418,6 +14556,7 @@ "datadog:index/getRumApplication:getRumApplication": "datadog_rum_application", "datadog:index/getSecurityMonitoringFilters:getSecurityMonitoringFilters": "datadog_security_monitoring_filters", "datadog:index/getSecurityMonitoringRules:getSecurityMonitoringRules": "datadog_security_monitoring_rules", + "datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions": "datadog_security_monitoring_suppressions", "datadog:index/getSensitiveDataScannerGroupOrder:getSensitiveDataScannerGroupOrder": "datadog_sensitive_data_scanner_group_order", "datadog:index/getSensitiveDataScannerStandardPattern:getSensitiveDataScannerStandardPattern": "datadog_sensitive_data_scanner_standard_pattern", "datadog:index/getServiceAccount:getServiceAccount": "datadog_service_account", @@ -20715,6 +20854,10 @@ "isEnabled": "is_enabled", "isEncoded": "is_encoded" }, + "datadog:index/LogsIndexDailyLimitReset:LogsIndexDailyLimitReset": { + "resetTime": "reset_time", + "resetUtcOffset": "reset_utc_offset" + }, "datadog:index/LogsIndexExclusionFilter:LogsIndexExclusionFilter": { "filters": "filter", "isEnabled": "is_enabled" @@ -22505,7 +22648,8 @@ "impossibleTravelOptions": "impossible_travel_options", "keepAlive": "keep_alive", "maxSignalDuration": "max_signal_duration", - "newValueOptions": "new_value_options" + "newValueOptions": "new_value_options", + "thirdPartyRuleOptions": "third_party_rule_options" }, "datadog:index/SecurityMonitoringRuleOptionsImpossibleTravelOptions:SecurityMonitoringRuleOptionsImpossibleTravelOptions": { "baselineUserLocations": "baseline_user_locations" @@ -22516,6 +22660,15 @@ "learningMethod": "learning_method", "learningThreshold": "learning_threshold" }, + "datadog:index/SecurityMonitoringRuleOptionsThirdPartyRuleOptions:SecurityMonitoringRuleOptionsThirdPartyRuleOptions": { + "defaultNotifications": "default_notifications", + "defaultStatus": "default_status", + "rootQueries": "root_query", + "signalTitleTemplate": "signal_title_template" + }, + "datadog:index/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery:SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery": { + "groupByFields": "group_by_fields" + }, "datadog:index/SecurityMonitoringRuleQuery:SecurityMonitoringRuleQuery": { "agentRules": "agent_rule", "distinctFields": "distinct_fields", @@ -22530,10 +22683,28 @@ "defaultRuleId": "default_rule_id", "ruleId": "rule_id" }, + "datadog:index/SensitiveDataScannerRuleIncludedKeywordConfiguration:SensitiveDataScannerRuleIncludedKeywordConfiguration": { + "characterCount": "character_count" + }, "datadog:index/SensitiveDataScannerRuleTextReplacement:SensitiveDataScannerRuleTextReplacement": { "numberOfChars": "number_of_chars", "replacementString": "replacement_string" }, + "datadog:index/ServiceLevelObjectiveSliSpecification:ServiceLevelObjectiveSliSpecification": { + "timeSlice": "time_slice" + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQuery": { + "queries": "query" + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula:ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula": { + "formulaExpression": "formula_expression" + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery": { + "metricQuery": "metric_query" + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery": { + "dataSource": "data_source" + }, "datadog:index/ServiceLevelObjectiveThreshold:ServiceLevelObjectiveThreshold": { "targetDisplay": "target_display", "warningDisplay": "warning_display" @@ -22723,9 +22894,15 @@ "oneTimeSchedule": "one_time_schedule", "recurringSchedule": "recurring_schedule" }, + "datadog:index/getApiKey:getApiKey": { + "exactMatch": "exact_match" + }, "datadog:index/getApmRetentionFiltersOrder:getApmRetentionFiltersOrder": { "filterIds": "filter_ids" }, + "datadog:index/getApplicationKey:getApplicationKey": { + "exactMatch": "exact_match" + }, "datadog:index/getCloudWorkloadSecurityAgentRules:getCloudWorkloadSecurityAgentRules": { "agentRules": "agent_rules" }, @@ -22781,10 +22958,16 @@ }, "datadog:index/getLogsIndexesLogsIndex:getLogsIndexesLogsIndex": { "dailyLimit": "daily_limit", + "dailyLimitResets": "daily_limit_reset", + "dailyLimitWarningThresholdPercentage": "daily_limit_warning_threshold_percentage", "exclusionFilters": "exclusion_filter", "filters": "filter", "retentionDays": "retention_days" }, + "datadog:index/getLogsIndexesLogsIndexDailyLimitReset:getLogsIndexesLogsIndexDailyLimitReset": { + "resetTime": "reset_time", + "resetUtcOffset": "reset_utc_offset" + }, "datadog:index/getLogsIndexesLogsIndexExclusionFilter:getLogsIndexesLogsIndexExclusionFilter": { "filters": "filter", "isEnabled": "is_enabled" @@ -22904,7 +23087,8 @@ "filters": "filter", "hasExtendedTitle": "has_extended_title", "queries": "query", - "signalQueries": "signal_query" + "signalQueries": "signal_query", + "thirdPartyCases": "third_party_case" }, "datadog:index/getSecurityMonitoringRulesRuleOptions:getSecurityMonitoringRulesRuleOptions": { "decreaseCriticalityBasedOnEnv": "decrease_criticality_based_on_env", @@ -22913,7 +23097,8 @@ "impossibleTravelOptions": "impossible_travel_options", "keepAlive": "keep_alive", "maxSignalDuration": "max_signal_duration", - "newValueOptions": "new_value_options" + "newValueOptions": "new_value_options", + "thirdPartyRuleOptions": "third_party_rule_options" }, "datadog:index/getSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions:getSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions": { "baselineUserLocations": "baseline_user_locations" @@ -22924,6 +23109,15 @@ "learningMethod": "learning_method", "learningThreshold": "learning_threshold" }, + "datadog:index/getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions:getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions": { + "defaultNotifications": "default_notifications", + "defaultStatus": "default_status", + "rootQueries": "root_query", + "signalTitleTemplate": "signal_title_template" + }, + "datadog:index/getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery:getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery": { + "groupByFields": "group_by_fields" + }, "datadog:index/getSecurityMonitoringRulesRuleQuery:getSecurityMonitoringRulesRuleQuery": { "agentRules": "agent_rule", "distinctFields": "distinct_fields", @@ -22938,9 +23132,20 @@ "defaultRuleId": "default_rule_id", "ruleId": "rule_id" }, + "datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions": { + "suppressionIds": "suppression_ids" + }, + "datadog:index/getSecurityMonitoringSuppressionsSuppression:getSecurityMonitoringSuppressionsSuppression": { + "expirationDate": "expiration_date", + "ruleQuery": "rule_query", + "suppressionQuery": "suppression_query" + }, "datadog:index/getSensitiveDataScannerGroupOrder:getSensitiveDataScannerGroupOrder": { "groupIds": "group_ids" }, + "datadog:index/getSensitiveDataScannerStandardPattern:getSensitiveDataScannerStandardPattern": { + "includedKeywords": "included_keywords" + }, "datadog:index/getServiceAccount:getServiceAccount": { "filterStatus": "filter_status" }, @@ -23004,6 +23209,8 @@ }, "datadog:index/logsIndex:LogsIndex": { "dailyLimit": "daily_limit", + "dailyLimitReset": "daily_limit_reset", + "dailyLimitWarningThresholdPercentage": "daily_limit_warning_threshold_percentage", "disableDailyLimit": "disable_daily_limit", "exclusionFilters": "exclusion_filter", "filters": "filter", @@ -23090,7 +23297,13 @@ "filters": "filter", "hasExtendedTitle": "has_extended_title", "queries": "query", - "signalQueries": "signal_query" + "signalQueries": "signal_query", + "thirdPartyCases": "third_party_case" + }, + "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression": { + "expirationDate": "expiration_date", + "ruleQuery": "rule_query", + "suppressionQuery": "suppression_query" }, "datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup": { "isEnabled": "is_enabled", @@ -23102,6 +23315,7 @@ "datadog:index/sensitiveDataScannerRule:SensitiveDataScannerRule": { "excludedNamespaces": "excluded_namespaces", "groupId": "group_id", + "includedKeywordConfiguration": "included_keyword_configuration", "isEnabled": "is_enabled", "standardPatternId": "standard_pattern_id", "textReplacement": "text_replacement" @@ -23116,6 +23330,7 @@ "datadog:index/serviceLevelObjective:ServiceLevelObjective": { "forceDelete": "force_delete", "monitorIds": "monitor_ids", + "sliSpecification": "sli_specification", "targetThreshold": "target_threshold", "warningThreshold": "warning_threshold" }, diff --git a/provider/cmd/pulumi-resource-datadog/schema.json b/provider/cmd/pulumi-resource-datadog/schema.json index 34d712ebd..181f0e27e 100644 --- a/provider/cmd/pulumi-resource-datadog/schema.json +++ b/provider/cmd/pulumi-resource-datadog/schema.json @@ -53581,6 +53581,23 @@ "target" ] }, + "datadog:index/LogsIndexDailyLimitReset:LogsIndexDailyLimitReset": { + "properties": { + "resetTime": { + "type": "string", + "description": "String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive).\n" + }, + "resetUtcOffset": { + "type": "string", + "description": "String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive).\n" + } + }, + "type": "object", + "required": [ + "resetTime", + "resetUtcOffset" + ] + }, "datadog:index/LogsIndexExclusionFilter:LogsIndexExclusionFilter": { "properties": { "filters": { @@ -69108,13 +69125,13 @@ "newValueOptions": { "$ref": "#/types/datadog:index/SecurityMonitoringRuleOptionsNewValueOptions:SecurityMonitoringRuleOptionsNewValueOptions", "description": "New value rules specific options.\n" + }, + "thirdPartyRuleOptions": { + "$ref": "#/types/datadog:index/SecurityMonitoringRuleOptionsThirdPartyRuleOptions:SecurityMonitoringRuleOptionsThirdPartyRuleOptions", + "description": "Options for rules using the third-party detection method.\n" } }, - "type": "object", - "required": [ - "keepAlive", - "maxSignalDuration" - ] + "type": "object" }, "datadog:index/SecurityMonitoringRuleOptionsImpossibleTravelOptions:SecurityMonitoringRuleOptionsImpossibleTravelOptions": { "properties": { @@ -69149,6 +69166,56 @@ "forgetAfter" ] }, + "datadog:index/SecurityMonitoringRuleOptionsThirdPartyRuleOptions:SecurityMonitoringRuleOptionsThirdPartyRuleOptions": { + "properties": { + "defaultNotifications": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Notification targets for the default rule case, when none of the third-party cases match.\n" + }, + "defaultStatus": { + "type": "string", + "description": "Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`.\n" + }, + "rootQueries": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery:SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery" + }, + "description": "Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\n" + }, + "signalTitleTemplate": { + "type": "string", + "description": "A template for the signal title; if omitted, the title is generated based on the case name.\n" + } + }, + "type": "object", + "required": [ + "defaultStatus", + "rootQueries" + ] + }, + "datadog:index/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery:SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery": { + "properties": { + "groupByFields": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Fields to group by. If empty, each log triggers a signal.\n" + }, + "query": { + "type": "string", + "description": "Query for selecting logs to apply the filtering action.\n" + } + }, + "type": "object", + "required": [ + "query" + ] + }, "datadog:index/SecurityMonitoringRuleQuery:SecurityMonitoringRuleQuery": { "properties": { "agentRules": { @@ -69263,6 +69330,33 @@ "ruleId" ] }, + "datadog:index/SecurityMonitoringRuleThirdPartyCase:SecurityMonitoringRuleThirdPartyCase": { + "properties": { + "name": { + "type": "string", + "description": "Name of the case.\n" + }, + "notifications": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Notification targets for each rule case.\n" + }, + "query": { + "type": "string", + "description": "A query to associate a third-party event to this case.\n" + }, + "status": { + "type": "string", + "description": "Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`.\n" + } + }, + "type": "object", + "required": [ + "status" + ] + }, "datadog:index/SensitiveDataScannerGroupFilter:SensitiveDataScannerGroupFilter": { "properties": { "query": { @@ -69275,6 +69369,26 @@ "query" ] }, + "datadog:index/SensitiveDataScannerRuleIncludedKeywordConfiguration:SensitiveDataScannerRuleIncludedKeywordConfiguration": { + "properties": { + "characterCount": { + "type": "integer", + "description": "Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive).\n" + }, + "keywords": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30.\n" + } + }, + "type": "object", + "required": [ + "characterCount", + "keywords" + ] + }, "datadog:index/SensitiveDataScannerRuleTextReplacement:SensitiveDataScannerRuleTextReplacement": { "properties": { "numberOfChars": { @@ -69312,6 +69426,102 @@ "numerator" ] }, + "datadog:index/ServiceLevelObjectiveSliSpecification:ServiceLevelObjectiveSliSpecification": { + "properties": { + "timeSlice": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecificationTimeSlice:ServiceLevelObjectiveSliSpecificationTimeSlice", + "description": "The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold.\n" + } + }, + "type": "object", + "required": [ + "timeSlice" + ] + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSlice:ServiceLevelObjectiveSliSpecificationTimeSlice": { + "properties": { + "comparator": { + "type": "string", + "description": "The comparator used to compare the SLI value to the threshold. Valid values are `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.\n" + }, + "query": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQuery", + "description": "A timeseries query, containing named data-source-specific queries and a formula involving the named queries.\n" + }, + "threshold": { + "type": "number", + "description": "The threshold value to which each SLI value will be compared.\n" + } + }, + "type": "object", + "required": [ + "comparator", + "query", + "threshold" + ] + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQuery": { + "properties": { + "formula": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula:ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula", + "description": "A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO.\n" + }, + "queries": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery" + }, + "description": "A timeseries query, containing named data-source-specific queries and a formula involving the named queries.\n" + } + }, + "type": "object", + "required": [ + "formula", + "queries" + ] + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula:ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula": { + "properties": { + "formulaExpression": { + "type": "string", + "description": "The formula string, which is an expression involving named queries.\n" + } + }, + "type": "object", + "required": [ + "formulaExpression" + ] + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery": { + "properties": { + "metricQuery": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery", + "description": "A timeseries formula and functions metrics query.\n" + } + }, + "type": "object" + }, + "datadog:index/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery:ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery": { + "properties": { + "dataSource": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.\n" + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.\n" + }, + "query": { + "type": "string", + "description": "A timeseries query, containing named data-source-specific queries and a formula involving the named queries.\n" + } + }, + "type": "object", + "required": [ + "name", + "query" + ] + }, "datadog:index/ServiceLevelObjectiveThreshold:ServiceLevelObjectiveThreshold": { "properties": { "target": { @@ -70849,6 +71059,17 @@ "type": "integer", "description": "The number of log events you can send in this index per day before you are rate-limited.\n" }, + "dailyLimitResets": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/getLogsIndexesLogsIndexDailyLimitReset:getLogsIndexesLogsIndexDailyLimitReset" + }, + "description": "Object containing options to override the default daily limit reset time.\n" + }, + "dailyLimitWarningThresholdPercentage": { + "type": "number", + "description": "The percentage threshold of the daily quota at which a Datadog warning event is generated.\n" + }, "exclusionFilters": { "type": "array", "items": { @@ -70875,6 +71096,8 @@ "type": "object", "required": [ "dailyLimit", + "dailyLimitResets", + "dailyLimitWarningThresholdPercentage", "exclusionFilters", "filters", "name", @@ -70886,6 +71109,28 @@ } } }, + "datadog:index/getLogsIndexesLogsIndexDailyLimitReset:getLogsIndexesLogsIndexDailyLimitReset": { + "properties": { + "resetTime": { + "type": "string", + "description": "String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive).\n" + }, + "resetUtcOffset": { + "type": "string", + "description": "String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive).\n" + } + }, + "type": "object", + "required": [ + "resetTime", + "resetUtcOffset" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "datadog:index/getLogsIndexesLogsIndexExclusionFilter:getLogsIndexesLogsIndexExclusionFilter": { "properties": { "filters": { @@ -71406,6 +71651,13 @@ }, "description": "Tags for generated signals.\n" }, + "thirdPartyCases": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/getSecurityMonitoringRulesRuleThirdPartyCase:getSecurityMonitoringRulesRuleThirdPartyCase" + }, + "description": "Cases for generating signals for third-party rules. Only required and accepted for third-party rules\n" + }, "type": { "type": "string", "description": "The rule type.\n" @@ -71413,7 +71665,6 @@ }, "type": "object", "required": [ - "cases", "message", "name" ], @@ -71506,18 +71757,13 @@ "newValueOptions": { "$ref": "#/types/datadog:index/getSecurityMonitoringRulesRuleOptionsNewValueOptions:getSecurityMonitoringRulesRuleOptionsNewValueOptions", "description": "New value rules specific options.\n" + }, + "thirdPartyRuleOptions": { + "$ref": "#/types/datadog:index/getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions:getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions", + "description": "Options for rules using the third-party detection method.\n" } }, - "type": "object", - "required": [ - "keepAlive", - "maxSignalDuration" - ], - "language": { - "nodejs": { - "requiredInputs": [] - } - } + "type": "object" }, "datadog:index/getSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions:getSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions": { "properties": { @@ -71557,6 +71803,66 @@ } } }, + "datadog:index/getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions:getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions": { + "properties": { + "defaultNotifications": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Notification targets for the default rule case, when none of the third-party cases match.\n" + }, + "defaultStatus": { + "type": "string", + "description": "Severity of the default rule case, when none of the third-party cases match.\n" + }, + "rootQueries": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery:getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery" + }, + "description": "Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\n" + }, + "signalTitleTemplate": { + "type": "string", + "description": "A template for the signal title; if omitted, the title is generated based on the case name.\n" + } + }, + "type": "object", + "required": [ + "defaultStatus", + "rootQueries" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "datadog:index/getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery:getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery": { + "properties": { + "groupByFields": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Fields to group by. If empty, each log triggers a signal.\n" + }, + "query": { + "type": "string", + "description": "Query to filter logs.\n" + } + }, + "type": "object", + "required": [ + "query" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "datadog:index/getSecurityMonitoringRulesRuleQuery:getSecurityMonitoringRulesRuleQuery": { "properties": { "agentRules": { @@ -71679,6 +71985,78 @@ } } }, + "datadog:index/getSecurityMonitoringRulesRuleThirdPartyCase:getSecurityMonitoringRulesRuleThirdPartyCase": { + "properties": { + "name": { + "type": "string", + "description": "Name of the case.\n" + }, + "notifications": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Notification targets for each rule case.\n" + }, + "query": { + "type": "string", + "description": "A query to associate a third-party event to this case.\n" + }, + "status": { + "type": "string", + "description": "Severity of the Security Signal.\n" + } + }, + "type": "object", + "required": [ + "status" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "datadog:index/getSecurityMonitoringSuppressionsSuppression:getSecurityMonitoringSuppressionsSuppression": { + "properties": { + "description": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "expirationDate": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ruleQuery": { + "type": "string" + }, + "suppressionQuery": { + "type": "string" + } + }, + "type": "object", + "required": [ + "description", + "enabled", + "expirationDate", + "id", + "name", + "ruleQuery", + "suppressionQuery" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "datadog:index/getServiceLevelObjectiveQuery:getServiceLevelObjectiveQuery": { "properties": { "denominator": { @@ -74709,12 +75087,20 @@ } }, "datadog:index/logsIndex:LogsIndex": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\nconst sampleIndex = new datadog.LogsIndex(\"sampleIndex\", {\n dailyLimit: 200000,\n exclusionFilters: [\n {\n filters: [{\n query: \"app:coredns\",\n sampleRate: 0.97,\n }],\n isEnabled: true,\n name: \"Filter coredns logs\",\n },\n {\n filters: [{\n query: \"service:kube_apiserver\",\n sampleRate: 1,\n }],\n isEnabled: true,\n name: \"Kubernetes apiserver\",\n },\n ],\n filters: [{\n query: \"*\",\n }],\n name: \"your index\",\n retentionDays: 7,\n});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\nsample_index = datadog.LogsIndex(\"sampleIndex\",\n daily_limit=200000,\n exclusion_filters=[\n datadog.LogsIndexExclusionFilterArgs(\n filters=[datadog.LogsIndexExclusionFilterFilterArgs(\n query=\"app:coredns\",\n sample_rate=0.97,\n )],\n is_enabled=True,\n name=\"Filter coredns logs\",\n ),\n datadog.LogsIndexExclusionFilterArgs(\n filters=[datadog.LogsIndexExclusionFilterFilterArgs(\n query=\"service:kube_apiserver\",\n sample_rate=1,\n )],\n is_enabled=True,\n name=\"Kubernetes apiserver\",\n ),\n ],\n filters=[datadog.LogsIndexFilterArgs(\n query=\"*\",\n )],\n name=\"your index\",\n retention_days=7)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sampleIndex = new Datadog.LogsIndex(\"sampleIndex\", new()\n {\n DailyLimit = 200000,\n ExclusionFilters = new[]\n {\n new Datadog.Inputs.LogsIndexExclusionFilterArgs\n {\n Filters = new[]\n {\n new Datadog.Inputs.LogsIndexExclusionFilterFilterArgs\n {\n Query = \"app:coredns\",\n SampleRate = 0.97,\n },\n },\n IsEnabled = true,\n Name = \"Filter coredns logs\",\n },\n new Datadog.Inputs.LogsIndexExclusionFilterArgs\n {\n Filters = new[]\n {\n new Datadog.Inputs.LogsIndexExclusionFilterFilterArgs\n {\n Query = \"service:kube_apiserver\",\n SampleRate = 1,\n },\n },\n IsEnabled = true,\n Name = \"Kubernetes apiserver\",\n },\n },\n Filters = new[]\n {\n new Datadog.Inputs.LogsIndexFilterArgs\n {\n Query = \"*\",\n },\n },\n Name = \"your index\",\n RetentionDays = 7,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datadog.NewLogsIndex(ctx, \"sampleIndex\", \u0026datadog.LogsIndexArgs{\n\t\t\tDailyLimit: pulumi.Int(200000),\n\t\t\tExclusionFilters: datadog.LogsIndexExclusionFilterArray{\n\t\t\t\t\u0026datadog.LogsIndexExclusionFilterArgs{\n\t\t\t\t\tFilters: datadog.LogsIndexExclusionFilterFilterArray{\n\t\t\t\t\t\t\u0026datadog.LogsIndexExclusionFilterFilterArgs{\n\t\t\t\t\t\t\tQuery: pulumi.String(\"app:coredns\"),\n\t\t\t\t\t\t\tSampleRate: pulumi.Float64(0.97),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tName: pulumi.String(\"Filter coredns logs\"),\n\t\t\t\t},\n\t\t\t\t\u0026datadog.LogsIndexExclusionFilterArgs{\n\t\t\t\t\tFilters: datadog.LogsIndexExclusionFilterFilterArray{\n\t\t\t\t\t\t\u0026datadog.LogsIndexExclusionFilterFilterArgs{\n\t\t\t\t\t\t\tQuery: pulumi.String(\"service:kube_apiserver\"),\n\t\t\t\t\t\t\tSampleRate: pulumi.Float64(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tName: pulumi.String(\"Kubernetes apiserver\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilters: datadog.LogsIndexFilterArray{\n\t\t\t\t\u0026datadog.LogsIndexFilterArgs{\n\t\t\t\t\tQuery: pulumi.String(\"*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"your index\"),\n\t\t\tRetentionDays: pulumi.Int(7),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.LogsIndex;\nimport com.pulumi.datadog.LogsIndexArgs;\nimport com.pulumi.datadog.inputs.LogsIndexExclusionFilterArgs;\nimport com.pulumi.datadog.inputs.LogsIndexFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sampleIndex = new LogsIndex(\"sampleIndex\", LogsIndexArgs.builder() \n .dailyLimit(200000)\n .exclusionFilters( \n LogsIndexExclusionFilterArgs.builder()\n .filters(LogsIndexExclusionFilterFilterArgs.builder()\n .query(\"app:coredns\")\n .sampleRate(0.97)\n .build())\n .isEnabled(true)\n .name(\"Filter coredns logs\")\n .build(),\n LogsIndexExclusionFilterArgs.builder()\n .filters(LogsIndexExclusionFilterFilterArgs.builder()\n .query(\"service:kube_apiserver\")\n .sampleRate(1)\n .build())\n .isEnabled(true)\n .name(\"Kubernetes apiserver\")\n .build())\n .filters(LogsIndexFilterArgs.builder()\n .query(\"*\")\n .build())\n .name(\"your index\")\n .retentionDays(7)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sampleIndex:\n type: datadog:LogsIndex\n properties:\n dailyLimit: 200000\n exclusionFilters:\n - filters:\n - query: app:coredns\n sampleRate: 0.97\n isEnabled: true\n name: Filter coredns logs\n - filters:\n - query: service:kube_apiserver\n sampleRate: 1\n isEnabled: true\n name: Kubernetes apiserver\n filters:\n - query: '*'\n name: your index\n retentionDays: 7\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n```sh\n $ pulumi import datadog:index/logsIndex:LogsIndex name\u003e \u003cindexName\u003e\n```\n\n ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\nconst sampleIndex = new datadog.LogsIndex(\"sampleIndex\", {\n dailyLimit: 200000,\n dailyLimitReset: {\n resetTime: \"14:00\",\n resetUtcOffset: \"+02:00\",\n },\n dailyLimitWarningThresholdPercentage: 50,\n exclusionFilters: [\n {\n filters: [{\n query: \"app:coredns\",\n sampleRate: 0.97,\n }],\n isEnabled: true,\n name: \"Filter coredns logs\",\n },\n {\n filters: [{\n query: \"service:kube_apiserver\",\n sampleRate: 1,\n }],\n isEnabled: true,\n name: \"Kubernetes apiserver\",\n },\n ],\n filters: [{\n query: \"*\",\n }],\n name: \"your index\",\n retentionDays: 7,\n});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\nsample_index = datadog.LogsIndex(\"sampleIndex\",\n daily_limit=200000,\n daily_limit_reset=datadog.LogsIndexDailyLimitResetArgs(\n reset_time=\"14:00\",\n reset_utc_offset=\"+02:00\",\n ),\n daily_limit_warning_threshold_percentage=50,\n exclusion_filters=[\n datadog.LogsIndexExclusionFilterArgs(\n filters=[datadog.LogsIndexExclusionFilterFilterArgs(\n query=\"app:coredns\",\n sample_rate=0.97,\n )],\n is_enabled=True,\n name=\"Filter coredns logs\",\n ),\n datadog.LogsIndexExclusionFilterArgs(\n filters=[datadog.LogsIndexExclusionFilterFilterArgs(\n query=\"service:kube_apiserver\",\n sample_rate=1,\n )],\n is_enabled=True,\n name=\"Kubernetes apiserver\",\n ),\n ],\n filters=[datadog.LogsIndexFilterArgs(\n query=\"*\",\n )],\n name=\"your index\",\n retention_days=7)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sampleIndex = new Datadog.LogsIndex(\"sampleIndex\", new()\n {\n DailyLimit = 200000,\n DailyLimitReset = new Datadog.Inputs.LogsIndexDailyLimitResetArgs\n {\n ResetTime = \"14:00\",\n ResetUtcOffset = \"+02:00\",\n },\n DailyLimitWarningThresholdPercentage = 50,\n ExclusionFilters = new[]\n {\n new Datadog.Inputs.LogsIndexExclusionFilterArgs\n {\n Filters = new[]\n {\n new Datadog.Inputs.LogsIndexExclusionFilterFilterArgs\n {\n Query = \"app:coredns\",\n SampleRate = 0.97,\n },\n },\n IsEnabled = true,\n Name = \"Filter coredns logs\",\n },\n new Datadog.Inputs.LogsIndexExclusionFilterArgs\n {\n Filters = new[]\n {\n new Datadog.Inputs.LogsIndexExclusionFilterFilterArgs\n {\n Query = \"service:kube_apiserver\",\n SampleRate = 1,\n },\n },\n IsEnabled = true,\n Name = \"Kubernetes apiserver\",\n },\n },\n Filters = new[]\n {\n new Datadog.Inputs.LogsIndexFilterArgs\n {\n Query = \"*\",\n },\n },\n Name = \"your index\",\n RetentionDays = 7,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datadog.NewLogsIndex(ctx, \"sampleIndex\", \u0026datadog.LogsIndexArgs{\n\t\t\tDailyLimit: pulumi.Int(200000),\n\t\t\tDailyLimitReset: \u0026datadog.LogsIndexDailyLimitResetArgs{\n\t\t\t\tResetTime: pulumi.String(\"14:00\"),\n\t\t\t\tResetUtcOffset: pulumi.String(\"+02:00\"),\n\t\t\t},\n\t\t\tDailyLimitWarningThresholdPercentage: pulumi.Float64(50),\n\t\t\tExclusionFilters: datadog.LogsIndexExclusionFilterArray{\n\t\t\t\t\u0026datadog.LogsIndexExclusionFilterArgs{\n\t\t\t\t\tFilters: datadog.LogsIndexExclusionFilterFilterArray{\n\t\t\t\t\t\t\u0026datadog.LogsIndexExclusionFilterFilterArgs{\n\t\t\t\t\t\t\tQuery: pulumi.String(\"app:coredns\"),\n\t\t\t\t\t\t\tSampleRate: pulumi.Float64(0.97),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tName: pulumi.String(\"Filter coredns logs\"),\n\t\t\t\t},\n\t\t\t\t\u0026datadog.LogsIndexExclusionFilterArgs{\n\t\t\t\t\tFilters: datadog.LogsIndexExclusionFilterFilterArray{\n\t\t\t\t\t\t\u0026datadog.LogsIndexExclusionFilterFilterArgs{\n\t\t\t\t\t\t\tQuery: pulumi.String(\"service:kube_apiserver\"),\n\t\t\t\t\t\t\tSampleRate: pulumi.Float64(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tName: pulumi.String(\"Kubernetes apiserver\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilters: datadog.LogsIndexFilterArray{\n\t\t\t\t\u0026datadog.LogsIndexFilterArgs{\n\t\t\t\t\tQuery: pulumi.String(\"*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"your index\"),\n\t\t\tRetentionDays: pulumi.Int(7),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.LogsIndex;\nimport com.pulumi.datadog.LogsIndexArgs;\nimport com.pulumi.datadog.inputs.LogsIndexDailyLimitResetArgs;\nimport com.pulumi.datadog.inputs.LogsIndexExclusionFilterArgs;\nimport com.pulumi.datadog.inputs.LogsIndexFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sampleIndex = new LogsIndex(\"sampleIndex\", LogsIndexArgs.builder() \n .dailyLimit(200000)\n .dailyLimitReset(LogsIndexDailyLimitResetArgs.builder()\n .resetTime(\"14:00\")\n .resetUtcOffset(\"+02:00\")\n .build())\n .dailyLimitWarningThresholdPercentage(50)\n .exclusionFilters( \n LogsIndexExclusionFilterArgs.builder()\n .filters(LogsIndexExclusionFilterFilterArgs.builder()\n .query(\"app:coredns\")\n .sampleRate(0.97)\n .build())\n .isEnabled(true)\n .name(\"Filter coredns logs\")\n .build(),\n LogsIndexExclusionFilterArgs.builder()\n .filters(LogsIndexExclusionFilterFilterArgs.builder()\n .query(\"service:kube_apiserver\")\n .sampleRate(1)\n .build())\n .isEnabled(true)\n .name(\"Kubernetes apiserver\")\n .build())\n .filters(LogsIndexFilterArgs.builder()\n .query(\"*\")\n .build())\n .name(\"your index\")\n .retentionDays(7)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sampleIndex:\n type: datadog:LogsIndex\n properties:\n dailyLimit: 200000\n dailyLimitReset:\n resetTime: 14:00\n resetUtcOffset: +02:00\n dailyLimitWarningThresholdPercentage: 50\n exclusionFilters:\n - filters:\n - query: app:coredns\n sampleRate: 0.97\n isEnabled: true\n name: Filter coredns logs\n - filters:\n - query: service:kube_apiserver\n sampleRate: 1\n isEnabled: true\n name: Kubernetes apiserver\n filters:\n - query: '*'\n name: your index\n retentionDays: 7\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n```sh\n $ pulumi import datadog:index/logsIndex:LogsIndex name\u003e \u003cindexName\u003e\n```\n\n ", "properties": { "dailyLimit": { "type": "integer", "description": "The number of log events you can send in this index per day before you are rate-limited.\n" }, + "dailyLimitReset": { + "$ref": "#/types/datadog:index/LogsIndexDailyLimitReset:LogsIndexDailyLimitReset", + "description": "Object containing options to override the default daily limit reset time.\n" + }, + "dailyLimitWarningThresholdPercentage": { + "type": "number", + "description": "A percentage threshold of the daily quota at which a Datadog warning event is generated.\n" + }, "disableDailyLimit": { "type": "boolean", "description": "If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained.\n" @@ -74743,6 +75129,7 @@ } }, "required": [ + "dailyLimitWarningThresholdPercentage", "disableDailyLimit", "filters", "name", @@ -74753,6 +75140,14 @@ "type": "integer", "description": "The number of log events you can send in this index per day before you are rate-limited.\n" }, + "dailyLimitReset": { + "$ref": "#/types/datadog:index/LogsIndexDailyLimitReset:LogsIndexDailyLimitReset", + "description": "Object containing options to override the default daily limit reset time.\n" + }, + "dailyLimitWarningThresholdPercentage": { + "type": "number", + "description": "A percentage threshold of the daily quota at which a Datadog warning event is generated.\n" + }, "disableDailyLimit": { "type": "boolean", "description": "If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained.\n" @@ -74791,6 +75186,14 @@ "type": "integer", "description": "The number of log events you can send in this index per day before you are rate-limited.\n" }, + "dailyLimitReset": { + "$ref": "#/types/datadog:index/LogsIndexDailyLimitReset:LogsIndexDailyLimitReset", + "description": "Object containing options to override the default daily limit reset time.\n" + }, + "dailyLimitWarningThresholdPercentage": { + "type": "number", + "description": "A percentage threshold of the daily quota at which a Datadog warning event is generated.\n" + }, "disableDailyLimit": { "type": "boolean", "description": "If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained.\n" @@ -75826,6 +76229,37 @@ "type": "object" } }, + "datadog:index/openapiApi:OpenapiApi": { + "description": "Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\nimport * as fs from \"fs\";\n\n// Create new openapi_api resource\nconst my_api = new datadog.OpenapiApi(\"my-api\", {spec: fs.readFileSync(\"./path/my-api.yaml\", \"utf8\")});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\n# Create new openapi_api resource\nmy_api = datadog.OpenapiApi(\"my-api\", spec=(lambda path: open(path).read())(\"./path/my-api.yaml\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Create new openapi_api resource\n var my_api = new Datadog.OpenapiApi(\"my-api\", new()\n {\n Spec = File.ReadAllText(\"./path/my-api.yaml\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datadog.NewOpenapiApi(ctx, \"my-api\", \u0026datadog.OpenapiApiArgs{\n\t\t\tSpec: readFileOrPanic(\"./path/my-api.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.OpenapiApi;\nimport com.pulumi.datadog.OpenapiApiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_api = new OpenapiApi(\"my-api\", OpenapiApiArgs.builder() \n .spec(Files.readString(Paths.get(\"./path/my-api.yaml\")))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create new openapi_api resource\n my-api:\n type: datadog:OpenapiApi\n properties:\n spec:\n fn::readFile: ./path/my-api.yaml\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n```sh\n $ pulumi import datadog:index/openapiApi:OpenapiApi new_list \"90646597-5fdb-4a17-a240-647003f8c028\"\n```\n\n ", + "properties": { + "spec": { + "type": "string", + "description": "The OpenAPI spec.\n" + } + }, + "required": [ + "spec" + ], + "inputProperties": { + "spec": { + "type": "string", + "description": "The OpenAPI spec.\n" + } + }, + "requiredInputs": [ + "spec" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering OpenapiApi resources.\n", + "properties": { + "spec": { + "type": "string", + "description": "The OpenAPI spec.\n" + } + }, + "type": "object" + } + }, "datadog:index/organizationSettings:OrganizationSettings": { "description": "Provides a Datadog Organization resource. This can be used to manage your Datadog organization's settings.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\n// Manage Datadog Organization\nconst organization = new datadog.OrganizationSettings(\"organization\", {name: \"foo-organization\"});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\n# Manage Datadog Organization\norganization = datadog.OrganizationSettings(\"organization\", name=\"foo-organization\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Manage Datadog Organization\n var organization = new Datadog.OrganizationSettings(\"organization\", new()\n {\n Name = \"foo-organization\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datadog.NewOrganizationSettings(ctx, \"organization\", \u0026datadog.OrganizationSettingsArgs{\n\t\t\tName: pulumi.String(\"foo-organization\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.OrganizationSettings;\nimport com.pulumi.datadog.OrganizationSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var organization = new OrganizationSettings(\"organization\", OrganizationSettingsArgs.builder() \n .name(\"foo-organization\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Manage Datadog Organization\n organization:\n type: datadog:OrganizationSettings\n properties:\n name: foo-organization\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n```sh\n $ pulumi import datadog:index/organizationSettings:OrganizationSettings organization 11111111-2222-3333-4444-555555555555\n```\n\n ", "properties": { @@ -76447,13 +76881,19 @@ }, "description": "Tags for generated signals.\n" }, + "thirdPartyCases": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/SecurityMonitoringRuleThirdPartyCase:SecurityMonitoringRuleThirdPartyCase" + }, + "description": "Cases for generating signals for third-party rules. Only required and accepted for third-party rules\n" + }, "type": { "type": "string", "description": "The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `\"log_detection\"`.\n" } }, "required": [ - "cases", "message", "name" ], @@ -76513,13 +76953,19 @@ }, "description": "Tags for generated signals.\n" }, + "thirdPartyCases": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/SecurityMonitoringRuleThirdPartyCase:SecurityMonitoringRuleThirdPartyCase" + }, + "description": "Cases for generating signals for third-party rules. Only required and accepted for third-party rules\n" + }, "type": { "type": "string", "description": "The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `\"log_detection\"`.\n" } }, "requiredInputs": [ - "cases", "message", "name" ], @@ -76581,6 +77027,13 @@ }, "description": "Tags for generated signals.\n" }, + "thirdPartyCases": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/SecurityMonitoringRuleThirdPartyCase:SecurityMonitoringRuleThirdPartyCase" + }, + "description": "Cases for generating signals for third-party rules. Only required and accepted for third-party rules\n" + }, "type": { "type": "string", "description": "The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `\"log_detection\"`.\n" @@ -76589,6 +77042,103 @@ "type": "object" } }, + "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression": { + "description": "Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules.\n", + "properties": { + "description": { + "type": "string", + "description": "A description for the suppression rule.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the suppression rule is enabled.\n" + }, + "expirationDate": { + "type": "string", + "description": "A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.\n" + }, + "name": { + "type": "string", + "description": "The name of the suppression rule.\n" + }, + "ruleQuery": { + "type": "string", + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules.\n" + }, + "suppressionQuery": { + "type": "string", + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer.\n" + } + }, + "required": [ + "enabled", + "name", + "ruleQuery", + "suppressionQuery" + ], + "inputProperties": { + "description": { + "type": "string", + "description": "A description for the suppression rule.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the suppression rule is enabled.\n" + }, + "expirationDate": { + "type": "string", + "description": "A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.\n" + }, + "name": { + "type": "string", + "description": "The name of the suppression rule.\n" + }, + "ruleQuery": { + "type": "string", + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules.\n" + }, + "suppressionQuery": { + "type": "string", + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer.\n" + } + }, + "requiredInputs": [ + "enabled", + "name", + "ruleQuery", + "suppressionQuery" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering SecurityMonitoringSuppression resources.\n", + "properties": { + "description": { + "type": "string", + "description": "A description for the suppression rule.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the suppression rule is enabled.\n" + }, + "expirationDate": { + "type": "string", + "description": "A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.\n" + }, + "name": { + "type": "string", + "description": "The name of the suppression rule.\n" + }, + "ruleQuery": { + "type": "string", + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules.\n" + }, + "suppressionQuery": { + "type": "string", + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer.\n" + } + }, + "type": "object" + } + }, "datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup": { "description": "Provides a Sensitive Data Scanner group resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\nconst mygroup = new datadog.SensitiveDataScannerGroup(\"mygroup\", {\n description: \"A relevant description\",\n filter: {\n query: \"service:my-service\",\n },\n isEnabled: true,\n name: \"My new scanning group\",\n productLists: [\"apm\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\nmygroup = datadog.SensitiveDataScannerGroup(\"mygroup\",\n description=\"A relevant description\",\n filter=datadog.SensitiveDataScannerGroupFilterArgs(\n query=\"service:my-service\",\n ),\n is_enabled=True,\n name=\"My new scanning group\",\n product_lists=[\"apm\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mygroup = new Datadog.SensitiveDataScannerGroup(\"mygroup\", new()\n {\n Description = \"A relevant description\",\n Filter = new Datadog.Inputs.SensitiveDataScannerGroupFilterArgs\n {\n Query = \"service:my-service\",\n },\n IsEnabled = true,\n Name = \"My new scanning group\",\n ProductLists = new[]\n {\n \"apm\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datadog.NewSensitiveDataScannerGroup(ctx, \"mygroup\", \u0026datadog.SensitiveDataScannerGroupArgs{\n\t\t\tDescription: pulumi.String(\"A relevant description\"),\n\t\t\tFilter: \u0026datadog.SensitiveDataScannerGroupFilterArgs{\n\t\t\t\tQuery: pulumi.String(\"service:my-service\"),\n\t\t\t},\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"My new scanning group\"),\n\t\t\tProductLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"apm\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.SensitiveDataScannerGroup;\nimport com.pulumi.datadog.SensitiveDataScannerGroupArgs;\nimport com.pulumi.datadog.inputs.SensitiveDataScannerGroupFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mygroup = new SensitiveDataScannerGroup(\"mygroup\", SensitiveDataScannerGroupArgs.builder() \n .description(\"A relevant description\")\n .filter(SensitiveDataScannerGroupFilterArgs.builder()\n .query(\"service:my-service\")\n .build())\n .isEnabled(true)\n .name(\"My new scanning group\")\n .productLists(\"apm\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mygroup:\n type: datadog:SensitiveDataScannerGroup\n properties:\n description: A relevant description\n filter:\n query: service:my-service\n isEnabled: true\n name: My new scanning group\n productLists:\n - apm\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n```sh\n $ pulumi import datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup new_list \"\"\n```\n\n ", "properties": { @@ -76724,7 +77274,7 @@ } }, "datadog:index/sensitiveDataScannerRule:SensitiveDataScannerRule": { - "description": "Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\n// Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\nconst mygroup = new datadog.SensitiveDataScannerGroup(\"mygroup\", {\n name: \"My new scanning group\",\n description: \"A relevant description\",\n filter: {\n query: \"service:my-service\",\n },\n isEnabled: true,\n productLists: [\"apm\"],\n});\nconst myrule = new datadog.SensitiveDataScannerRule(\"myrule\", {\n name: \"My new rule\",\n description: \"Another description\",\n groupId: mygroup.id,\n excludedNamespaces: [\"username\"],\n isEnabled: true,\n pattern: \"myregex\",\n tags: [\"sensitive_data:true\"],\n textReplacement: {\n numberOfChars: 0,\n replacementString: \"\",\n type: \"hash\",\n },\n});\nconst awsSp = datadog.getSensitiveDataScannerStandardPattern({\n filter: \"AWS Access Key ID Scanner\",\n});\nconst mylibraryrule = new datadog.SensitiveDataScannerRule(\"mylibraryrule\", {\n name: \"My library rule\",\n description: \"A description\",\n groupId: mygroup.id,\n standardPatternId: awsSp.then(awsSp =\u003e awsSp.id),\n excludedNamespaces: [\"username\"],\n isEnabled: true,\n tags: [\"sensitive_data:true\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\n# Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\nmygroup = datadog.SensitiveDataScannerGroup(\"mygroup\",\n name=\"My new scanning group\",\n description=\"A relevant description\",\n filter=datadog.SensitiveDataScannerGroupFilterArgs(\n query=\"service:my-service\",\n ),\n is_enabled=True,\n product_lists=[\"apm\"])\nmyrule = datadog.SensitiveDataScannerRule(\"myrule\",\n name=\"My new rule\",\n description=\"Another description\",\n group_id=mygroup.id,\n excluded_namespaces=[\"username\"],\n is_enabled=True,\n pattern=\"myregex\",\n tags=[\"sensitive_data:true\"],\n text_replacement=datadog.SensitiveDataScannerRuleTextReplacementArgs(\n number_of_chars=0,\n replacement_string=\"\",\n type=\"hash\",\n ))\naws_sp = datadog.get_sensitive_data_scanner_standard_pattern(filter=\"AWS Access Key ID Scanner\")\nmylibraryrule = datadog.SensitiveDataScannerRule(\"mylibraryrule\",\n name=\"My library rule\",\n description=\"A description\",\n group_id=mygroup.id,\n standard_pattern_id=aws_sp.id,\n excluded_namespaces=[\"username\"],\n is_enabled=True,\n tags=[\"sensitive_data:true\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\n var mygroup = new Datadog.SensitiveDataScannerGroup(\"mygroup\", new()\n {\n Name = \"My new scanning group\",\n Description = \"A relevant description\",\n Filter = new Datadog.Inputs.SensitiveDataScannerGroupFilterArgs\n {\n Query = \"service:my-service\",\n },\n IsEnabled = true,\n ProductLists = new[]\n {\n \"apm\",\n },\n });\n\n var myrule = new Datadog.SensitiveDataScannerRule(\"myrule\", new()\n {\n Name = \"My new rule\",\n Description = \"Another description\",\n GroupId = mygroup.Id,\n ExcludedNamespaces = new[]\n {\n \"username\",\n },\n IsEnabled = true,\n Pattern = \"myregex\",\n Tags = new[]\n {\n \"sensitive_data:true\",\n },\n TextReplacement = new Datadog.Inputs.SensitiveDataScannerRuleTextReplacementArgs\n {\n NumberOfChars = 0,\n ReplacementString = \"\",\n Type = \"hash\",\n },\n });\n\n var awsSp = Datadog.GetSensitiveDataScannerStandardPattern.Invoke(new()\n {\n Filter = \"AWS Access Key ID Scanner\",\n });\n\n var mylibraryrule = new Datadog.SensitiveDataScannerRule(\"mylibraryrule\", new()\n {\n Name = \"My library rule\",\n Description = \"A description\",\n GroupId = mygroup.Id,\n StandardPatternId = awsSp.Apply(getSensitiveDataScannerStandardPatternResult =\u003e getSensitiveDataScannerStandardPatternResult.Id),\n ExcludedNamespaces = new[]\n {\n \"username\",\n },\n IsEnabled = true,\n Tags = new[]\n {\n \"sensitive_data:true\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmygroup, err := datadog.NewSensitiveDataScannerGroup(ctx, \"mygroup\", \u0026datadog.SensitiveDataScannerGroupArgs{\n\t\t\tName: pulumi.String(\"My new scanning group\"),\n\t\t\tDescription: pulumi.String(\"A relevant description\"),\n\t\t\tFilter: \u0026datadog.SensitiveDataScannerGroupFilterArgs{\n\t\t\t\tQuery: pulumi.String(\"service:my-service\"),\n\t\t\t},\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\tProductLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"apm\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datadog.NewSensitiveDataScannerRule(ctx, \"myrule\", \u0026datadog.SensitiveDataScannerRuleArgs{\n\t\t\tName: pulumi.String(\"My new rule\"),\n\t\t\tDescription: pulumi.String(\"Another description\"),\n\t\t\tGroupId: mygroup.ID(),\n\t\t\tExcludedNamespaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"username\"),\n\t\t\t},\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\tPattern: pulumi.String(\"myregex\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sensitive_data:true\"),\n\t\t\t},\n\t\t\tTextReplacement: \u0026datadog.SensitiveDataScannerRuleTextReplacementArgs{\n\t\t\t\tNumberOfChars: pulumi.Int(0),\n\t\t\t\tReplacementString: pulumi.String(\"\"),\n\t\t\t\tType: pulumi.String(\"hash\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tawsSp, err := datadog.GetSensitiveDataScannerStandardPattern(ctx, \u0026datadog.GetSensitiveDataScannerStandardPatternArgs{\n\t\t\tFilter: \"AWS Access Key ID Scanner\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datadog.NewSensitiveDataScannerRule(ctx, \"mylibraryrule\", \u0026datadog.SensitiveDataScannerRuleArgs{\n\t\t\tName: pulumi.String(\"My library rule\"),\n\t\t\tDescription: pulumi.String(\"A description\"),\n\t\t\tGroupId: mygroup.ID(),\n\t\t\tStandardPatternId: *pulumi.String(awsSp.Id),\n\t\t\tExcludedNamespaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"username\"),\n\t\t\t},\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sensitive_data:true\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.SensitiveDataScannerGroup;\nimport com.pulumi.datadog.SensitiveDataScannerGroupArgs;\nimport com.pulumi.datadog.inputs.SensitiveDataScannerGroupFilterArgs;\nimport com.pulumi.datadog.SensitiveDataScannerRule;\nimport com.pulumi.datadog.SensitiveDataScannerRuleArgs;\nimport com.pulumi.datadog.inputs.SensitiveDataScannerRuleTextReplacementArgs;\nimport com.pulumi.datadog.DatadogFunctions;\nimport com.pulumi.datadog.inputs.GetSensitiveDataScannerStandardPatternArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mygroup = new SensitiveDataScannerGroup(\"mygroup\", SensitiveDataScannerGroupArgs.builder() \n .name(\"My new scanning group\")\n .description(\"A relevant description\")\n .filter(SensitiveDataScannerGroupFilterArgs.builder()\n .query(\"service:my-service\")\n .build())\n .isEnabled(true)\n .productLists(\"apm\")\n .build());\n\n var myrule = new SensitiveDataScannerRule(\"myrule\", SensitiveDataScannerRuleArgs.builder() \n .name(\"My new rule\")\n .description(\"Another description\")\n .groupId(mygroup.id())\n .excludedNamespaces(\"username\")\n .isEnabled(true)\n .pattern(\"myregex\")\n .tags(\"sensitive_data:true\")\n .textReplacement(SensitiveDataScannerRuleTextReplacementArgs.builder()\n .numberOfChars(0)\n .replacementString(\"\")\n .type(\"hash\")\n .build())\n .build());\n\n final var awsSp = DatadogFunctions.getSensitiveDataScannerStandardPattern(GetSensitiveDataScannerStandardPatternArgs.builder()\n .filter(\"AWS Access Key ID Scanner\")\n .build());\n\n var mylibraryrule = new SensitiveDataScannerRule(\"mylibraryrule\", SensitiveDataScannerRuleArgs.builder() \n .name(\"My library rule\")\n .description(\"A description\")\n .groupId(mygroup.id())\n .standardPatternId(awsSp.applyValue(getSensitiveDataScannerStandardPatternResult -\u003e getSensitiveDataScannerStandardPatternResult.id()))\n .excludedNamespaces(\"username\")\n .isEnabled(true)\n .tags(\"sensitive_data:true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\n mygroup:\n type: datadog:SensitiveDataScannerGroup\n properties:\n name: My new scanning group\n description: A relevant description\n filter:\n query: service:my-service\n isEnabled: true\n productLists:\n - apm\n myrule:\n type: datadog:SensitiveDataScannerRule\n properties:\n name: My new rule\n description: Another description\n groupId: ${mygroup.id}\n excludedNamespaces:\n - username\n isEnabled: true\n pattern: myregex\n tags:\n - sensitive_data:true\n textReplacement:\n numberOfChars: 0\n replacementString:\n type: hash\n mylibraryrule:\n type: datadog:SensitiveDataScannerRule\n properties:\n name: My library rule\n description: A description\n groupId: ${mygroup.id}\n # As standard_pattern_id is provided, the resource MUST NOT contain the \"pattern\" attribute\n standardPatternId: ${awsSp.id}\n excludedNamespaces:\n - username\n isEnabled: true\n tags:\n - sensitive_data:true\nvariables:\n awsSp:\n fn::invoke:\n Function: datadog:getSensitiveDataScannerStandardPattern\n Arguments:\n filter: AWS Access Key ID Scanner\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n```sh\n $ pulumi import datadog:index/sensitiveDataScannerRule:SensitiveDataScannerRule new_list \"\"\n```\n\n ", + "description": "Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `included_keyword_configuration` field to avoid unexpectedly disabling Sensitive Data Scanner groups.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\n// Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\nconst mygroup = new datadog.SensitiveDataScannerGroup(\"mygroup\", {\n name: \"My new scanning group\",\n description: \"A relevant description\",\n filter: {\n query: \"service:my-service\",\n },\n isEnabled: true,\n productLists: [\"apm\"],\n});\nconst myrule = new datadog.SensitiveDataScannerRule(\"myrule\", {\n name: \"My new rule\",\n description: \"Another description\",\n groupId: mygroup.id,\n excludedNamespaces: [\"username\"],\n isEnabled: true,\n pattern: \"myregex\",\n tags: [\"sensitive_data:true\"],\n textReplacement: {\n numberOfChars: 0,\n replacementString: \"\",\n type: \"hash\",\n },\n includedKeywordConfiguration: {\n keywords: [\n \"cc\",\n \"credit card\",\n ],\n characterCount: 30,\n },\n});\nconst awsSp = datadog.getSensitiveDataScannerStandardPattern({\n filter: \"AWS Access Key ID Scanner\",\n});\nconst mylibraryrule = new datadog.SensitiveDataScannerRule(\"mylibraryrule\", {\n name: \"My library rule\",\n description: \"A description\",\n groupId: mygroup.id,\n standardPatternId: awsSp.then(awsSp =\u003e awsSp.id),\n excludedNamespaces: [\"username\"],\n isEnabled: true,\n tags: [\"sensitive_data:true\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\n# Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\nmygroup = datadog.SensitiveDataScannerGroup(\"mygroup\",\n name=\"My new scanning group\",\n description=\"A relevant description\",\n filter=datadog.SensitiveDataScannerGroupFilterArgs(\n query=\"service:my-service\",\n ),\n is_enabled=True,\n product_lists=[\"apm\"])\nmyrule = datadog.SensitiveDataScannerRule(\"myrule\",\n name=\"My new rule\",\n description=\"Another description\",\n group_id=mygroup.id,\n excluded_namespaces=[\"username\"],\n is_enabled=True,\n pattern=\"myregex\",\n tags=[\"sensitive_data:true\"],\n text_replacement=datadog.SensitiveDataScannerRuleTextReplacementArgs(\n number_of_chars=0,\n replacement_string=\"\",\n type=\"hash\",\n ),\n included_keyword_configuration=datadog.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs(\n keywords=[\n \"cc\",\n \"credit card\",\n ],\n character_count=30,\n ))\naws_sp = datadog.get_sensitive_data_scanner_standard_pattern(filter=\"AWS Access Key ID Scanner\")\nmylibraryrule = datadog.SensitiveDataScannerRule(\"mylibraryrule\",\n name=\"My library rule\",\n description=\"A description\",\n group_id=mygroup.id,\n standard_pattern_id=aws_sp.id,\n excluded_namespaces=[\"username\"],\n is_enabled=True,\n tags=[\"sensitive_data:true\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\n var mygroup = new Datadog.SensitiveDataScannerGroup(\"mygroup\", new()\n {\n Name = \"My new scanning group\",\n Description = \"A relevant description\",\n Filter = new Datadog.Inputs.SensitiveDataScannerGroupFilterArgs\n {\n Query = \"service:my-service\",\n },\n IsEnabled = true,\n ProductLists = new[]\n {\n \"apm\",\n },\n });\n\n var myrule = new Datadog.SensitiveDataScannerRule(\"myrule\", new()\n {\n Name = \"My new rule\",\n Description = \"Another description\",\n GroupId = mygroup.Id,\n ExcludedNamespaces = new[]\n {\n \"username\",\n },\n IsEnabled = true,\n Pattern = \"myregex\",\n Tags = new[]\n {\n \"sensitive_data:true\",\n },\n TextReplacement = new Datadog.Inputs.SensitiveDataScannerRuleTextReplacementArgs\n {\n NumberOfChars = 0,\n ReplacementString = \"\",\n Type = \"hash\",\n },\n IncludedKeywordConfiguration = new Datadog.Inputs.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs\n {\n Keywords = new[]\n {\n \"cc\",\n \"credit card\",\n },\n CharacterCount = 30,\n },\n });\n\n var awsSp = Datadog.GetSensitiveDataScannerStandardPattern.Invoke(new()\n {\n Filter = \"AWS Access Key ID Scanner\",\n });\n\n var mylibraryrule = new Datadog.SensitiveDataScannerRule(\"mylibraryrule\", new()\n {\n Name = \"My library rule\",\n Description = \"A description\",\n GroupId = mygroup.Id,\n StandardPatternId = awsSp.Apply(getSensitiveDataScannerStandardPatternResult =\u003e getSensitiveDataScannerStandardPatternResult.Id),\n ExcludedNamespaces = new[]\n {\n \"username\",\n },\n IsEnabled = true,\n Tags = new[]\n {\n \"sensitive_data:true\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmygroup, err := datadog.NewSensitiveDataScannerGroup(ctx, \"mygroup\", \u0026datadog.SensitiveDataScannerGroupArgs{\n\t\t\tName: pulumi.String(\"My new scanning group\"),\n\t\t\tDescription: pulumi.String(\"A relevant description\"),\n\t\t\tFilter: \u0026datadog.SensitiveDataScannerGroupFilterArgs{\n\t\t\t\tQuery: pulumi.String(\"service:my-service\"),\n\t\t\t},\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\tProductLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"apm\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datadog.NewSensitiveDataScannerRule(ctx, \"myrule\", \u0026datadog.SensitiveDataScannerRuleArgs{\n\t\t\tName: pulumi.String(\"My new rule\"),\n\t\t\tDescription: pulumi.String(\"Another description\"),\n\t\t\tGroupId: mygroup.ID(),\n\t\t\tExcludedNamespaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"username\"),\n\t\t\t},\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\tPattern: pulumi.String(\"myregex\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sensitive_data:true\"),\n\t\t\t},\n\t\t\tTextReplacement: \u0026datadog.SensitiveDataScannerRuleTextReplacementArgs{\n\t\t\t\tNumberOfChars: pulumi.Int(0),\n\t\t\t\tReplacementString: pulumi.String(\"\"),\n\t\t\t\tType: pulumi.String(\"hash\"),\n\t\t\t},\n\t\t\tIncludedKeywordConfiguration: \u0026datadog.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs{\n\t\t\t\tKeywords: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cc\"),\n\t\t\t\t\tpulumi.String(\"credit card\"),\n\t\t\t\t},\n\t\t\t\tCharacterCount: pulumi.Int(30),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tawsSp, err := datadog.GetSensitiveDataScannerStandardPattern(ctx, \u0026datadog.GetSensitiveDataScannerStandardPatternArgs{\n\t\t\tFilter: \"AWS Access Key ID Scanner\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datadog.NewSensitiveDataScannerRule(ctx, \"mylibraryrule\", \u0026datadog.SensitiveDataScannerRuleArgs{\n\t\t\tName: pulumi.String(\"My library rule\"),\n\t\t\tDescription: pulumi.String(\"A description\"),\n\t\t\tGroupId: mygroup.ID(),\n\t\t\tStandardPatternId: *pulumi.String(awsSp.Id),\n\t\t\tExcludedNamespaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"username\"),\n\t\t\t},\n\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sensitive_data:true\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.SensitiveDataScannerGroup;\nimport com.pulumi.datadog.SensitiveDataScannerGroupArgs;\nimport com.pulumi.datadog.inputs.SensitiveDataScannerGroupFilterArgs;\nimport com.pulumi.datadog.SensitiveDataScannerRule;\nimport com.pulumi.datadog.SensitiveDataScannerRuleArgs;\nimport com.pulumi.datadog.inputs.SensitiveDataScannerRuleTextReplacementArgs;\nimport com.pulumi.datadog.inputs.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs;\nimport com.pulumi.datadog.DatadogFunctions;\nimport com.pulumi.datadog.inputs.GetSensitiveDataScannerStandardPatternArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mygroup = new SensitiveDataScannerGroup(\"mygroup\", SensitiveDataScannerGroupArgs.builder() \n .name(\"My new scanning group\")\n .description(\"A relevant description\")\n .filter(SensitiveDataScannerGroupFilterArgs.builder()\n .query(\"service:my-service\")\n .build())\n .isEnabled(true)\n .productLists(\"apm\")\n .build());\n\n var myrule = new SensitiveDataScannerRule(\"myrule\", SensitiveDataScannerRuleArgs.builder() \n .name(\"My new rule\")\n .description(\"Another description\")\n .groupId(mygroup.id())\n .excludedNamespaces(\"username\")\n .isEnabled(true)\n .pattern(\"myregex\")\n .tags(\"sensitive_data:true\")\n .textReplacement(SensitiveDataScannerRuleTextReplacementArgs.builder()\n .numberOfChars(0)\n .replacementString(\"\")\n .type(\"hash\")\n .build())\n .includedKeywordConfiguration(SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.builder()\n .keywords( \n \"cc\",\n \"credit card\")\n .characterCount(30)\n .build())\n .build());\n\n final var awsSp = DatadogFunctions.getSensitiveDataScannerStandardPattern(GetSensitiveDataScannerStandardPatternArgs.builder()\n .filter(\"AWS Access Key ID Scanner\")\n .build());\n\n var mylibraryrule = new SensitiveDataScannerRule(\"mylibraryrule\", SensitiveDataScannerRuleArgs.builder() \n .name(\"My library rule\")\n .description(\"A description\")\n .groupId(mygroup.id())\n .standardPatternId(awsSp.applyValue(getSensitiveDataScannerStandardPatternResult -\u003e getSensitiveDataScannerStandardPatternResult.id()))\n .excludedNamespaces(\"username\")\n .isEnabled(true)\n .tags(\"sensitive_data:true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create new sensitive_data_scanner_rule resource in a sensitive_data_scanner_group\n mygroup:\n type: datadog:SensitiveDataScannerGroup\n properties:\n name: My new scanning group\n description: A relevant description\n filter:\n query: service:my-service\n isEnabled: true\n productLists:\n - apm\n myrule:\n type: datadog:SensitiveDataScannerRule\n properties:\n name: My new rule\n description: Another description\n groupId: ${mygroup.id}\n excludedNamespaces:\n - username\n isEnabled: true\n pattern: myregex\n tags:\n - sensitive_data:true\n textReplacement:\n numberOfChars: 0\n replacementString:\n type: hash\n includedKeywordConfiguration:\n keywords:\n - cc\n - credit card\n characterCount: 30\n mylibraryrule:\n type: datadog:SensitiveDataScannerRule\n properties:\n name: My library rule\n description: A description\n groupId: ${mygroup.id}\n # As standard_pattern_id is provided, the resource MUST NOT contain the \"pattern\" attribute\n standardPatternId: ${awsSp.id}\n excludedNamespaces:\n - username\n isEnabled: true\n tags:\n - sensitive_data:true\nvariables:\n awsSp:\n fn::invoke:\n Function: datadog:getSensitiveDataScannerStandardPattern\n Arguments:\n filter: AWS Access Key ID Scanner\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n```sh\n $ pulumi import datadog:index/sensitiveDataScannerRule:SensitiveDataScannerRule new_list \"\"\n```\n\n ", "properties": { "description": { "type": "string", @@ -76741,6 +77291,10 @@ "type": "string", "description": "Id of the scanning group the rule belongs to.\n" }, + "includedKeywordConfiguration": { + "$ref": "#/types/datadog:index/SensitiveDataScannerRuleIncludedKeywordConfiguration:SensitiveDataScannerRuleIncludedKeywordConfiguration", + "description": "Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups.\n" + }, "isEnabled": { "type": "boolean", "description": "Whether or not the rule is enabled.\n" @@ -76796,6 +77350,11 @@ "description": "Id of the scanning group the rule belongs to.\n", "willReplaceOnChanges": true }, + "includedKeywordConfiguration": { + "$ref": "#/types/datadog:index/SensitiveDataScannerRuleIncludedKeywordConfiguration:SensitiveDataScannerRuleIncludedKeywordConfiguration", + "description": "Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups.\n", + "willReplaceOnChanges": true + }, "isEnabled": { "type": "boolean", "description": "Whether or not the rule is enabled.\n" @@ -76854,6 +77413,11 @@ "description": "Id of the scanning group the rule belongs to.\n", "willReplaceOnChanges": true }, + "includedKeywordConfiguration": { + "$ref": "#/types/datadog:index/SensitiveDataScannerRuleIncludedKeywordConfiguration:SensitiveDataScannerRuleIncludedKeywordConfiguration", + "description": "Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups.\n", + "willReplaceOnChanges": true + }, "isEnabled": { "type": "boolean", "description": "Whether or not the rule is enabled.\n" @@ -77075,7 +77639,7 @@ } }, "datadog:index/serviceLevelObjective:ServiceLevelObjective": { - "description": "Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\n// Metric-Based SLO\n// Create a new Datadog service level objective\nconst foo = new datadog.ServiceLevelObjective(\"foo\", {\n description: \"My custom metric SLO\",\n name: \"Example Metric SLO\",\n query: {\n denominator: \"sum:my.custom.count.metric{*}.as_count()\",\n numerator: \"sum:my.custom.count.metric{type:good_events}.as_count()\",\n },\n tags: [\n \"foo:bar\",\n \"baz\",\n ],\n targetThreshold: 99.9,\n thresholds: [\n {\n target: 99.9,\n timeframe: \"7d\",\n warning: 99.99,\n },\n {\n target: 99.9,\n timeframe: \"30d\",\n warning: 99.99,\n },\n ],\n timeframe: \"30d\",\n type: \"metric\",\n warningThreshold: 99.99,\n});\n// Monitor-Based SLO\n// Create a new Datadog service level objective\nconst bar = new datadog.ServiceLevelObjective(\"bar\", {\n description: \"My custom monitor SLO\",\n monitorIds: [\n 1,\n 2,\n 3,\n ],\n name: \"Example Monitor SLO\",\n tags: [\n \"foo:bar\",\n \"baz\",\n ],\n targetThreshold: 99.9,\n thresholds: [\n {\n target: 99.9,\n timeframe: \"7d\",\n warning: 99.99,\n },\n {\n target: 99.9,\n timeframe: \"30d\",\n warning: 99.99,\n },\n ],\n timeframe: \"30d\",\n type: \"monitor\",\n warningThreshold: 99.99,\n});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\n# Metric-Based SLO\n# Create a new Datadog service level objective\nfoo = datadog.ServiceLevelObjective(\"foo\",\n description=\"My custom metric SLO\",\n name=\"Example Metric SLO\",\n query=datadog.ServiceLevelObjectiveQueryArgs(\n denominator=\"sum:my.custom.count.metric{*}.as_count()\",\n numerator=\"sum:my.custom.count.metric{type:good_events}.as_count()\",\n ),\n tags=[\n \"foo:bar\",\n \"baz\",\n ],\n target_threshold=99.9,\n thresholds=[\n datadog.ServiceLevelObjectiveThresholdArgs(\n target=99.9,\n timeframe=\"7d\",\n warning=99.99,\n ),\n datadog.ServiceLevelObjectiveThresholdArgs(\n target=99.9,\n timeframe=\"30d\",\n warning=99.99,\n ),\n ],\n timeframe=\"30d\",\n type=\"metric\",\n warning_threshold=99.99)\n# Monitor-Based SLO\n# Create a new Datadog service level objective\nbar = datadog.ServiceLevelObjective(\"bar\",\n description=\"My custom monitor SLO\",\n monitor_ids=[\n 1,\n 2,\n 3,\n ],\n name=\"Example Monitor SLO\",\n tags=[\n \"foo:bar\",\n \"baz\",\n ],\n target_threshold=99.9,\n thresholds=[\n datadog.ServiceLevelObjectiveThresholdArgs(\n target=99.9,\n timeframe=\"7d\",\n warning=99.99,\n ),\n datadog.ServiceLevelObjectiveThresholdArgs(\n target=99.9,\n timeframe=\"30d\",\n warning=99.99,\n ),\n ],\n timeframe=\"30d\",\n type=\"monitor\",\n warning_threshold=99.99)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Metric-Based SLO\n // Create a new Datadog service level objective\n var foo = new Datadog.ServiceLevelObjective(\"foo\", new()\n {\n Description = \"My custom metric SLO\",\n Name = \"Example Metric SLO\",\n Query = new Datadog.Inputs.ServiceLevelObjectiveQueryArgs\n {\n Denominator = \"sum:my.custom.count.metric{*}.as_count()\",\n Numerator = \"sum:my.custom.count.metric{type:good_events}.as_count()\",\n },\n Tags = new[]\n {\n \"foo:bar\",\n \"baz\",\n },\n TargetThreshold = 99.9,\n Thresholds = new[]\n {\n new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs\n {\n Target = 99.9,\n Timeframe = \"7d\",\n Warning = 99.99,\n },\n new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs\n {\n Target = 99.9,\n Timeframe = \"30d\",\n Warning = 99.99,\n },\n },\n Timeframe = \"30d\",\n Type = \"metric\",\n WarningThreshold = 99.99,\n });\n\n // Monitor-Based SLO\n // Create a new Datadog service level objective\n var bar = new Datadog.ServiceLevelObjective(\"bar\", new()\n {\n Description = \"My custom monitor SLO\",\n MonitorIds = new[]\n {\n 1,\n 2,\n 3,\n },\n Name = \"Example Monitor SLO\",\n Tags = new[]\n {\n \"foo:bar\",\n \"baz\",\n },\n TargetThreshold = 99.9,\n Thresholds = new[]\n {\n new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs\n {\n Target = 99.9,\n Timeframe = \"7d\",\n Warning = 99.99,\n },\n new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs\n {\n Target = 99.9,\n Timeframe = \"30d\",\n Warning = 99.99,\n },\n },\n Timeframe = \"30d\",\n Type = \"monitor\",\n WarningThreshold = 99.99,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datadog.NewServiceLevelObjective(ctx, \"foo\", \u0026datadog.ServiceLevelObjectiveArgs{\n\t\t\tDescription: pulumi.String(\"My custom metric SLO\"),\n\t\t\tName: pulumi.String(\"Example Metric SLO\"),\n\t\t\tQuery: \u0026datadog.ServiceLevelObjectiveQueryArgs{\n\t\t\t\tDenominator: pulumi.String(\"sum:my.custom.count.metric{*}.as_count()\"),\n\t\t\t\tNumerator: pulumi.String(\"sum:my.custom.count.metric{type:good_events}.as_count()\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo:bar\"),\n\t\t\t\tpulumi.String(\"baz\"),\n\t\t\t},\n\t\t\tTargetThreshold: pulumi.Float64(99.9),\n\t\t\tThresholds: datadog.ServiceLevelObjectiveThresholdArray{\n\t\t\t\t\u0026datadog.ServiceLevelObjectiveThresholdArgs{\n\t\t\t\t\tTarget: pulumi.Float64(99.9),\n\t\t\t\t\tTimeframe: pulumi.String(\"7d\"),\n\t\t\t\t\tWarning: pulumi.Float64(99.99),\n\t\t\t\t},\n\t\t\t\t\u0026datadog.ServiceLevelObjectiveThresholdArgs{\n\t\t\t\t\tTarget: pulumi.Float64(99.9),\n\t\t\t\t\tTimeframe: pulumi.String(\"30d\"),\n\t\t\t\t\tWarning: pulumi.Float64(99.99),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeframe: pulumi.String(\"30d\"),\n\t\t\tType: pulumi.String(\"metric\"),\n\t\t\tWarningThreshold: pulumi.Float64(99.99),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datadog.NewServiceLevelObjective(ctx, \"bar\", \u0026datadog.ServiceLevelObjectiveArgs{\n\t\t\tDescription: pulumi.String(\"My custom monitor SLO\"),\n\t\t\tMonitorIds: pulumi.IntArray{\n\t\t\t\tpulumi.Int(1),\n\t\t\t\tpulumi.Int(2),\n\t\t\t\tpulumi.Int(3),\n\t\t\t},\n\t\t\tName: pulumi.String(\"Example Monitor SLO\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo:bar\"),\n\t\t\t\tpulumi.String(\"baz\"),\n\t\t\t},\n\t\t\tTargetThreshold: pulumi.Float64(99.9),\n\t\t\tThresholds: datadog.ServiceLevelObjectiveThresholdArray{\n\t\t\t\t\u0026datadog.ServiceLevelObjectiveThresholdArgs{\n\t\t\t\t\tTarget: pulumi.Float64(99.9),\n\t\t\t\t\tTimeframe: pulumi.String(\"7d\"),\n\t\t\t\t\tWarning: pulumi.Float64(99.99),\n\t\t\t\t},\n\t\t\t\t\u0026datadog.ServiceLevelObjectiveThresholdArgs{\n\t\t\t\t\tTarget: pulumi.Float64(99.9),\n\t\t\t\t\tTimeframe: pulumi.String(\"30d\"),\n\t\t\t\t\tWarning: pulumi.Float64(99.99),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeframe: pulumi.String(\"30d\"),\n\t\t\tType: pulumi.String(\"monitor\"),\n\t\t\tWarningThreshold: pulumi.Float64(99.99),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.ServiceLevelObjective;\nimport com.pulumi.datadog.ServiceLevelObjectiveArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveQueryArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveThresholdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new ServiceLevelObjective(\"foo\", ServiceLevelObjectiveArgs.builder() \n .description(\"My custom metric SLO\")\n .name(\"Example Metric SLO\")\n .query(ServiceLevelObjectiveQueryArgs.builder()\n .denominator(\"sum:my.custom.count.metric{*}.as_count()\")\n .numerator(\"sum:my.custom.count.metric{type:good_events}.as_count()\")\n .build())\n .tags( \n \"foo:bar\",\n \"baz\")\n .targetThreshold(99.9)\n .thresholds( \n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"7d\")\n .warning(99.99)\n .build(),\n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"30d\")\n .warning(99.99)\n .build())\n .timeframe(\"30d\")\n .type(\"metric\")\n .warningThreshold(99.99)\n .build());\n\n var bar = new ServiceLevelObjective(\"bar\", ServiceLevelObjectiveArgs.builder() \n .description(\"My custom monitor SLO\")\n .monitorIds( \n 1,\n 2,\n 3)\n .name(\"Example Monitor SLO\")\n .tags( \n \"foo:bar\",\n \"baz\")\n .targetThreshold(99.9)\n .thresholds( \n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"7d\")\n .warning(99.99)\n .build(),\n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"30d\")\n .warning(99.99)\n .build())\n .timeframe(\"30d\")\n .type(\"monitor\")\n .warningThreshold(99.99)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Metric-Based SLO\n # // Create a new Datadog service level objective\n foo:\n type: datadog:ServiceLevelObjective\n properties:\n description: My custom metric SLO\n name: Example Metric SLO\n query:\n denominator: sum:my.custom.count.metric{*}.as_count()\n numerator: sum:my.custom.count.metric{type:good_events}.as_count()\n tags:\n - foo:bar\n - baz\n targetThreshold: 99.9\n thresholds:\n - target: 99.9\n timeframe: 7d\n warning: 99.99\n - target: 99.9\n timeframe: 30d\n warning: 99.99\n timeframe: 30d\n type: metric\n warningThreshold: 99.99\n # Monitor-Based SLO\n # // Create a new Datadog service level objective\n bar:\n type: datadog:ServiceLevelObjective\n properties:\n description: My custom monitor SLO\n monitorIds:\n - 1\n - 2\n - 3\n name: Example Monitor SLO\n tags:\n - foo:bar\n - baz\n targetThreshold: 99.9\n thresholds:\n - target: 99.9\n timeframe: 7d\n warning: 99.99\n - target: 99.9\n timeframe: 30d\n warning: 99.99\n timeframe: 30d\n type: monitor\n warningThreshold: 99.99\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nService Level Objectives can be imported using their string ID, e.g.\n\n ```sh\n $ pulumi import datadog:index/serviceLevelObjective:ServiceLevelObjective baz 12345678901234567890123456789012\n```\n\n ", + "description": "Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.ServiceLevelObjective;\nimport com.pulumi.datadog.ServiceLevelObjectiveArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveQueryArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveThresholdArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs;\nimport com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foo = new ServiceLevelObjective(\"foo\", ServiceLevelObjectiveArgs.builder() \n .description(\"My custom metric SLO\")\n .name(\"Example Metric SLO\")\n .query(ServiceLevelObjectiveQueryArgs.builder()\n .denominator(\"sum:my.custom.count.metric{*}.as_count()\")\n .numerator(\"sum:my.custom.count.metric{type:good_events}.as_count()\")\n .build())\n .tags( \n \"foo:bar\",\n \"baz\")\n .targetThreshold(99.9)\n .thresholds( \n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"7d\")\n .warning(99.99)\n .build(),\n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"30d\")\n .warning(99.99)\n .build())\n .timeframe(\"30d\")\n .type(\"metric\")\n .warningThreshold(99.99)\n .build());\n\n var bar = new ServiceLevelObjective(\"bar\", ServiceLevelObjectiveArgs.builder() \n .description(\"My custom monitor SLO\")\n .monitorIds( \n 1,\n 2,\n 3)\n .name(\"Example Monitor SLO\")\n .tags( \n \"foo:bar\",\n \"baz\")\n .targetThreshold(99.9)\n .thresholds( \n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"7d\")\n .warning(99.99)\n .build(),\n ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"30d\")\n .warning(99.99)\n .build())\n .timeframe(\"30d\")\n .type(\"monitor\")\n .warningThreshold(99.99)\n .build());\n\n var timeSliceSlo = new ServiceLevelObjective(\"timeSliceSlo\", ServiceLevelObjectiveArgs.builder() \n .description(\"My custom time slice SLO\")\n .name(\"Example Time Slice SLO\")\n .sliSpecification(ServiceLevelObjectiveSliSpecificationArgs.builder()\n .timeSlice(ServiceLevelObjectiveSliSpecificationTimeSliceArgs.builder()\n .comparator(\"\u003e\")\n .query(ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.builder()\n .formula(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.builder()\n .formulaExpression(\"query1\")\n .build())\n .query(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .threshold(0.9)\n .build())\n .build())\n .tags( \n \"service:myservice\",\n \"team:myteam\")\n .targetThreshold(99.9)\n .thresholds(ServiceLevelObjectiveThresholdArgs.builder()\n .target(99.9)\n .timeframe(\"7d\")\n .warning(99.99)\n .build())\n .timeframe(\"7d\")\n .type(\"time_slice\")\n .warningThreshold(99.99)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Metric-Based SLO\n # // Create a new Datadog service level objective\n foo:\n type: datadog:ServiceLevelObjective\n properties:\n description: My custom metric SLO\n name: Example Metric SLO\n query:\n denominator: sum:my.custom.count.metric{*}.as_count()\n numerator: sum:my.custom.count.metric{type:good_events}.as_count()\n tags:\n - foo:bar\n - baz\n targetThreshold: 99.9\n thresholds:\n - target: 99.9\n timeframe: 7d\n warning: 99.99\n - target: 99.9\n timeframe: 30d\n warning: 99.99\n timeframe: 30d\n type: metric\n warningThreshold: 99.99\n # Monitor-Based SLO\n # // Create a new Datadog service level objective\n bar:\n type: datadog:ServiceLevelObjective\n properties:\n description: My custom monitor SLO\n monitorIds:\n - 1\n - 2\n - 3\n name: Example Monitor SLO\n tags:\n - foo:bar\n - baz\n targetThreshold: 99.9\n thresholds:\n - target: 99.9\n timeframe: 7d\n warning: 99.99\n - target: 99.9\n timeframe: 30d\n warning: 99.99\n timeframe: 30d\n type: monitor\n warningThreshold: 99.99\n timeSliceSlo:\n type: datadog:ServiceLevelObjective\n properties:\n description: My custom time slice SLO\n name: Example Time Slice SLO\n sliSpecification:\n timeSlice:\n comparator: '\u003e'\n query:\n formula:\n formulaExpression: query1\n query:\n - metricQuery:\n name: query1\n query: avg:my.custom.count.metric{*}.as_count()\n threshold: 0.9\n tags:\n - service:myservice\n - team:myteam\n targetThreshold: 99.9\n thresholds:\n - target: 99.9\n timeframe: 7d\n warning: 99.99\n timeframe: 7d\n type: time_slice\n warningThreshold: 99.99\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nService Level Objectives can be imported using their string ID, e.g.\n\n ```sh\n $ pulumi import datadog:index/serviceLevelObjective:ServiceLevelObjective baz 12345678901234567890123456789012\n```\n\n ", "properties": { "description": { "type": "string", @@ -77101,11 +77665,15 @@ }, "name": { "type": "string", - "description": "Name of Datadog service level objective\n" + "description": "The name of the query for use in formulas.\n" }, "query": { "$ref": "#/types/datadog:index/ServiceLevelObjectiveQuery:ServiceLevelObjectiveQuery", - "description": "The metric query of good / total events\n" + "description": "A timeseries query, containing named data-source-specific queries and a formula involving the named queries.\n" + }, + "sliSpecification": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecification:ServiceLevelObjectiveSliSpecification", + "description": "A map of SLI specifications to use as part of the SLO.\n" }, "tags": { "type": "array", @@ -77175,11 +77743,15 @@ }, "name": { "type": "string", - "description": "Name of Datadog service level objective\n" + "description": "The name of the query for use in formulas.\n" }, "query": { "$ref": "#/types/datadog:index/ServiceLevelObjectiveQuery:ServiceLevelObjectiveQuery", - "description": "The metric query of good / total events\n" + "description": "A timeseries query, containing named data-source-specific queries and a formula involving the named queries.\n" + }, + "sliSpecification": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecification:ServiceLevelObjectiveSliSpecification", + "description": "A map of SLI specifications to use as part of the SLO.\n" }, "tags": { "type": "array", @@ -77249,11 +77821,15 @@ }, "name": { "type": "string", - "description": "Name of Datadog service level objective\n" + "description": "The name of the query for use in formulas.\n" }, "query": { "$ref": "#/types/datadog:index/ServiceLevelObjectiveQuery:ServiceLevelObjectiveQuery", - "description": "The metric query of good / total events\n" + "description": "A timeseries query, containing named data-source-specific queries and a formula involving the named queries.\n" + }, + "sliSpecification": { + "$ref": "#/types/datadog:index/ServiceLevelObjectiveSliSpecification:ServiceLevelObjectiveSliSpecification", + "description": "A map of SLI specifications to use as part of the SLO.\n" }, "tags": { "type": "array", @@ -78974,6 +79550,10 @@ "inputs": { "description": "A collection of arguments for invoking getApiKey.\n", "properties": { + "exactMatch": { + "type": "boolean", + "description": "Whether to use exact match when searching by name.\n" + }, "id": { "type": "string", "description": "The ID of this resource.\n" @@ -78988,6 +79568,10 @@ "outputs": { "description": "A collection of values returned by getApiKey.\n", "properties": { + "exactMatch": { + "type": "boolean", + "description": "Whether to use exact match when searching by name.\n" + }, "id": { "type": "string", "description": "The ID of this resource.\n" @@ -79037,6 +79621,10 @@ "inputs": { "description": "A collection of arguments for invoking getApplicationKey.\n", "properties": { + "exactMatch": { + "type": "boolean", + "description": "Whether to use exact match when searching by name.\n" + }, "id": { "type": "string", "description": "Id for Application Key.\n" @@ -79051,6 +79639,10 @@ "outputs": { "description": "A collection of values returned by getApplicationKey.\n", "properties": { + "exactMatch": { + "type": "boolean", + "description": "Whether to use exact match when searching by name.\n" + }, "id": { "type": "string", "description": "Id for Application Key.\n" @@ -80141,6 +80733,38 @@ ] } }, + "datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions": { + "description": "Use this data source to retrieve information about existing suppression rules, and use them in other resources.\n", + "outputs": { + "description": "A collection of values returned by getSecurityMonitoringSuppressions.\n", + "properties": { + "id": { + "type": "string", + "description": "The ID of this resource.\n" + }, + "suppressionIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of IDs of suppressions\n" + }, + "suppressions": { + "type": "array", + "items": { + "$ref": "#/types/datadog:index/getSecurityMonitoringSuppressionsSuppression:getSecurityMonitoringSuppressionsSuppression" + }, + "description": "List of suppressions\n" + } + }, + "type": "object", + "required": [ + "id", + "suppressionIds", + "suppressions" + ] + } + }, "datadog:index/getSensitiveDataScannerGroupOrder:getSensitiveDataScannerGroupOrder": { "description": "Provides a Datadog Sensitive Data Scanner Group Order API data source. This can be used to retrieve the order of Datadog Sensitive Data Scanner Groups.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as datadog from \"@pulumi/datadog\";\n\nconst foo = datadog.getSensitiveDataScannerGroupOrder({});\nconst foobar = new datadog.SensitiveDataScannerGroupOrder(\"foobar\", {groupIds: foo.then(foo =\u003e foo.groupIds)});\n```\n```python\nimport pulumi\nimport pulumi_datadog as datadog\n\nfoo = datadog.get_sensitive_data_scanner_group_order()\nfoobar = datadog.SensitiveDataScannerGroupOrder(\"foobar\", group_ids=foo.group_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Datadog = Pulumi.Datadog;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = Datadog.GetSensitiveDataScannerGroupOrder.Invoke();\n\n var foobar = new Datadog.SensitiveDataScannerGroupOrder(\"foobar\", new()\n {\n GroupIds = foo.Apply(getSensitiveDataScannerGroupOrderResult =\u003e getSensitiveDataScannerGroupOrderResult.GroupIds),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoo, err := datadog.LookupSensitiveDataScannerGroupOrder(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datadog.NewSensitiveDataScannerGroupOrder(ctx, \"foobar\", \u0026datadog.SensitiveDataScannerGroupOrderArgs{\n\t\t\tGroupIds: interface{}(foo.GroupIds),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.datadog.DatadogFunctions;\nimport com.pulumi.datadog.SensitiveDataScannerGroupOrder;\nimport com.pulumi.datadog.SensitiveDataScannerGroupOrderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var foo = DatadogFunctions.getSensitiveDataScannerGroupOrder();\n\n var foobar = new SensitiveDataScannerGroupOrder(\"foobar\", SensitiveDataScannerGroupOrderArgs.builder() \n .groupIds(foo.applyValue(getSensitiveDataScannerGroupOrderResult -\u003e getSensitiveDataScannerGroupOrderResult.groupIds()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: datadog:SensitiveDataScannerGroupOrder\n properties:\n groupIds: ${foo.groupIds}\nvariables:\n foo:\n fn::invoke:\n Function: datadog:getSensitiveDataScannerGroupOrder\n Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}", "outputs": { @@ -80191,6 +80815,13 @@ "type": "string", "description": "The provider-assigned unique ID for this managed resource.\n" }, + "includedKeywords": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of recommended keywords to improve rule accuracy.\n" + }, "name": { "type": "string", "description": "Name of the standard pattern.\n" @@ -80210,6 +80841,7 @@ "type": "object", "required": [ "filter", + "includedKeywords", "name", "pattern", "tags", diff --git a/provider/go.mod b/provider/go.mod index aa79b14bd..dc2f9f480 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -34,7 +34,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 // indirect github.com/BurntSushi/toml v1.2.1 // indirect - github.com/DataDog/datadog-api-client-go/v2 v2.21.0 // indirect + github.com/DataDog/datadog-api-client-go/v2 v2.22.0 // indirect github.com/DataDog/zstd v1.5.2 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect @@ -100,7 +100,7 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/google/uuid v1.5.0 // indirect github.com/google/wire v0.5.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect diff --git a/provider/go.sum b/provider/go.sum index f9c27dc77..083bd253e 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -692,8 +692,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-api-client-go/v2 v2.21.0 h1:u9a3HgyF61Zjui12r13xrVANnpLsuNFCBAox34StOtc= -github.com/DataDog/datadog-api-client-go/v2 v2.21.0/go.mod h1:oD5Lx8Li3oPRa/BSBenkn4i48z+91gwYORF/+6ph71g= +github.com/DataDog/datadog-api-client-go/v2 v2.22.0 h1:+DtWu4PjGxsJU8FESjPi7C2rTDMojNungejsIzNFe70= +github.com/DataDog/datadog-api-client-go/v2 v2.22.0/go.mod h1:QKOu6vscsh87fMY1lHfLEmNSunyXImj8BUaUWJXOehc= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= @@ -1505,8 +1505,8 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= diff --git a/sdk/dotnet/GetApiKey.cs b/sdk/dotnet/GetApiKey.cs index 1507024e1..95ecbbe70 100644 --- a/sdk/dotnet/GetApiKey.cs +++ b/sdk/dotnet/GetApiKey.cs @@ -71,6 +71,12 @@ public static Output Invoke(GetApiKeyInvokeArgs? args = null, I public sealed class GetApiKeyArgs : global::Pulumi.InvokeArgs { + /// + /// Whether to use exact match when searching by name. + /// + [Input("exactMatch")] + public bool? ExactMatch { get; set; } + /// /// The ID of this resource. /// @@ -91,6 +97,12 @@ public GetApiKeyArgs() public sealed class GetApiKeyInvokeArgs : global::Pulumi.InvokeArgs { + /// + /// Whether to use exact match when searching by name. + /// + [Input("exactMatch")] + public Input? ExactMatch { get; set; } + /// /// The ID of this resource. /// @@ -113,6 +125,10 @@ public GetApiKeyInvokeArgs() [OutputType] public sealed class GetApiKeyResult { + /// + /// Whether to use exact match when searching by name. + /// + public readonly bool? ExactMatch; /// /// The ID of this resource. /// @@ -128,12 +144,15 @@ public sealed class GetApiKeyResult [OutputConstructor] private GetApiKeyResult( + bool? exactMatch, + string? id, string key, string? name) { + ExactMatch = exactMatch; Id = id; Key = key; Name = name; diff --git a/sdk/dotnet/GetApplicationKey.cs b/sdk/dotnet/GetApplicationKey.cs index 09806f933..4e5b62a91 100644 --- a/sdk/dotnet/GetApplicationKey.cs +++ b/sdk/dotnet/GetApplicationKey.cs @@ -71,6 +71,12 @@ public static Output Invoke(GetApplicationKeyInvokeArgs public sealed class GetApplicationKeyArgs : global::Pulumi.InvokeArgs { + /// + /// Whether to use exact match when searching by name. + /// + [Input("exactMatch")] + public bool? ExactMatch { get; set; } + /// /// Id for Application Key. /// @@ -91,6 +97,12 @@ public GetApplicationKeyArgs() public sealed class GetApplicationKeyInvokeArgs : global::Pulumi.InvokeArgs { + /// + /// Whether to use exact match when searching by name. + /// + [Input("exactMatch")] + public Input? ExactMatch { get; set; } + /// /// Id for Application Key. /// @@ -113,6 +125,10 @@ public GetApplicationKeyInvokeArgs() [OutputType] public sealed class GetApplicationKeyResult { + /// + /// Whether to use exact match when searching by name. + /// + public readonly bool? ExactMatch; /// /// Id for Application Key. /// @@ -128,12 +144,15 @@ public sealed class GetApplicationKeyResult [OutputConstructor] private GetApplicationKeyResult( + bool? exactMatch, + string? id, string key, string? name) { + ExactMatch = exactMatch; Id = id; Key = key; Name = name; diff --git a/sdk/dotnet/GetSecurityMonitoringSuppressions.cs b/sdk/dotnet/GetSecurityMonitoringSuppressions.cs new file mode 100644 index 000000000..4d18358ec --- /dev/null +++ b/sdk/dotnet/GetSecurityMonitoringSuppressions.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog +{ + public static class GetSecurityMonitoringSuppressions + { + /// + /// Use this data source to retrieve information about existing suppression rules, and use them in other resources. + /// + public static Task InvokeAsync(InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.InvokeAsync("datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions", InvokeArgs.Empty, options.WithDefaults()); + + /// + /// Use this data source to retrieve information about existing suppression rules, and use them in other resources. + /// + public static Output Invoke(InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.Invoke("datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions", InvokeArgs.Empty, options.WithDefaults()); + } + + + [OutputType] + public sealed class GetSecurityMonitoringSuppressionsResult + { + /// + /// The ID of this resource. + /// + public readonly string Id; + /// + /// List of IDs of suppressions + /// + public readonly ImmutableArray SuppressionIds; + /// + /// List of suppressions + /// + public readonly ImmutableArray Suppressions; + + [OutputConstructor] + private GetSecurityMonitoringSuppressionsResult( + string id, + + ImmutableArray suppressionIds, + + ImmutableArray suppressions) + { + Id = id; + SuppressionIds = suppressionIds; + Suppressions = suppressions; + } + } +} diff --git a/sdk/dotnet/GetSensitiveDataScannerStandardPattern.cs b/sdk/dotnet/GetSensitiveDataScannerStandardPattern.cs index 95cb22cc3..315d85251 100644 --- a/sdk/dotnet/GetSensitiveDataScannerStandardPattern.cs +++ b/sdk/dotnet/GetSensitiveDataScannerStandardPattern.cs @@ -66,6 +66,10 @@ public sealed class GetSensitiveDataScannerStandardPatternResult /// public readonly string Id; /// + /// List of recommended keywords to improve rule accuracy. + /// + public readonly ImmutableArray IncludedKeywords; + /// /// Name of the standard pattern. /// public readonly string Name; @@ -84,6 +88,8 @@ private GetSensitiveDataScannerStandardPatternResult( string id, + ImmutableArray includedKeywords, + string name, string pattern, @@ -92,6 +98,7 @@ private GetSensitiveDataScannerStandardPatternResult( { Filter = filter; Id = id; + IncludedKeywords = includedKeywords; Name = name; Pattern = pattern; Tags = tags; diff --git a/sdk/dotnet/Inputs/LogsIndexDailyLimitResetArgs.cs b/sdk/dotnet/Inputs/LogsIndexDailyLimitResetArgs.cs new file mode 100644 index 000000000..004225284 --- /dev/null +++ b/sdk/dotnet/Inputs/LogsIndexDailyLimitResetArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class LogsIndexDailyLimitResetArgs : global::Pulumi.ResourceArgs + { + /// + /// String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + /// + [Input("resetTime", required: true)] + public Input ResetTime { get; set; } = null!; + + /// + /// String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + /// + [Input("resetUtcOffset", required: true)] + public Input ResetUtcOffset { get; set; } = null!; + + public LogsIndexDailyLimitResetArgs() + { + } + public static new LogsIndexDailyLimitResetArgs Empty => new LogsIndexDailyLimitResetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/LogsIndexDailyLimitResetGetArgs.cs b/sdk/dotnet/Inputs/LogsIndexDailyLimitResetGetArgs.cs new file mode 100644 index 000000000..145cc4035 --- /dev/null +++ b/sdk/dotnet/Inputs/LogsIndexDailyLimitResetGetArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class LogsIndexDailyLimitResetGetArgs : global::Pulumi.ResourceArgs + { + /// + /// String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + /// + [Input("resetTime", required: true)] + public Input ResetTime { get; set; } = null!; + + /// + /// String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + /// + [Input("resetUtcOffset", required: true)] + public Input ResetUtcOffset { get; set; } = null!; + + public LogsIndexDailyLimitResetGetArgs() + { + } + public static new LogsIndexDailyLimitResetGetArgs Empty => new LogsIndexDailyLimitResetGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsArgs.cs index 3dc1413b1..84fdc9dd3 100644 --- a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsArgs.cs +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsArgs.cs @@ -39,14 +39,14 @@ public sealed class SecurityMonitoringRuleOptionsArgs : global::Pulumi.ResourceA /// /// Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. /// - [Input("keepAlive", required: true)] - public Input KeepAlive { get; set; } = null!; + [Input("keepAlive")] + public Input? KeepAlive { get; set; } /// /// A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. /// - [Input("maxSignalDuration", required: true)] - public Input MaxSignalDuration { get; set; } = null!; + [Input("maxSignalDuration")] + public Input? MaxSignalDuration { get; set; } /// /// New value rules specific options. @@ -54,6 +54,12 @@ public sealed class SecurityMonitoringRuleOptionsArgs : global::Pulumi.ResourceA [Input("newValueOptions")] public Input? NewValueOptions { get; set; } + /// + /// Options for rules using the third-party detection method. + /// + [Input("thirdPartyRuleOptions")] + public Input? ThirdPartyRuleOptions { get; set; } + public SecurityMonitoringRuleOptionsArgs() { } diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsGetArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsGetArgs.cs index ccff02c3a..8279257f2 100644 --- a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsGetArgs.cs +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsGetArgs.cs @@ -39,14 +39,14 @@ public sealed class SecurityMonitoringRuleOptionsGetArgs : global::Pulumi.Resour /// /// Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. /// - [Input("keepAlive", required: true)] - public Input KeepAlive { get; set; } = null!; + [Input("keepAlive")] + public Input? KeepAlive { get; set; } /// /// A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. /// - [Input("maxSignalDuration", required: true)] - public Input MaxSignalDuration { get; set; } = null!; + [Input("maxSignalDuration")] + public Input? MaxSignalDuration { get; set; } /// /// New value rules specific options. @@ -54,6 +54,12 @@ public sealed class SecurityMonitoringRuleOptionsGetArgs : global::Pulumi.Resour [Input("newValueOptions")] public Input? NewValueOptions { get; set; } + /// + /// Options for rules using the third-party detection method. + /// + [Input("thirdPartyRuleOptions")] + public Input? ThirdPartyRuleOptions { get; set; } + public SecurityMonitoringRuleOptionsGetArgs() { } diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.cs new file mode 100644 index 000000000..023dab2e8 --- /dev/null +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.cs @@ -0,0 +1,56 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs : global::Pulumi.ResourceArgs + { + [Input("defaultNotifications")] + private InputList? _defaultNotifications; + + /// + /// Notification targets for the default rule case, when none of the third-party cases match. + /// + public InputList DefaultNotifications + { + get => _defaultNotifications ?? (_defaultNotifications = new InputList()); + set => _defaultNotifications = value; + } + + /// + /// Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + /// + [Input("defaultStatus", required: true)] + public Input DefaultStatus { get; set; } = null!; + + [Input("rootQueries", required: true)] + private InputList? _rootQueries; + + /// + /// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + /// + public InputList RootQueries + { + get => _rootQueries ?? (_rootQueries = new InputList()); + set => _rootQueries = value; + } + + /// + /// A template for the signal title; if omitted, the title is generated based on the case name. + /// + [Input("signalTitleTemplate")] + public Input? SignalTitleTemplate { get; set; } + + public SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs() + { + } + public static new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs Empty => new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs.cs new file mode 100644 index 000000000..5395326bb --- /dev/null +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs.cs @@ -0,0 +1,56 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs : global::Pulumi.ResourceArgs + { + [Input("defaultNotifications")] + private InputList? _defaultNotifications; + + /// + /// Notification targets for the default rule case, when none of the third-party cases match. + /// + public InputList DefaultNotifications + { + get => _defaultNotifications ?? (_defaultNotifications = new InputList()); + set => _defaultNotifications = value; + } + + /// + /// Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + /// + [Input("defaultStatus", required: true)] + public Input DefaultStatus { get; set; } = null!; + + [Input("rootQueries", required: true)] + private InputList? _rootQueries; + + /// + /// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + /// + public InputList RootQueries + { + get => _rootQueries ?? (_rootQueries = new InputList()); + set => _rootQueries = value; + } + + /// + /// A template for the signal title; if omitted, the title is generated based on the case name. + /// + [Input("signalTitleTemplate")] + public Input? SignalTitleTemplate { get; set; } + + public SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs() + { + } + public static new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs Empty => new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.cs new file mode 100644 index 000000000..de587f2c7 --- /dev/null +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs : global::Pulumi.ResourceArgs + { + [Input("groupByFields")] + private InputList? _groupByFields; + + /// + /// Fields to group by. If empty, each log triggers a signal. + /// + public InputList GroupByFields + { + get => _groupByFields ?? (_groupByFields = new InputList()); + set => _groupByFields = value; + } + + /// + /// Query for selecting logs to apply the filtering action. + /// + [Input("query", required: true)] + public Input Query { get; set; } = null!; + + public SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs() + { + } + public static new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs Empty => new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs.cs new file mode 100644 index 000000000..2e0245a86 --- /dev/null +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs : global::Pulumi.ResourceArgs + { + [Input("groupByFields")] + private InputList? _groupByFields; + + /// + /// Fields to group by. If empty, each log triggers a signal. + /// + public InputList GroupByFields + { + get => _groupByFields ?? (_groupByFields = new InputList()); + set => _groupByFields = value; + } + + /// + /// Query for selecting logs to apply the filtering action. + /// + [Input("query", required: true)] + public Input Query { get; set; } = null!; + + public SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs() + { + } + public static new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs Empty => new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseArgs.cs new file mode 100644 index 000000000..ae1df93d3 --- /dev/null +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseArgs.cs @@ -0,0 +1,50 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SecurityMonitoringRuleThirdPartyCaseArgs : global::Pulumi.ResourceArgs + { + /// + /// Name of the case. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("notifications")] + private InputList? _notifications; + + /// + /// Notification targets for each rule case. + /// + public InputList Notifications + { + get => _notifications ?? (_notifications = new InputList()); + set => _notifications = value; + } + + /// + /// A query to associate a third-party event to this case. + /// + [Input("query")] + public Input? Query { get; set; } + + /// + /// Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + /// + [Input("status", required: true)] + public Input Status { get; set; } = null!; + + public SecurityMonitoringRuleThirdPartyCaseArgs() + { + } + public static new SecurityMonitoringRuleThirdPartyCaseArgs Empty => new SecurityMonitoringRuleThirdPartyCaseArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseGetArgs.cs b/sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseGetArgs.cs new file mode 100644 index 000000000..f31f9e7c3 --- /dev/null +++ b/sdk/dotnet/Inputs/SecurityMonitoringRuleThirdPartyCaseGetArgs.cs @@ -0,0 +1,50 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SecurityMonitoringRuleThirdPartyCaseGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Name of the case. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("notifications")] + private InputList? _notifications; + + /// + /// Notification targets for each rule case. + /// + public InputList Notifications + { + get => _notifications ?? (_notifications = new InputList()); + set => _notifications = value; + } + + /// + /// A query to associate a third-party event to this case. + /// + [Input("query")] + public Input? Query { get; set; } + + /// + /// Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + /// + [Input("status", required: true)] + public Input Status { get; set; } = null!; + + public SecurityMonitoringRuleThirdPartyCaseGetArgs() + { + } + public static new SecurityMonitoringRuleThirdPartyCaseGetArgs Empty => new SecurityMonitoringRuleThirdPartyCaseGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.cs b/sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.cs new file mode 100644 index 000000000..d5b11cc47 --- /dev/null +++ b/sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SensitiveDataScannerRuleIncludedKeywordConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + /// + [Input("characterCount", required: true)] + public Input CharacterCount { get; set; } = null!; + + [Input("keywords", required: true)] + private InputList? _keywords; + + /// + /// Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + /// + public InputList Keywords + { + get => _keywords ?? (_keywords = new InputList()); + set => _keywords = value; + } + + public SensitiveDataScannerRuleIncludedKeywordConfigurationArgs() + { + } + public static new SensitiveDataScannerRuleIncludedKeywordConfigurationArgs Empty => new SensitiveDataScannerRuleIncludedKeywordConfigurationArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs.cs b/sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs.cs new file mode 100644 index 000000000..5e327a59f --- /dev/null +++ b/sdk/dotnet/Inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + /// + [Input("characterCount", required: true)] + public Input CharacterCount { get; set; } = null!; + + [Input("keywords", required: true)] + private InputList? _keywords; + + /// + /// Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + /// + public InputList Keywords + { + get => _keywords ?? (_keywords = new InputList()); + set => _keywords = value; + } + + public SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs() + { + } + public static new SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs Empty => new SensitiveDataScannerRuleIncludedKeywordConfigurationGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationArgs.cs new file mode 100644 index 000000000..b8a759b60 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + /// + [Input("timeSlice", required: true)] + public Input TimeSlice { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationArgs Empty => new ServiceLevelObjectiveSliSpecificationArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationGetArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationGetArgs.cs new file mode 100644 index 000000000..6ea4cafe2 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + /// + [Input("timeSlice", required: true)] + public Input TimeSlice { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationGetArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationGetArgs Empty => new ServiceLevelObjectiveSliSpecificationGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.cs new file mode 100644 index 000000000..c76663b2b --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceArgs : global::Pulumi.ResourceArgs + { + /// + /// The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + /// + [Input("comparator", required: true)] + public Input Comparator { get; set; } = null!; + + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + [Input("query", required: true)] + public Input Query { get; set; } = null!; + + /// + /// The threshold value to which each SLI value will be compared. + /// + [Input("threshold", required: true)] + public Input Threshold { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationTimeSliceArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs.cs new file mode 100644 index 000000000..b521c0de5 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + /// + [Input("comparator", required: true)] + public Input Comparator { get; set; } = null!; + + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + [Input("query", required: true)] + public Input Query { get; set; } = null!; + + /// + /// The threshold value to which each SLI value will be compared. + /// + [Input("threshold", required: true)] + public Input Threshold { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.cs new file mode 100644 index 000000000..f920dea27 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs : global::Pulumi.ResourceArgs + { + /// + /// A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + /// + [Input("formula", required: true)] + public Input Formula { get; set; } = null!; + + [Input("queries", required: true)] + private InputList? _queries; + + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + public InputList Queries + { + get => _queries ?? (_queries = new InputList()); + set => _queries = value; + } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.cs new file mode 100644 index 000000000..e9c3a36d2 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs : global::Pulumi.ResourceArgs + { + /// + /// The formula string, which is an expression involving named queries. + /// + [Input("formulaExpression", required: true)] + public Input FormulaExpression { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs.cs new file mode 100644 index 000000000..6aa9b9367 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The formula string, which is an expression involving named queries. + /// + [Input("formulaExpression", required: true)] + public Input FormulaExpression { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs.cs new file mode 100644 index 000000000..34512e16e --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs : global::Pulumi.ResourceArgs + { + /// + /// A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + /// + [Input("formula", required: true)] + public Input Formula { get; set; } = null!; + + [Input("queries", required: true)] + private InputList? _queries; + + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + public InputList Queries + { + get => _queries ?? (_queries = new InputList()); + set => _queries = value; + } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.cs new file mode 100644 index 000000000..3d0c8611a --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs : global::Pulumi.ResourceArgs + { + /// + /// A timeseries formula and functions metrics query. + /// + [Input("metricQuery")] + public Input? MetricQuery { get; set; } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs.cs new file mode 100644 index 000000000..afce63f61 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs : global::Pulumi.ResourceArgs + { + /// + /// A timeseries formula and functions metrics query. + /// + [Input("metricQuery")] + public Input? MetricQuery { get; set; } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryGetArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.cs new file mode 100644 index 000000000..9000fdb24 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs : global::Pulumi.ResourceArgs + { + /// + /// The data source for metrics queries. Defaults to `"metrics"`. + /// + [Input("dataSource")] + public Input? DataSource { get; set; } + + /// + /// The name of the query for use in formulas. + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + [Input("query", required: true)] + public Input Query { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs(); + } +} diff --git a/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs.cs b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs.cs new file mode 100644 index 000000000..124bed519 --- /dev/null +++ b/sdk/dotnet/Inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Inputs +{ + + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The data source for metrics queries. Defaults to `"metrics"`. + /// + [Input("dataSource")] + public Input? DataSource { get; set; } + + /// + /// The name of the query for use in formulas. + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + [Input("query", required: true)] + public Input Query { get; set; } = null!; + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs() + { + } + public static new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs Empty => new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryGetArgs(); + } +} diff --git a/sdk/dotnet/LogsIndex.cs b/sdk/dotnet/LogsIndex.cs index b14b91d7c..fb87fdd82 100644 --- a/sdk/dotnet/LogsIndex.cs +++ b/sdk/dotnet/LogsIndex.cs @@ -23,6 +23,12 @@ namespace Pulumi.Datadog /// var sampleIndex = new Datadog.LogsIndex("sampleIndex", new() /// { /// DailyLimit = 200000, + /// DailyLimitReset = new Datadog.Inputs.LogsIndexDailyLimitResetArgs + /// { + /// ResetTime = "14:00", + /// ResetUtcOffset = "+02:00", + /// }, + /// DailyLimitWarningThresholdPercentage = 50, /// ExclusionFilters = new[] /// { /// new Datadog.Inputs.LogsIndexExclusionFilterArgs @@ -81,6 +87,18 @@ public partial class LogsIndex : global::Pulumi.CustomResource [Output("dailyLimit")] public Output DailyLimit { get; private set; } = null!; + /// + /// Object containing options to override the default daily limit reset time. + /// + [Output("dailyLimitReset")] + public Output DailyLimitReset { get; private set; } = null!; + + /// + /// A percentage threshold of the daily quota at which a Datadog warning event is generated. + /// + [Output("dailyLimitWarningThresholdPercentage")] + public Output DailyLimitWarningThresholdPercentage { get; private set; } = null!; + /// /// If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. /// @@ -163,6 +181,18 @@ public sealed class LogsIndexArgs : global::Pulumi.ResourceArgs [Input("dailyLimit")] public Input? DailyLimit { get; set; } + /// + /// Object containing options to override the default daily limit reset time. + /// + [Input("dailyLimitReset")] + public Input? DailyLimitReset { get; set; } + + /// + /// A percentage threshold of the daily quota at which a Datadog warning event is generated. + /// + [Input("dailyLimitWarningThresholdPercentage")] + public Input? DailyLimitWarningThresholdPercentage { get; set; } + /// /// If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. /// @@ -219,6 +249,18 @@ public sealed class LogsIndexState : global::Pulumi.ResourceArgs [Input("dailyLimit")] public Input? DailyLimit { get; set; } + /// + /// Object containing options to override the default daily limit reset time. + /// + [Input("dailyLimitReset")] + public Input? DailyLimitReset { get; set; } + + /// + /// A percentage threshold of the daily quota at which a Datadog warning event is generated. + /// + [Input("dailyLimitWarningThresholdPercentage")] + public Input? DailyLimitWarningThresholdPercentage { get; set; } + /// /// If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. /// diff --git a/sdk/dotnet/OpenapiApi.cs b/sdk/dotnet/OpenapiApi.cs new file mode 100644 index 000000000..972ae7a5b --- /dev/null +++ b/sdk/dotnet/OpenapiApi.cs @@ -0,0 +1,121 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog +{ + /// + /// Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.IO; + /// using System.Linq; + /// using Pulumi; + /// using Datadog = Pulumi.Datadog; + /// + /// return await Deployment.RunAsync(() => + /// { + /// // Create new openapi_api resource + /// var my_api = new Datadog.OpenapiApi("my-api", new() + /// { + /// Spec = File.ReadAllText("./path/my-api.yaml"), + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// ```sh + /// $ pulumi import datadog:index/openapiApi:OpenapiApi new_list "90646597-5fdb-4a17-a240-647003f8c028" + /// ``` + /// + [DatadogResourceType("datadog:index/openapiApi:OpenapiApi")] + public partial class OpenapiApi : global::Pulumi.CustomResource + { + /// + /// The OpenAPI spec. + /// + [Output("spec")] + public Output Spec { get; private set; } = null!; + + + /// + /// Create a OpenapiApi resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public OpenapiApi(string name, OpenapiApiArgs args, CustomResourceOptions? options = null) + : base("datadog:index/openapiApi:OpenapiApi", name, args ?? new OpenapiApiArgs(), MakeResourceOptions(options, "")) + { + } + + private OpenapiApi(string name, Input id, OpenapiApiState? state = null, CustomResourceOptions? options = null) + : base("datadog:index/openapiApi:OpenapiApi", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing OpenapiApi resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static OpenapiApi Get(string name, Input id, OpenapiApiState? state = null, CustomResourceOptions? options = null) + { + return new OpenapiApi(name, id, state, options); + } + } + + public sealed class OpenapiApiArgs : global::Pulumi.ResourceArgs + { + /// + /// The OpenAPI spec. + /// + [Input("spec", required: true)] + public Input Spec { get; set; } = null!; + + public OpenapiApiArgs() + { + } + public static new OpenapiApiArgs Empty => new OpenapiApiArgs(); + } + + public sealed class OpenapiApiState : global::Pulumi.ResourceArgs + { + /// + /// The OpenAPI spec. + /// + [Input("spec")] + public Input? Spec { get; set; } + + public OpenapiApiState() + { + } + public static new OpenapiApiState Empty => new OpenapiApiState(); + } +} diff --git a/sdk/dotnet/Outputs/GetLogsIndexesLogsIndexDailyLimitResetResult.cs b/sdk/dotnet/Outputs/GetLogsIndexesLogsIndexDailyLimitResetResult.cs new file mode 100644 index 000000000..3c3c8750c --- /dev/null +++ b/sdk/dotnet/Outputs/GetLogsIndexesLogsIndexDailyLimitResetResult.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class GetLogsIndexesLogsIndexDailyLimitResetResult + { + /// + /// String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + /// + public readonly string ResetTime; + /// + /// String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + /// + public readonly string ResetUtcOffset; + + [OutputConstructor] + private GetLogsIndexesLogsIndexDailyLimitResetResult( + string resetTime, + + string resetUtcOffset) + { + ResetTime = resetTime; + ResetUtcOffset = resetUtcOffset; + } + } +} diff --git a/sdk/dotnet/Outputs/GetLogsIndexesLogsIndexResult.cs b/sdk/dotnet/Outputs/GetLogsIndexesLogsIndexResult.cs index 891bb7860..d7a7b285c 100644 --- a/sdk/dotnet/Outputs/GetLogsIndexesLogsIndexResult.cs +++ b/sdk/dotnet/Outputs/GetLogsIndexesLogsIndexResult.cs @@ -18,6 +18,14 @@ public sealed class GetLogsIndexesLogsIndexResult /// public readonly int DailyLimit; /// + /// Object containing options to override the default daily limit reset time. + /// + public readonly ImmutableArray DailyLimitResets; + /// + /// The percentage threshold of the daily quota at which a Datadog warning event is generated. + /// + public readonly double DailyLimitWarningThresholdPercentage; + /// /// List of exclusion filters. /// public readonly ImmutableArray ExclusionFilters; @@ -38,6 +46,10 @@ public sealed class GetLogsIndexesLogsIndexResult private GetLogsIndexesLogsIndexResult( int dailyLimit, + ImmutableArray dailyLimitResets, + + double dailyLimitWarningThresholdPercentage, + ImmutableArray exclusionFilters, ImmutableArray filters, @@ -47,6 +59,8 @@ private GetLogsIndexesLogsIndexResult( int retentionDays) { DailyLimit = dailyLimit; + DailyLimitResets = dailyLimitResets; + DailyLimitWarningThresholdPercentage = dailyLimitWarningThresholdPercentage; ExclusionFilters = exclusionFilters; Filters = filters; Name = name; diff --git a/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsResult.cs b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsResult.cs index 26096fe32..074aefb83 100644 --- a/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsResult.cs +++ b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsResult.cs @@ -32,15 +32,19 @@ public sealed class GetSecurityMonitoringRulesRuleOptionsResult /// /// Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). /// - public readonly int KeepAlive; + public readonly int? KeepAlive; /// /// A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. /// - public readonly int MaxSignalDuration; + public readonly int? MaxSignalDuration; /// /// New value rules specific options. /// public readonly Outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptionsResult? NewValueOptions; + /// + /// Options for rules using the third-party detection method. + /// + public readonly Outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult? ThirdPartyRuleOptions; [OutputConstructor] private GetSecurityMonitoringRulesRuleOptionsResult( @@ -52,11 +56,13 @@ private GetSecurityMonitoringRulesRuleOptionsResult( Outputs.GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsResult? impossibleTravelOptions, - int keepAlive, + int? keepAlive, + + int? maxSignalDuration, - int maxSignalDuration, + Outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptionsResult? newValueOptions, - Outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptionsResult? newValueOptions) + Outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult? thirdPartyRuleOptions) { DecreaseCriticalityBasedOnEnv = decreaseCriticalityBasedOnEnv; DetectionMethod = detectionMethod; @@ -65,6 +71,7 @@ private GetSecurityMonitoringRulesRuleOptionsResult( KeepAlive = keepAlive; MaxSignalDuration = maxSignalDuration; NewValueOptions = newValueOptions; + ThirdPartyRuleOptions = thirdPartyRuleOptions; } } } diff --git a/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult.cs b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult.cs new file mode 100644 index 000000000..55805af8a --- /dev/null +++ b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult.cs @@ -0,0 +1,49 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult + { + /// + /// Notification targets for the default rule case, when none of the third-party cases match. + /// + public readonly ImmutableArray DefaultNotifications; + /// + /// Severity of the default rule case, when none of the third-party cases match. + /// + public readonly string DefaultStatus; + /// + /// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + /// + public readonly ImmutableArray RootQueries; + /// + /// A template for the signal title; if omitted, the title is generated based on the case name. + /// + public readonly string? SignalTitleTemplate; + + [OutputConstructor] + private GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult( + ImmutableArray defaultNotifications, + + string defaultStatus, + + ImmutableArray rootQueries, + + string? signalTitleTemplate) + { + DefaultNotifications = defaultNotifications; + DefaultStatus = defaultStatus; + RootQueries = rootQueries; + SignalTitleTemplate = signalTitleTemplate; + } + } +} diff --git a/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult.cs b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult.cs new file mode 100644 index 000000000..9fbd7cb95 --- /dev/null +++ b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult + { + /// + /// Fields to group by. If empty, each log triggers a signal. + /// + public readonly ImmutableArray GroupByFields; + /// + /// Query to filter logs. + /// + public readonly string Query; + + [OutputConstructor] + private GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult( + ImmutableArray groupByFields, + + string query) + { + GroupByFields = groupByFields; + Query = query; + } + } +} diff --git a/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleResult.cs b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleResult.cs index 551c6381c..94b0e7a14 100644 --- a/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleResult.cs +++ b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleResult.cs @@ -54,6 +54,10 @@ public sealed class GetSecurityMonitoringRulesRuleResult /// public readonly ImmutableArray Tags; /// + /// Cases for generating signals for third-party rules. Only required and accepted for third-party rules + /// + public readonly ImmutableArray ThirdPartyCases; + /// /// The rule type. /// public readonly string? Type; @@ -80,6 +84,8 @@ private GetSecurityMonitoringRulesRuleResult( ImmutableArray tags, + ImmutableArray thirdPartyCases, + string? type) { Cases = cases; @@ -92,6 +98,7 @@ private GetSecurityMonitoringRulesRuleResult( Queries = queries; SignalQueries = signalQueries; Tags = tags; + ThirdPartyCases = thirdPartyCases; Type = type; } } diff --git a/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleThirdPartyCaseResult.cs b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleThirdPartyCaseResult.cs new file mode 100644 index 000000000..d817ebaa5 --- /dev/null +++ b/sdk/dotnet/Outputs/GetSecurityMonitoringRulesRuleThirdPartyCaseResult.cs @@ -0,0 +1,49 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class GetSecurityMonitoringRulesRuleThirdPartyCaseResult + { + /// + /// Name of the case. + /// + public readonly string? Name; + /// + /// Notification targets for each rule case. + /// + public readonly ImmutableArray Notifications; + /// + /// A query to associate a third-party event to this case. + /// + public readonly string? Query; + /// + /// Severity of the Security Signal. + /// + public readonly string Status; + + [OutputConstructor] + private GetSecurityMonitoringRulesRuleThirdPartyCaseResult( + string? name, + + ImmutableArray notifications, + + string? query, + + string status) + { + Name = name; + Notifications = notifications; + Query = query; + Status = status; + } + } +} diff --git a/sdk/dotnet/Outputs/GetSecurityMonitoringSuppressionsSuppressionResult.cs b/sdk/dotnet/Outputs/GetSecurityMonitoringSuppressionsSuppressionResult.cs new file mode 100644 index 000000000..63feefbf2 --- /dev/null +++ b/sdk/dotnet/Outputs/GetSecurityMonitoringSuppressionsSuppressionResult.cs @@ -0,0 +1,49 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class GetSecurityMonitoringSuppressionsSuppressionResult + { + public readonly string Description; + public readonly bool Enabled; + public readonly string ExpirationDate; + public readonly string Id; + public readonly string Name; + public readonly string RuleQuery; + public readonly string SuppressionQuery; + + [OutputConstructor] + private GetSecurityMonitoringSuppressionsSuppressionResult( + string description, + + bool enabled, + + string expirationDate, + + string id, + + string name, + + string ruleQuery, + + string suppressionQuery) + { + Description = description; + Enabled = enabled; + ExpirationDate = expirationDate; + Id = id; + Name = name; + RuleQuery = ruleQuery; + SuppressionQuery = suppressionQuery; + } + } +} diff --git a/sdk/dotnet/Outputs/LogsIndexDailyLimitReset.cs b/sdk/dotnet/Outputs/LogsIndexDailyLimitReset.cs new file mode 100644 index 000000000..9a24cf983 --- /dev/null +++ b/sdk/dotnet/Outputs/LogsIndexDailyLimitReset.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class LogsIndexDailyLimitReset + { + /// + /// String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + /// + public readonly string ResetTime; + /// + /// String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + /// + public readonly string ResetUtcOffset; + + [OutputConstructor] + private LogsIndexDailyLimitReset( + string resetTime, + + string resetUtcOffset) + { + ResetTime = resetTime; + ResetUtcOffset = resetUtcOffset; + } + } +} diff --git a/sdk/dotnet/Outputs/SecurityMonitoringRuleOptions.cs b/sdk/dotnet/Outputs/SecurityMonitoringRuleOptions.cs index 253f2c78e..8ae8bcde8 100644 --- a/sdk/dotnet/Outputs/SecurityMonitoringRuleOptions.cs +++ b/sdk/dotnet/Outputs/SecurityMonitoringRuleOptions.cs @@ -32,15 +32,19 @@ public sealed class SecurityMonitoringRuleOptions /// /// Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. /// - public readonly int KeepAlive; + public readonly int? KeepAlive; /// /// A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. /// - public readonly int MaxSignalDuration; + public readonly int? MaxSignalDuration; /// /// New value rules specific options. /// public readonly Outputs.SecurityMonitoringRuleOptionsNewValueOptions? NewValueOptions; + /// + /// Options for rules using the third-party detection method. + /// + public readonly Outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptions? ThirdPartyRuleOptions; [OutputConstructor] private SecurityMonitoringRuleOptions( @@ -52,11 +56,13 @@ private SecurityMonitoringRuleOptions( Outputs.SecurityMonitoringRuleOptionsImpossibleTravelOptions? impossibleTravelOptions, - int keepAlive, + int? keepAlive, + + int? maxSignalDuration, - int maxSignalDuration, + Outputs.SecurityMonitoringRuleOptionsNewValueOptions? newValueOptions, - Outputs.SecurityMonitoringRuleOptionsNewValueOptions? newValueOptions) + Outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptions? thirdPartyRuleOptions) { DecreaseCriticalityBasedOnEnv = decreaseCriticalityBasedOnEnv; DetectionMethod = detectionMethod; @@ -65,6 +71,7 @@ private SecurityMonitoringRuleOptions( KeepAlive = keepAlive; MaxSignalDuration = maxSignalDuration; NewValueOptions = newValueOptions; + ThirdPartyRuleOptions = thirdPartyRuleOptions; } } } diff --git a/sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.cs b/sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.cs new file mode 100644 index 000000000..d27ddc00f --- /dev/null +++ b/sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.cs @@ -0,0 +1,49 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class SecurityMonitoringRuleOptionsThirdPartyRuleOptions + { + /// + /// Notification targets for the default rule case, when none of the third-party cases match. + /// + public readonly ImmutableArray DefaultNotifications; + /// + /// Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + /// + public readonly string DefaultStatus; + /// + /// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + /// + public readonly ImmutableArray RootQueries; + /// + /// A template for the signal title; if omitted, the title is generated based on the case name. + /// + public readonly string? SignalTitleTemplate; + + [OutputConstructor] + private SecurityMonitoringRuleOptionsThirdPartyRuleOptions( + ImmutableArray defaultNotifications, + + string defaultStatus, + + ImmutableArray rootQueries, + + string? signalTitleTemplate) + { + DefaultNotifications = defaultNotifications; + DefaultStatus = defaultStatus; + RootQueries = rootQueries; + SignalTitleTemplate = signalTitleTemplate; + } + } +} diff --git a/sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.cs b/sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.cs new file mode 100644 index 000000000..0ec56ebc9 --- /dev/null +++ b/sdk/dotnet/Outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery + { + /// + /// Fields to group by. If empty, each log triggers a signal. + /// + public readonly ImmutableArray GroupByFields; + /// + /// Query for selecting logs to apply the filtering action. + /// + public readonly string Query; + + [OutputConstructor] + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery( + ImmutableArray groupByFields, + + string query) + { + GroupByFields = groupByFields; + Query = query; + } + } +} diff --git a/sdk/dotnet/Outputs/SecurityMonitoringRuleThirdPartyCase.cs b/sdk/dotnet/Outputs/SecurityMonitoringRuleThirdPartyCase.cs new file mode 100644 index 000000000..ce0d33a60 --- /dev/null +++ b/sdk/dotnet/Outputs/SecurityMonitoringRuleThirdPartyCase.cs @@ -0,0 +1,49 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class SecurityMonitoringRuleThirdPartyCase + { + /// + /// Name of the case. + /// + public readonly string? Name; + /// + /// Notification targets for each rule case. + /// + public readonly ImmutableArray Notifications; + /// + /// A query to associate a third-party event to this case. + /// + public readonly string? Query; + /// + /// Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + /// + public readonly string Status; + + [OutputConstructor] + private SecurityMonitoringRuleThirdPartyCase( + string? name, + + ImmutableArray notifications, + + string? query, + + string status) + { + Name = name; + Notifications = notifications; + Query = query; + Status = status; + } + } +} diff --git a/sdk/dotnet/Outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.cs b/sdk/dotnet/Outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.cs new file mode 100644 index 000000000..e28807a06 --- /dev/null +++ b/sdk/dotnet/Outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class SensitiveDataScannerRuleIncludedKeywordConfiguration + { + /// + /// Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + /// + public readonly int CharacterCount; + /// + /// Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + /// + public readonly ImmutableArray Keywords; + + [OutputConstructor] + private SensitiveDataScannerRuleIncludedKeywordConfiguration( + int characterCount, + + ImmutableArray keywords) + { + CharacterCount = characterCount; + Keywords = keywords; + } + } +} diff --git a/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecification.cs b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecification.cs new file mode 100644 index 000000000..0fbd52a49 --- /dev/null +++ b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecification.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class ServiceLevelObjectiveSliSpecification + { + /// + /// The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + /// + public readonly Outputs.ServiceLevelObjectiveSliSpecificationTimeSlice TimeSlice; + + [OutputConstructor] + private ServiceLevelObjectiveSliSpecification(Outputs.ServiceLevelObjectiveSliSpecificationTimeSlice timeSlice) + { + TimeSlice = timeSlice; + } + } +} diff --git a/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.cs b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.cs new file mode 100644 index 000000000..e8631c066 --- /dev/null +++ b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class ServiceLevelObjectiveSliSpecificationTimeSlice + { + /// + /// The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + /// + public readonly string Comparator; + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + public readonly Outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQuery Query; + /// + /// The threshold value to which each SLI value will be compared. + /// + public readonly double Threshold; + + [OutputConstructor] + private ServiceLevelObjectiveSliSpecificationTimeSlice( + string comparator, + + Outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQuery query, + + double threshold) + { + Comparator = comparator; + Query = query; + Threshold = threshold; + } + } +} diff --git a/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.cs b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.cs new file mode 100644 index 000000000..4c56b70f4 --- /dev/null +++ b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQuery + { + /// + /// A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + /// + public readonly Outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula Formula; + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + public readonly ImmutableArray Queries; + + [OutputConstructor] + private ServiceLevelObjectiveSliSpecificationTimeSliceQuery( + Outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula formula, + + ImmutableArray queries) + { + Formula = formula; + Queries = queries; + } + } +} diff --git a/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.cs b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.cs new file mode 100644 index 000000000..00e92810b --- /dev/null +++ b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula + { + /// + /// The formula string, which is an expression involving named queries. + /// + public readonly string FormulaExpression; + + [OutputConstructor] + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula(string formulaExpression) + { + FormulaExpression = formulaExpression; + } + } +} diff --git a/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.cs b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.cs new file mode 100644 index 000000000..f18e7ffe8 --- /dev/null +++ b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery + { + /// + /// A timeseries formula and functions metrics query. + /// + public readonly Outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery? MetricQuery; + + [OutputConstructor] + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery(Outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery? metricQuery) + { + MetricQuery = metricQuery; + } + } +} diff --git a/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.cs b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.cs new file mode 100644 index 000000000..ec0800172 --- /dev/null +++ b/sdk/dotnet/Outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog.Outputs +{ + + [OutputType] + public sealed class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery + { + /// + /// The data source for metrics queries. Defaults to `"metrics"`. + /// + public readonly string? DataSource; + /// + /// The name of the query for use in formulas. + /// + public readonly string Name; + /// + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + /// + public readonly string Query; + + [OutputConstructor] + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery( + string? dataSource, + + string name, + + string query) + { + DataSource = dataSource; + Name = name; + Query = query; + } + } +} diff --git a/sdk/dotnet/SecurityMonitoringRule.cs b/sdk/dotnet/SecurityMonitoringRule.cs index ed23a16d7..2915bacc6 100644 --- a/sdk/dotnet/SecurityMonitoringRule.cs +++ b/sdk/dotnet/SecurityMonitoringRule.cs @@ -148,6 +148,12 @@ public partial class SecurityMonitoringRule : global::Pulumi.CustomResource [Output("tags")] public Output> Tags { get; private set; } = null!; + /// + /// Cases for generating signals for third-party rules. Only required and accepted for third-party rules + /// + [Output("thirdPartyCases")] + public Output> ThirdPartyCases { get; private set; } = null!; + /// /// The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. /// @@ -200,7 +206,7 @@ public static SecurityMonitoringRule Get(string name, Input id, Security public sealed class SecurityMonitoringRuleArgs : global::Pulumi.ResourceArgs { - [Input("cases", required: true)] + [Input("cases")] private InputList? _cases; /// @@ -290,6 +296,18 @@ public InputList Tags set => _tags = value; } + [Input("thirdPartyCases")] + private InputList? _thirdPartyCases; + + /// + /// Cases for generating signals for third-party rules. Only required and accepted for third-party rules + /// + public InputList ThirdPartyCases + { + get => _thirdPartyCases ?? (_thirdPartyCases = new InputList()); + set => _thirdPartyCases = value; + } + /// /// The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. /// @@ -394,6 +412,18 @@ public InputList Tags set => _tags = value; } + [Input("thirdPartyCases")] + private InputList? _thirdPartyCases; + + /// + /// Cases for generating signals for third-party rules. Only required and accepted for third-party rules + /// + public InputList ThirdPartyCases + { + get => _thirdPartyCases ?? (_thirdPartyCases = new InputList()); + set => _thirdPartyCases = value; + } + /// /// The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. /// diff --git a/sdk/dotnet/SecurityMonitoringSuppression.cs b/sdk/dotnet/SecurityMonitoringSuppression.cs new file mode 100644 index 000000000..95e74549e --- /dev/null +++ b/sdk/dotnet/SecurityMonitoringSuppression.cs @@ -0,0 +1,185 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Datadog +{ + /// + /// Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules. + /// + [DatadogResourceType("datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression")] + public partial class SecurityMonitoringSuppression : global::Pulumi.CustomResource + { + /// + /// A description for the suppression rule. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// Whether the suppression rule is enabled. + /// + [Output("enabled")] + public Output Enabled { get; private set; } = null!; + + /// + /// A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + /// + [Output("expirationDate")] + public Output ExpirationDate { get; private set; } = null!; + + /// + /// The name of the suppression rule. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + /// + [Output("ruleQuery")] + public Output RuleQuery { get; private set; } = null!; + + /// + /// The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + /// + [Output("suppressionQuery")] + public Output SuppressionQuery { get; private set; } = null!; + + + /// + /// Create a SecurityMonitoringSuppression resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public SecurityMonitoringSuppression(string name, SecurityMonitoringSuppressionArgs args, CustomResourceOptions? options = null) + : base("datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression", name, args ?? new SecurityMonitoringSuppressionArgs(), MakeResourceOptions(options, "")) + { + } + + private SecurityMonitoringSuppression(string name, Input id, SecurityMonitoringSuppressionState? state = null, CustomResourceOptions? options = null) + : base("datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing SecurityMonitoringSuppression resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static SecurityMonitoringSuppression Get(string name, Input id, SecurityMonitoringSuppressionState? state = null, CustomResourceOptions? options = null) + { + return new SecurityMonitoringSuppression(name, id, state, options); + } + } + + public sealed class SecurityMonitoringSuppressionArgs : global::Pulumi.ResourceArgs + { + /// + /// A description for the suppression rule. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Whether the suppression rule is enabled. + /// + [Input("enabled", required: true)] + public Input Enabled { get; set; } = null!; + + /// + /// A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + /// + [Input("expirationDate")] + public Input? ExpirationDate { get; set; } + + /// + /// The name of the suppression rule. + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + /// + [Input("ruleQuery", required: true)] + public Input RuleQuery { get; set; } = null!; + + /// + /// The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + /// + [Input("suppressionQuery", required: true)] + public Input SuppressionQuery { get; set; } = null!; + + public SecurityMonitoringSuppressionArgs() + { + } + public static new SecurityMonitoringSuppressionArgs Empty => new SecurityMonitoringSuppressionArgs(); + } + + public sealed class SecurityMonitoringSuppressionState : global::Pulumi.ResourceArgs + { + /// + /// A description for the suppression rule. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Whether the suppression rule is enabled. + /// + [Input("enabled")] + public Input? Enabled { get; set; } + + /// + /// A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + /// + [Input("expirationDate")] + public Input? ExpirationDate { get; set; } + + /// + /// The name of the suppression rule. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + /// + [Input("ruleQuery")] + public Input? RuleQuery { get; set; } + + /// + /// The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + /// + [Input("suppressionQuery")] + public Input? SuppressionQuery { get; set; } + + public SecurityMonitoringSuppressionState() + { + } + public static new SecurityMonitoringSuppressionState Empty => new SecurityMonitoringSuppressionState(); + } +} diff --git a/sdk/dotnet/SensitiveDataScannerRule.cs b/sdk/dotnet/SensitiveDataScannerRule.cs index e8215e67a..54a1166e1 100644 --- a/sdk/dotnet/SensitiveDataScannerRule.cs +++ b/sdk/dotnet/SensitiveDataScannerRule.cs @@ -10,7 +10,7 @@ namespace Pulumi.Datadog { /// - /// Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. + /// Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `included_keyword_configuration` field to avoid unexpectedly disabling Sensitive Data Scanner groups. /// /// ## Example Usage /// @@ -59,6 +59,15 @@ namespace Pulumi.Datadog /// ReplacementString = "", /// Type = "hash", /// }, + /// IncludedKeywordConfiguration = new Datadog.Inputs.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs + /// { + /// Keywords = new[] + /// { + /// "cc", + /// "credit card", + /// }, + /// CharacterCount = 30, + /// }, /// }); /// /// var awsSp = Datadog.GetSensitiveDataScannerStandardPattern.Invoke(new() @@ -113,6 +122,12 @@ public partial class SensitiveDataScannerRule : global::Pulumi.CustomResource [Output("groupId")] public Output GroupId { get; private set; } = null!; + /// + /// Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + /// + [Output("includedKeywordConfiguration")] + public Output IncludedKeywordConfiguration { get; private set; } = null!; + /// /// Whether or not the rule is enabled. /// @@ -225,6 +240,12 @@ public InputList ExcludedNamespaces [Input("groupId", required: true)] public Input GroupId { get; set; } = null!; + /// + /// Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + /// + [Input("includedKeywordConfiguration")] + public Input? IncludedKeywordConfiguration { get; set; } + /// /// Whether or not the rule is enabled. /// @@ -311,6 +332,12 @@ public InputList ExcludedNamespaces [Input("groupId")] public Input? GroupId { get; set; } + /// + /// Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + /// + [Input("includedKeywordConfiguration")] + public Input? IncludedKeywordConfiguration { get; set; } + /// /// Whether or not the rule is enabled. /// diff --git a/sdk/dotnet/ServiceLevelObjective.cs b/sdk/dotnet/ServiceLevelObjective.cs index 1c4209e01..8b5a046e6 100644 --- a/sdk/dotnet/ServiceLevelObjective.cs +++ b/sdk/dotnet/ServiceLevelObjective.cs @@ -12,94 +12,6 @@ namespace Pulumi.Datadog /// /// Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. /// - /// ## Example Usage - /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Datadog = Pulumi.Datadog; - /// - /// return await Deployment.RunAsync(() => - /// { - /// // Metric-Based SLO - /// // Create a new Datadog service level objective - /// var foo = new Datadog.ServiceLevelObjective("foo", new() - /// { - /// Description = "My custom metric SLO", - /// Name = "Example Metric SLO", - /// Query = new Datadog.Inputs.ServiceLevelObjectiveQueryArgs - /// { - /// Denominator = "sum:my.custom.count.metric{*}.as_count()", - /// Numerator = "sum:my.custom.count.metric{type:good_events}.as_count()", - /// }, - /// Tags = new[] - /// { - /// "foo:bar", - /// "baz", - /// }, - /// TargetThreshold = 99.9, - /// Thresholds = new[] - /// { - /// new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs - /// { - /// Target = 99.9, - /// Timeframe = "7d", - /// Warning = 99.99, - /// }, - /// new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs - /// { - /// Target = 99.9, - /// Timeframe = "30d", - /// Warning = 99.99, - /// }, - /// }, - /// Timeframe = "30d", - /// Type = "metric", - /// WarningThreshold = 99.99, - /// }); - /// - /// // Monitor-Based SLO - /// // Create a new Datadog service level objective - /// var bar = new Datadog.ServiceLevelObjective("bar", new() - /// { - /// Description = "My custom monitor SLO", - /// MonitorIds = new[] - /// { - /// 1, - /// 2, - /// 3, - /// }, - /// Name = "Example Monitor SLO", - /// Tags = new[] - /// { - /// "foo:bar", - /// "baz", - /// }, - /// TargetThreshold = 99.9, - /// Thresholds = new[] - /// { - /// new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs - /// { - /// Target = 99.9, - /// Timeframe = "7d", - /// Warning = 99.99, - /// }, - /// new Datadog.Inputs.ServiceLevelObjectiveThresholdArgs - /// { - /// Target = 99.9, - /// Timeframe = "30d", - /// Warning = 99.99, - /// }, - /// }, - /// Timeframe = "30d", - /// Type = "monitor", - /// WarningThreshold = 99.99, - /// }); - /// - /// }); - /// ``` - /// /// ## Import /// /// Service Level Objectives can be imported using their string ID, e.g. @@ -136,17 +48,23 @@ public partial class ServiceLevelObjective : global::Pulumi.CustomResource public Output> MonitorIds { get; private set; } = null!; /// - /// Name of Datadog service level objective + /// The name of the query for use in formulas. /// [Output("name")] public Output Name { get; private set; } = null!; /// - /// The metric query of good / total events + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. /// [Output("query")] public Output Query { get; private set; } = null!; + /// + /// A map of SLI specifications to use as part of the SLO. + /// + [Output("sliSpecification")] + public Output SliSpecification { get; private set; } = null!; + /// /// A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API /// @@ -272,17 +190,23 @@ public InputList MonitorIds } /// - /// Name of Datadog service level objective + /// The name of the query for use in formulas. /// [Input("name", required: true)] public Input Name { get; set; } = null!; /// - /// The metric query of good / total events + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. /// [Input("query")] public Input? Query { get; set; } + /// + /// A map of SLI specifications to use as part of the SLO. + /// + [Input("sliSpecification")] + public Input? SliSpecification { get; set; } + [Input("tags")] private InputList? _tags; @@ -382,17 +306,23 @@ public InputList MonitorIds } /// - /// Name of Datadog service level objective + /// The name of the query for use in formulas. /// [Input("name")] public Input? Name { get; set; } /// - /// The metric query of good / total events + /// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. /// [Input("query")] public Input? Query { get; set; } + /// + /// A map of SLI specifications to use as part of the SLO. + /// + [Input("sliSpecification")] + public Input? SliSpecification { get; set; } + [Input("tags")] private InputList? _tags; diff --git a/sdk/go/datadog/getApiKey.go b/sdk/go/datadog/getApiKey.go index 6c2d96987..15de69b0a 100644 --- a/sdk/go/datadog/getApiKey.go +++ b/sdk/go/datadog/getApiKey.go @@ -50,6 +50,8 @@ func LookupApiKey(ctx *pulumi.Context, args *LookupApiKeyArgs, opts ...pulumi.In // A collection of arguments for invoking getApiKey. type LookupApiKeyArgs struct { + // Whether to use exact match when searching by name. + ExactMatch *bool `pulumi:"exactMatch"` // The ID of this resource. Id *string `pulumi:"id"` // Name for API Key. @@ -58,6 +60,8 @@ type LookupApiKeyArgs struct { // A collection of values returned by getApiKey. type LookupApiKeyResult struct { + // Whether to use exact match when searching by name. + ExactMatch *bool `pulumi:"exactMatch"` // The ID of this resource. Id *string `pulumi:"id"` // The value of the API Key. @@ -81,6 +85,8 @@ func LookupApiKeyOutput(ctx *pulumi.Context, args LookupApiKeyOutputArgs, opts . // A collection of arguments for invoking getApiKey. type LookupApiKeyOutputArgs struct { + // Whether to use exact match when searching by name. + ExactMatch pulumi.BoolPtrInput `pulumi:"exactMatch"` // The ID of this resource. Id pulumi.StringPtrInput `pulumi:"id"` // Name for API Key. @@ -106,6 +112,11 @@ func (o LookupApiKeyResultOutput) ToLookupApiKeyResultOutputWithContext(ctx cont return o } +// Whether to use exact match when searching by name. +func (o LookupApiKeyResultOutput) ExactMatch() pulumi.BoolPtrOutput { + return o.ApplyT(func(v LookupApiKeyResult) *bool { return v.ExactMatch }).(pulumi.BoolPtrOutput) +} + // The ID of this resource. func (o LookupApiKeyResultOutput) Id() pulumi.StringPtrOutput { return o.ApplyT(func(v LookupApiKeyResult) *string { return v.Id }).(pulumi.StringPtrOutput) diff --git a/sdk/go/datadog/getApplicationKey.go b/sdk/go/datadog/getApplicationKey.go index 6c3129b06..082d4a663 100644 --- a/sdk/go/datadog/getApplicationKey.go +++ b/sdk/go/datadog/getApplicationKey.go @@ -50,6 +50,8 @@ func LookupApplicationKey(ctx *pulumi.Context, args *LookupApplicationKeyArgs, o // A collection of arguments for invoking getApplicationKey. type LookupApplicationKeyArgs struct { + // Whether to use exact match when searching by name. + ExactMatch *bool `pulumi:"exactMatch"` // Id for Application Key. Id *string `pulumi:"id"` // Name for Application Key. @@ -58,6 +60,8 @@ type LookupApplicationKeyArgs struct { // A collection of values returned by getApplicationKey. type LookupApplicationKeyResult struct { + // Whether to use exact match when searching by name. + ExactMatch *bool `pulumi:"exactMatch"` // Id for Application Key. Id *string `pulumi:"id"` // The value of the Application Key. @@ -81,6 +85,8 @@ func LookupApplicationKeyOutput(ctx *pulumi.Context, args LookupApplicationKeyOu // A collection of arguments for invoking getApplicationKey. type LookupApplicationKeyOutputArgs struct { + // Whether to use exact match when searching by name. + ExactMatch pulumi.BoolPtrInput `pulumi:"exactMatch"` // Id for Application Key. Id pulumi.StringPtrInput `pulumi:"id"` // Name for Application Key. @@ -106,6 +112,11 @@ func (o LookupApplicationKeyResultOutput) ToLookupApplicationKeyResultOutputWith return o } +// Whether to use exact match when searching by name. +func (o LookupApplicationKeyResultOutput) ExactMatch() pulumi.BoolPtrOutput { + return o.ApplyT(func(v LookupApplicationKeyResult) *bool { return v.ExactMatch }).(pulumi.BoolPtrOutput) +} + // Id for Application Key. func (o LookupApplicationKeyResultOutput) Id() pulumi.StringPtrOutput { return o.ApplyT(func(v LookupApplicationKeyResult) *string { return v.Id }).(pulumi.StringPtrOutput) diff --git a/sdk/go/datadog/getSecurityMonitoringSuppressions.go b/sdk/go/datadog/getSecurityMonitoringSuppressions.go new file mode 100644 index 000000000..8bd1efe72 --- /dev/null +++ b/sdk/go/datadog/getSecurityMonitoringSuppressions.go @@ -0,0 +1,80 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package datadog + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to retrieve information about existing suppression rules, and use them in other resources. +func GetSecurityMonitoringSuppressions(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetSecurityMonitoringSuppressionsResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetSecurityMonitoringSuppressionsResult + err := ctx.Invoke("datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of values returned by getSecurityMonitoringSuppressions. +type GetSecurityMonitoringSuppressionsResult struct { + // The ID of this resource. + Id string `pulumi:"id"` + // List of IDs of suppressions + SuppressionIds []string `pulumi:"suppressionIds"` + // List of suppressions + Suppressions []GetSecurityMonitoringSuppressionsSuppression `pulumi:"suppressions"` +} + +func GetSecurityMonitoringSuppressionsOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetSecurityMonitoringSuppressionsResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (GetSecurityMonitoringSuppressionsResult, error) { + r, err := GetSecurityMonitoringSuppressions(ctx, opts...) + var s GetSecurityMonitoringSuppressionsResult + if r != nil { + s = *r + } + return s, err + }).(GetSecurityMonitoringSuppressionsResultOutput) +} + +// A collection of values returned by getSecurityMonitoringSuppressions. +type GetSecurityMonitoringSuppressionsResultOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringSuppressionsResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringSuppressionsResult)(nil)).Elem() +} + +func (o GetSecurityMonitoringSuppressionsResultOutput) ToGetSecurityMonitoringSuppressionsResultOutput() GetSecurityMonitoringSuppressionsResultOutput { + return o +} + +func (o GetSecurityMonitoringSuppressionsResultOutput) ToGetSecurityMonitoringSuppressionsResultOutputWithContext(ctx context.Context) GetSecurityMonitoringSuppressionsResultOutput { + return o +} + +// The ID of this resource. +func (o GetSecurityMonitoringSuppressionsResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsResult) string { return v.Id }).(pulumi.StringOutput) +} + +// List of IDs of suppressions +func (o GetSecurityMonitoringSuppressionsResultOutput) SuppressionIds() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsResult) []string { return v.SuppressionIds }).(pulumi.StringArrayOutput) +} + +// List of suppressions +func (o GetSecurityMonitoringSuppressionsResultOutput) Suppressions() GetSecurityMonitoringSuppressionsSuppressionArrayOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsResult) []GetSecurityMonitoringSuppressionsSuppression { + return v.Suppressions + }).(GetSecurityMonitoringSuppressionsSuppressionArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(GetSecurityMonitoringSuppressionsResultOutput{}) +} diff --git a/sdk/go/datadog/getSensitiveDataScannerStandardPattern.go b/sdk/go/datadog/getSensitiveDataScannerStandardPattern.go index 8553d37cd..4ddda0835 100644 --- a/sdk/go/datadog/getSensitiveDataScannerStandardPattern.go +++ b/sdk/go/datadog/getSensitiveDataScannerStandardPattern.go @@ -34,6 +34,8 @@ type GetSensitiveDataScannerStandardPatternResult struct { Filter string `pulumi:"filter"` // The provider-assigned unique ID for this managed resource. Id string `pulumi:"id"` + // List of recommended keywords to improve rule accuracy. + IncludedKeywords []string `pulumi:"includedKeywords"` // Name of the standard pattern. Name string `pulumi:"name"` // Regex that the standard pattern applies. @@ -90,6 +92,11 @@ func (o GetSensitiveDataScannerStandardPatternResultOutput) Id() pulumi.StringOu return o.ApplyT(func(v GetSensitiveDataScannerStandardPatternResult) string { return v.Id }).(pulumi.StringOutput) } +// List of recommended keywords to improve rule accuracy. +func (o GetSensitiveDataScannerStandardPatternResultOutput) IncludedKeywords() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetSensitiveDataScannerStandardPatternResult) []string { return v.IncludedKeywords }).(pulumi.StringArrayOutput) +} + // Name of the standard pattern. func (o GetSensitiveDataScannerStandardPatternResultOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v GetSensitiveDataScannerStandardPatternResult) string { return v.Name }).(pulumi.StringOutput) diff --git a/sdk/go/datadog/init.go b/sdk/go/datadog/init.go index e27aaa194..c2b8c42a3 100644 --- a/sdk/go/datadog/init.go +++ b/sdk/go/datadog/init.go @@ -75,6 +75,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &MonitorConfigPolicy{} case "datadog:index/monitorJson:MonitorJson": r = &MonitorJson{} + case "datadog:index/openapiApi:OpenapiApi": + r = &OpenapiApi{} case "datadog:index/organizationSettings:OrganizationSettings": r = &OrganizationSettings{} case "datadog:index/powerpack:Powerpack": @@ -91,6 +93,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &SecurityMonitoringFilter{} case "datadog:index/securityMonitoringRule:SecurityMonitoringRule": r = &SecurityMonitoringRule{} + case "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression": + r = &SecurityMonitoringSuppression{} case "datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup": r = &SensitiveDataScannerGroup{} case "datadog:index/sensitiveDataScannerGroupOrder:SensitiveDataScannerGroupOrder": @@ -297,6 +301,11 @@ func init() { "index/monitorJson", &module{version}, ) + pulumi.RegisterResourceModule( + "datadog", + "index/openapiApi", + &module{version}, + ) pulumi.RegisterResourceModule( "datadog", "index/organizationSettings", @@ -337,6 +346,11 @@ func init() { "index/securityMonitoringRule", &module{version}, ) + pulumi.RegisterResourceModule( + "datadog", + "index/securityMonitoringSuppression", + &module{version}, + ) pulumi.RegisterResourceModule( "datadog", "index/sensitiveDataScannerGroup", diff --git a/sdk/go/datadog/logsIndex.go b/sdk/go/datadog/logsIndex.go index 27b86db6a..4319fd2e3 100644 --- a/sdk/go/datadog/logsIndex.go +++ b/sdk/go/datadog/logsIndex.go @@ -28,6 +28,11 @@ import ( // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := datadog.NewLogsIndex(ctx, "sampleIndex", &datadog.LogsIndexArgs{ // DailyLimit: pulumi.Int(200000), +// DailyLimitReset: &datadog.LogsIndexDailyLimitResetArgs{ +// ResetTime: pulumi.String("14:00"), +// ResetUtcOffset: pulumi.String("+02:00"), +// }, +// DailyLimitWarningThresholdPercentage: pulumi.Float64(50), // ExclusionFilters: datadog.LogsIndexExclusionFilterArray{ // &datadog.LogsIndexExclusionFilterArgs{ // Filters: datadog.LogsIndexExclusionFilterFilterArray{ @@ -79,6 +84,10 @@ type LogsIndex struct { // The number of log events you can send in this index per day before you are rate-limited. DailyLimit pulumi.IntPtrOutput `pulumi:"dailyLimit"` + // Object containing options to override the default daily limit reset time. + DailyLimitReset LogsIndexDailyLimitResetPtrOutput `pulumi:"dailyLimitReset"` + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage pulumi.Float64Output `pulumi:"dailyLimitWarningThresholdPercentage"` // If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. DisableDailyLimit pulumi.BoolOutput `pulumi:"disableDailyLimit"` // List of exclusion filters. @@ -129,6 +138,10 @@ func GetLogsIndex(ctx *pulumi.Context, type logsIndexState struct { // The number of log events you can send in this index per day before you are rate-limited. DailyLimit *int `pulumi:"dailyLimit"` + // Object containing options to override the default daily limit reset time. + DailyLimitReset *LogsIndexDailyLimitReset `pulumi:"dailyLimitReset"` + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage *float64 `pulumi:"dailyLimitWarningThresholdPercentage"` // If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. DisableDailyLimit *bool `pulumi:"disableDailyLimit"` // List of exclusion filters. @@ -144,6 +157,10 @@ type logsIndexState struct { type LogsIndexState struct { // The number of log events you can send in this index per day before you are rate-limited. DailyLimit pulumi.IntPtrInput + // Object containing options to override the default daily limit reset time. + DailyLimitReset LogsIndexDailyLimitResetPtrInput + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage pulumi.Float64PtrInput // If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. DisableDailyLimit pulumi.BoolPtrInput // List of exclusion filters. @@ -163,6 +180,10 @@ func (LogsIndexState) ElementType() reflect.Type { type logsIndexArgs struct { // The number of log events you can send in this index per day before you are rate-limited. DailyLimit *int `pulumi:"dailyLimit"` + // Object containing options to override the default daily limit reset time. + DailyLimitReset *LogsIndexDailyLimitReset `pulumi:"dailyLimitReset"` + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage *float64 `pulumi:"dailyLimitWarningThresholdPercentage"` // If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. DisableDailyLimit *bool `pulumi:"disableDailyLimit"` // List of exclusion filters. @@ -179,6 +200,10 @@ type logsIndexArgs struct { type LogsIndexArgs struct { // The number of log events you can send in this index per day before you are rate-limited. DailyLimit pulumi.IntPtrInput + // Object containing options to override the default daily limit reset time. + DailyLimitReset LogsIndexDailyLimitResetPtrInput + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage pulumi.Float64PtrInput // If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. DisableDailyLimit pulumi.BoolPtrInput // List of exclusion filters. @@ -283,6 +308,16 @@ func (o LogsIndexOutput) DailyLimit() pulumi.IntPtrOutput { return o.ApplyT(func(v *LogsIndex) pulumi.IntPtrOutput { return v.DailyLimit }).(pulumi.IntPtrOutput) } +// Object containing options to override the default daily limit reset time. +func (o LogsIndexOutput) DailyLimitReset() LogsIndexDailyLimitResetPtrOutput { + return o.ApplyT(func(v *LogsIndex) LogsIndexDailyLimitResetPtrOutput { return v.DailyLimitReset }).(LogsIndexDailyLimitResetPtrOutput) +} + +// A percentage threshold of the daily quota at which a Datadog warning event is generated. +func (o LogsIndexOutput) DailyLimitWarningThresholdPercentage() pulumi.Float64Output { + return o.ApplyT(func(v *LogsIndex) pulumi.Float64Output { return v.DailyLimitWarningThresholdPercentage }).(pulumi.Float64Output) +} + // If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. func (o LogsIndexOutput) DisableDailyLimit() pulumi.BoolOutput { return o.ApplyT(func(v *LogsIndex) pulumi.BoolOutput { return v.DisableDailyLimit }).(pulumi.BoolOutput) diff --git a/sdk/go/datadog/openapiApi.go b/sdk/go/datadog/openapiApi.go new file mode 100644 index 000000000..bee5515af --- /dev/null +++ b/sdk/go/datadog/openapiApi.go @@ -0,0 +1,263 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package datadog + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "os" +// +// "github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func readFileOrPanic(path string) pulumi.StringPtrInput { +// data, err := os.ReadFile(path) +// if err != nil { +// panic(err.Error()) +// } +// return pulumi.String(string(data)) +// } +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := datadog.NewOpenapiApi(ctx, "my-api", &datadog.OpenapiApiArgs{ +// Spec: readFileOrPanic("./path/my-api.yaml"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// ```sh +// +// $ pulumi import datadog:index/openapiApi:OpenapiApi new_list "90646597-5fdb-4a17-a240-647003f8c028" +// +// ``` +type OpenapiApi struct { + pulumi.CustomResourceState + + // The OpenAPI spec. + Spec pulumi.StringOutput `pulumi:"spec"` +} + +// NewOpenapiApi registers a new resource with the given unique name, arguments, and options. +func NewOpenapiApi(ctx *pulumi.Context, + name string, args *OpenapiApiArgs, opts ...pulumi.ResourceOption) (*OpenapiApi, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Spec == nil { + return nil, errors.New("invalid value for required argument 'Spec'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource OpenapiApi + err := ctx.RegisterResource("datadog:index/openapiApi:OpenapiApi", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetOpenapiApi gets an existing OpenapiApi resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetOpenapiApi(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *OpenapiApiState, opts ...pulumi.ResourceOption) (*OpenapiApi, error) { + var resource OpenapiApi + err := ctx.ReadResource("datadog:index/openapiApi:OpenapiApi", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering OpenapiApi resources. +type openapiApiState struct { + // The OpenAPI spec. + Spec *string `pulumi:"spec"` +} + +type OpenapiApiState struct { + // The OpenAPI spec. + Spec pulumi.StringPtrInput +} + +func (OpenapiApiState) ElementType() reflect.Type { + return reflect.TypeOf((*openapiApiState)(nil)).Elem() +} + +type openapiApiArgs struct { + // The OpenAPI spec. + Spec string `pulumi:"spec"` +} + +// The set of arguments for constructing a OpenapiApi resource. +type OpenapiApiArgs struct { + // The OpenAPI spec. + Spec pulumi.StringInput +} + +func (OpenapiApiArgs) ElementType() reflect.Type { + return reflect.TypeOf((*openapiApiArgs)(nil)).Elem() +} + +type OpenapiApiInput interface { + pulumi.Input + + ToOpenapiApiOutput() OpenapiApiOutput + ToOpenapiApiOutputWithContext(ctx context.Context) OpenapiApiOutput +} + +func (*OpenapiApi) ElementType() reflect.Type { + return reflect.TypeOf((**OpenapiApi)(nil)).Elem() +} + +func (i *OpenapiApi) ToOpenapiApiOutput() OpenapiApiOutput { + return i.ToOpenapiApiOutputWithContext(context.Background()) +} + +func (i *OpenapiApi) ToOpenapiApiOutputWithContext(ctx context.Context) OpenapiApiOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpenapiApiOutput) +} + +// OpenapiApiArrayInput is an input type that accepts OpenapiApiArray and OpenapiApiArrayOutput values. +// You can construct a concrete instance of `OpenapiApiArrayInput` via: +// +// OpenapiApiArray{ OpenapiApiArgs{...} } +type OpenapiApiArrayInput interface { + pulumi.Input + + ToOpenapiApiArrayOutput() OpenapiApiArrayOutput + ToOpenapiApiArrayOutputWithContext(context.Context) OpenapiApiArrayOutput +} + +type OpenapiApiArray []OpenapiApiInput + +func (OpenapiApiArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OpenapiApi)(nil)).Elem() +} + +func (i OpenapiApiArray) ToOpenapiApiArrayOutput() OpenapiApiArrayOutput { + return i.ToOpenapiApiArrayOutputWithContext(context.Background()) +} + +func (i OpenapiApiArray) ToOpenapiApiArrayOutputWithContext(ctx context.Context) OpenapiApiArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpenapiApiArrayOutput) +} + +// OpenapiApiMapInput is an input type that accepts OpenapiApiMap and OpenapiApiMapOutput values. +// You can construct a concrete instance of `OpenapiApiMapInput` via: +// +// OpenapiApiMap{ "key": OpenapiApiArgs{...} } +type OpenapiApiMapInput interface { + pulumi.Input + + ToOpenapiApiMapOutput() OpenapiApiMapOutput + ToOpenapiApiMapOutputWithContext(context.Context) OpenapiApiMapOutput +} + +type OpenapiApiMap map[string]OpenapiApiInput + +func (OpenapiApiMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OpenapiApi)(nil)).Elem() +} + +func (i OpenapiApiMap) ToOpenapiApiMapOutput() OpenapiApiMapOutput { + return i.ToOpenapiApiMapOutputWithContext(context.Background()) +} + +func (i OpenapiApiMap) ToOpenapiApiMapOutputWithContext(ctx context.Context) OpenapiApiMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpenapiApiMapOutput) +} + +type OpenapiApiOutput struct{ *pulumi.OutputState } + +func (OpenapiApiOutput) ElementType() reflect.Type { + return reflect.TypeOf((**OpenapiApi)(nil)).Elem() +} + +func (o OpenapiApiOutput) ToOpenapiApiOutput() OpenapiApiOutput { + return o +} + +func (o OpenapiApiOutput) ToOpenapiApiOutputWithContext(ctx context.Context) OpenapiApiOutput { + return o +} + +// The OpenAPI spec. +func (o OpenapiApiOutput) Spec() pulumi.StringOutput { + return o.ApplyT(func(v *OpenapiApi) pulumi.StringOutput { return v.Spec }).(pulumi.StringOutput) +} + +type OpenapiApiArrayOutput struct{ *pulumi.OutputState } + +func (OpenapiApiArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OpenapiApi)(nil)).Elem() +} + +func (o OpenapiApiArrayOutput) ToOpenapiApiArrayOutput() OpenapiApiArrayOutput { + return o +} + +func (o OpenapiApiArrayOutput) ToOpenapiApiArrayOutputWithContext(ctx context.Context) OpenapiApiArrayOutput { + return o +} + +func (o OpenapiApiArrayOutput) Index(i pulumi.IntInput) OpenapiApiOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *OpenapiApi { + return vs[0].([]*OpenapiApi)[vs[1].(int)] + }).(OpenapiApiOutput) +} + +type OpenapiApiMapOutput struct{ *pulumi.OutputState } + +func (OpenapiApiMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OpenapiApi)(nil)).Elem() +} + +func (o OpenapiApiMapOutput) ToOpenapiApiMapOutput() OpenapiApiMapOutput { + return o +} + +func (o OpenapiApiMapOutput) ToOpenapiApiMapOutputWithContext(ctx context.Context) OpenapiApiMapOutput { + return o +} + +func (o OpenapiApiMapOutput) MapIndex(k pulumi.StringInput) OpenapiApiOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *OpenapiApi { + return vs[0].(map[string]*OpenapiApi)[vs[1].(string)] + }).(OpenapiApiOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*OpenapiApiInput)(nil)).Elem(), &OpenapiApi{}) + pulumi.RegisterInputType(reflect.TypeOf((*OpenapiApiArrayInput)(nil)).Elem(), OpenapiApiArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*OpenapiApiMapInput)(nil)).Elem(), OpenapiApiMap{}) + pulumi.RegisterOutputType(OpenapiApiOutput{}) + pulumi.RegisterOutputType(OpenapiApiArrayOutput{}) + pulumi.RegisterOutputType(OpenapiApiMapOutput{}) +} diff --git a/sdk/go/datadog/pulumiTypes3.go b/sdk/go/datadog/pulumiTypes3.go index 923db8e81..b94a81d74 100644 --- a/sdk/go/datadog/pulumiTypes3.go +++ b/sdk/go/datadog/pulumiTypes3.go @@ -87681,6 +87681,162 @@ func (o LogsCustomPipelineProcessorUserAgentParserPtrOutput) Target() pulumi.Str }).(pulumi.StringPtrOutput) } +type LogsIndexDailyLimitReset struct { + // String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + ResetTime string `pulumi:"resetTime"` + // String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + ResetUtcOffset string `pulumi:"resetUtcOffset"` +} + +// LogsIndexDailyLimitResetInput is an input type that accepts LogsIndexDailyLimitResetArgs and LogsIndexDailyLimitResetOutput values. +// You can construct a concrete instance of `LogsIndexDailyLimitResetInput` via: +// +// LogsIndexDailyLimitResetArgs{...} +type LogsIndexDailyLimitResetInput interface { + pulumi.Input + + ToLogsIndexDailyLimitResetOutput() LogsIndexDailyLimitResetOutput + ToLogsIndexDailyLimitResetOutputWithContext(context.Context) LogsIndexDailyLimitResetOutput +} + +type LogsIndexDailyLimitResetArgs struct { + // String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + ResetTime pulumi.StringInput `pulumi:"resetTime"` + // String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + ResetUtcOffset pulumi.StringInput `pulumi:"resetUtcOffset"` +} + +func (LogsIndexDailyLimitResetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LogsIndexDailyLimitReset)(nil)).Elem() +} + +func (i LogsIndexDailyLimitResetArgs) ToLogsIndexDailyLimitResetOutput() LogsIndexDailyLimitResetOutput { + return i.ToLogsIndexDailyLimitResetOutputWithContext(context.Background()) +} + +func (i LogsIndexDailyLimitResetArgs) ToLogsIndexDailyLimitResetOutputWithContext(ctx context.Context) LogsIndexDailyLimitResetOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogsIndexDailyLimitResetOutput) +} + +func (i LogsIndexDailyLimitResetArgs) ToLogsIndexDailyLimitResetPtrOutput() LogsIndexDailyLimitResetPtrOutput { + return i.ToLogsIndexDailyLimitResetPtrOutputWithContext(context.Background()) +} + +func (i LogsIndexDailyLimitResetArgs) ToLogsIndexDailyLimitResetPtrOutputWithContext(ctx context.Context) LogsIndexDailyLimitResetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogsIndexDailyLimitResetOutput).ToLogsIndexDailyLimitResetPtrOutputWithContext(ctx) +} + +// LogsIndexDailyLimitResetPtrInput is an input type that accepts LogsIndexDailyLimitResetArgs, LogsIndexDailyLimitResetPtr and LogsIndexDailyLimitResetPtrOutput values. +// You can construct a concrete instance of `LogsIndexDailyLimitResetPtrInput` via: +// +// LogsIndexDailyLimitResetArgs{...} +// +// or: +// +// nil +type LogsIndexDailyLimitResetPtrInput interface { + pulumi.Input + + ToLogsIndexDailyLimitResetPtrOutput() LogsIndexDailyLimitResetPtrOutput + ToLogsIndexDailyLimitResetPtrOutputWithContext(context.Context) LogsIndexDailyLimitResetPtrOutput +} + +type logsIndexDailyLimitResetPtrType LogsIndexDailyLimitResetArgs + +func LogsIndexDailyLimitResetPtr(v *LogsIndexDailyLimitResetArgs) LogsIndexDailyLimitResetPtrInput { + return (*logsIndexDailyLimitResetPtrType)(v) +} + +func (*logsIndexDailyLimitResetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**LogsIndexDailyLimitReset)(nil)).Elem() +} + +func (i *logsIndexDailyLimitResetPtrType) ToLogsIndexDailyLimitResetPtrOutput() LogsIndexDailyLimitResetPtrOutput { + return i.ToLogsIndexDailyLimitResetPtrOutputWithContext(context.Background()) +} + +func (i *logsIndexDailyLimitResetPtrType) ToLogsIndexDailyLimitResetPtrOutputWithContext(ctx context.Context) LogsIndexDailyLimitResetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogsIndexDailyLimitResetPtrOutput) +} + +type LogsIndexDailyLimitResetOutput struct{ *pulumi.OutputState } + +func (LogsIndexDailyLimitResetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LogsIndexDailyLimitReset)(nil)).Elem() +} + +func (o LogsIndexDailyLimitResetOutput) ToLogsIndexDailyLimitResetOutput() LogsIndexDailyLimitResetOutput { + return o +} + +func (o LogsIndexDailyLimitResetOutput) ToLogsIndexDailyLimitResetOutputWithContext(ctx context.Context) LogsIndexDailyLimitResetOutput { + return o +} + +func (o LogsIndexDailyLimitResetOutput) ToLogsIndexDailyLimitResetPtrOutput() LogsIndexDailyLimitResetPtrOutput { + return o.ToLogsIndexDailyLimitResetPtrOutputWithContext(context.Background()) +} + +func (o LogsIndexDailyLimitResetOutput) ToLogsIndexDailyLimitResetPtrOutputWithContext(ctx context.Context) LogsIndexDailyLimitResetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v LogsIndexDailyLimitReset) *LogsIndexDailyLimitReset { + return &v + }).(LogsIndexDailyLimitResetPtrOutput) +} + +// String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). +func (o LogsIndexDailyLimitResetOutput) ResetTime() pulumi.StringOutput { + return o.ApplyT(func(v LogsIndexDailyLimitReset) string { return v.ResetTime }).(pulumi.StringOutput) +} + +// String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). +func (o LogsIndexDailyLimitResetOutput) ResetUtcOffset() pulumi.StringOutput { + return o.ApplyT(func(v LogsIndexDailyLimitReset) string { return v.ResetUtcOffset }).(pulumi.StringOutput) +} + +type LogsIndexDailyLimitResetPtrOutput struct{ *pulumi.OutputState } + +func (LogsIndexDailyLimitResetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogsIndexDailyLimitReset)(nil)).Elem() +} + +func (o LogsIndexDailyLimitResetPtrOutput) ToLogsIndexDailyLimitResetPtrOutput() LogsIndexDailyLimitResetPtrOutput { + return o +} + +func (o LogsIndexDailyLimitResetPtrOutput) ToLogsIndexDailyLimitResetPtrOutputWithContext(ctx context.Context) LogsIndexDailyLimitResetPtrOutput { + return o +} + +func (o LogsIndexDailyLimitResetPtrOutput) Elem() LogsIndexDailyLimitResetOutput { + return o.ApplyT(func(v *LogsIndexDailyLimitReset) LogsIndexDailyLimitReset { + if v != nil { + return *v + } + var ret LogsIndexDailyLimitReset + return ret + }).(LogsIndexDailyLimitResetOutput) +} + +// String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). +func (o LogsIndexDailyLimitResetPtrOutput) ResetTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogsIndexDailyLimitReset) *string { + if v == nil { + return nil + } + return &v.ResetTime + }).(pulumi.StringPtrOutput) +} + +// String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). +func (o LogsIndexDailyLimitResetPtrOutput) ResetUtcOffset() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogsIndexDailyLimitReset) *string { + if v == nil { + return nil + } + return &v.ResetUtcOffset + }).(pulumi.StringPtrOutput) +} + type LogsIndexExclusionFilter struct { Filters []LogsIndexExclusionFilterFilter `pulumi:"filters"` // A boolean stating if the exclusion is active or not. @@ -89288,76 +89444,6 @@ func (o MonitorSchedulingOptionCustomScheduleArrayOutput) Index(i pulumi.IntInpu }).(MonitorSchedulingOptionCustomScheduleOutput) } -type MonitorSchedulingOptionCustomScheduleRecurrence struct { - // Must be a valid `rrule`. See API docs for supported fields - Rrule string `pulumi:"rrule"` - // Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' - Start *string `pulumi:"start"` - // 'tz database' format. Example: `America/New_York` or `UTC` - Timezone string `pulumi:"timezone"` -} - -// MonitorSchedulingOptionCustomScheduleRecurrenceInput is an input type that accepts MonitorSchedulingOptionCustomScheduleRecurrenceArgs and MonitorSchedulingOptionCustomScheduleRecurrenceOutput values. -// You can construct a concrete instance of `MonitorSchedulingOptionCustomScheduleRecurrenceInput` via: -// -// MonitorSchedulingOptionCustomScheduleRecurrenceArgs{...} -type MonitorSchedulingOptionCustomScheduleRecurrenceInput interface { - pulumi.Input - - ToMonitorSchedulingOptionCustomScheduleRecurrenceOutput() MonitorSchedulingOptionCustomScheduleRecurrenceOutput - ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(context.Context) MonitorSchedulingOptionCustomScheduleRecurrenceOutput -} - -type MonitorSchedulingOptionCustomScheduleRecurrenceArgs struct { - // Must be a valid `rrule`. See API docs for supported fields - Rrule pulumi.StringInput `pulumi:"rrule"` - // Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' - Start pulumi.StringPtrInput `pulumi:"start"` - // 'tz database' format. Example: `America/New_York` or `UTC` - Timezone pulumi.StringInput `pulumi:"timezone"` -} - -func (MonitorSchedulingOptionCustomScheduleRecurrenceArgs) ElementType() reflect.Type { - return reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleRecurrence)(nil)).Elem() -} - -func (i MonitorSchedulingOptionCustomScheduleRecurrenceArgs) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutput() MonitorSchedulingOptionCustomScheduleRecurrenceOutput { - return i.ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(context.Background()) -} - -func (i MonitorSchedulingOptionCustomScheduleRecurrenceArgs) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(ctx context.Context) MonitorSchedulingOptionCustomScheduleRecurrenceOutput { - return pulumi.ToOutputWithContext(ctx, i).(MonitorSchedulingOptionCustomScheduleRecurrenceOutput) -} - -type MonitorSchedulingOptionCustomScheduleRecurrenceOutput struct{ *pulumi.OutputState } - -func (MonitorSchedulingOptionCustomScheduleRecurrenceOutput) ElementType() reflect.Type { - return reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleRecurrence)(nil)).Elem() -} - -func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutput() MonitorSchedulingOptionCustomScheduleRecurrenceOutput { - return o -} - -func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(ctx context.Context) MonitorSchedulingOptionCustomScheduleRecurrenceOutput { - return o -} - -// Must be a valid `rrule`. See API docs for supported fields -func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) Rrule() pulumi.StringOutput { - return o.ApplyT(func(v MonitorSchedulingOptionCustomScheduleRecurrence) string { return v.Rrule }).(pulumi.StringOutput) -} - -// Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' -func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) Start() pulumi.StringPtrOutput { - return o.ApplyT(func(v MonitorSchedulingOptionCustomScheduleRecurrence) *string { return v.Start }).(pulumi.StringPtrOutput) -} - -// 'tz database' format. Example: `America/New_York` or `UTC` -func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) Timezone() pulumi.StringOutput { - return o.ApplyT(func(v MonitorSchedulingOptionCustomScheduleRecurrence) string { return v.Timezone }).(pulumi.StringOutput) -} - func init() { pulumi.RegisterInputType(reflect.TypeOf((*DashboardWidgetSplitGraphDefinitionSourceWidgetDefinitionQueryValueDefinitionRequestQueryProcessQueryInput)(nil)).Elem(), DashboardWidgetSplitGraphDefinitionSourceWidgetDefinitionQueryValueDefinitionRequestQueryProcessQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DashboardWidgetSplitGraphDefinitionSourceWidgetDefinitionQueryValueDefinitionRequestQueryProcessQueryPtrInput)(nil)).Elem(), DashboardWidgetSplitGraphDefinitionSourceWidgetDefinitionQueryValueDefinitionRequestQueryProcessQueryArgs{}) @@ -90331,6 +90417,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*LogsCustomPipelineProcessorUrlParserPtrInput)(nil)).Elem(), LogsCustomPipelineProcessorUrlParserArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*LogsCustomPipelineProcessorUserAgentParserInput)(nil)).Elem(), LogsCustomPipelineProcessorUserAgentParserArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*LogsCustomPipelineProcessorUserAgentParserPtrInput)(nil)).Elem(), LogsCustomPipelineProcessorUserAgentParserArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogsIndexDailyLimitResetInput)(nil)).Elem(), LogsIndexDailyLimitResetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogsIndexDailyLimitResetPtrInput)(nil)).Elem(), LogsIndexDailyLimitResetArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*LogsIndexExclusionFilterInput)(nil)).Elem(), LogsIndexExclusionFilterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*LogsIndexExclusionFilterArrayInput)(nil)).Elem(), LogsIndexExclusionFilterArray{}) pulumi.RegisterInputType(reflect.TypeOf((*LogsIndexExclusionFilterFilterInput)(nil)).Elem(), LogsIndexExclusionFilterFilterArgs{}) @@ -90355,7 +90443,6 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*MonitorSchedulingOptionArrayInput)(nil)).Elem(), MonitorSchedulingOptionArray{}) pulumi.RegisterInputType(reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleInput)(nil)).Elem(), MonitorSchedulingOptionCustomScheduleArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleArrayInput)(nil)).Elem(), MonitorSchedulingOptionCustomScheduleArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleRecurrenceInput)(nil)).Elem(), MonitorSchedulingOptionCustomScheduleRecurrenceArgs{}) pulumi.RegisterOutputType(DashboardWidgetSplitGraphDefinitionSourceWidgetDefinitionQueryValueDefinitionRequestQueryProcessQueryOutput{}) pulumi.RegisterOutputType(DashboardWidgetSplitGraphDefinitionSourceWidgetDefinitionQueryValueDefinitionRequestQueryProcessQueryPtrOutput{}) pulumi.RegisterOutputType(DashboardWidgetSplitGraphDefinitionSourceWidgetDefinitionQueryValueDefinitionRequestQuerySloQueryOutput{}) @@ -91328,6 +91415,8 @@ func init() { pulumi.RegisterOutputType(LogsCustomPipelineProcessorUrlParserPtrOutput{}) pulumi.RegisterOutputType(LogsCustomPipelineProcessorUserAgentParserOutput{}) pulumi.RegisterOutputType(LogsCustomPipelineProcessorUserAgentParserPtrOutput{}) + pulumi.RegisterOutputType(LogsIndexDailyLimitResetOutput{}) + pulumi.RegisterOutputType(LogsIndexDailyLimitResetPtrOutput{}) pulumi.RegisterOutputType(LogsIndexExclusionFilterOutput{}) pulumi.RegisterOutputType(LogsIndexExclusionFilterArrayOutput{}) pulumi.RegisterOutputType(LogsIndexExclusionFilterFilterOutput{}) @@ -91352,5 +91441,4 @@ func init() { pulumi.RegisterOutputType(MonitorSchedulingOptionArrayOutput{}) pulumi.RegisterOutputType(MonitorSchedulingOptionCustomScheduleOutput{}) pulumi.RegisterOutputType(MonitorSchedulingOptionCustomScheduleArrayOutput{}) - pulumi.RegisterOutputType(MonitorSchedulingOptionCustomScheduleRecurrenceOutput{}) } diff --git a/sdk/go/datadog/pulumiTypes4.go b/sdk/go/datadog/pulumiTypes4.go index 89672fc8b..8f042dcb3 100644 --- a/sdk/go/datadog/pulumiTypes4.go +++ b/sdk/go/datadog/pulumiTypes4.go @@ -13,6 +13,76 @@ import ( var _ = internal.GetEnvOrDefault +type MonitorSchedulingOptionCustomScheduleRecurrence struct { + // Must be a valid `rrule`. See API docs for supported fields + Rrule string `pulumi:"rrule"` + // Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' + Start *string `pulumi:"start"` + // 'tz database' format. Example: `America/New_York` or `UTC` + Timezone string `pulumi:"timezone"` +} + +// MonitorSchedulingOptionCustomScheduleRecurrenceInput is an input type that accepts MonitorSchedulingOptionCustomScheduleRecurrenceArgs and MonitorSchedulingOptionCustomScheduleRecurrenceOutput values. +// You can construct a concrete instance of `MonitorSchedulingOptionCustomScheduleRecurrenceInput` via: +// +// MonitorSchedulingOptionCustomScheduleRecurrenceArgs{...} +type MonitorSchedulingOptionCustomScheduleRecurrenceInput interface { + pulumi.Input + + ToMonitorSchedulingOptionCustomScheduleRecurrenceOutput() MonitorSchedulingOptionCustomScheduleRecurrenceOutput + ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(context.Context) MonitorSchedulingOptionCustomScheduleRecurrenceOutput +} + +type MonitorSchedulingOptionCustomScheduleRecurrenceArgs struct { + // Must be a valid `rrule`. See API docs for supported fields + Rrule pulumi.StringInput `pulumi:"rrule"` + // Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' + Start pulumi.StringPtrInput `pulumi:"start"` + // 'tz database' format. Example: `America/New_York` or `UTC` + Timezone pulumi.StringInput `pulumi:"timezone"` +} + +func (MonitorSchedulingOptionCustomScheduleRecurrenceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleRecurrence)(nil)).Elem() +} + +func (i MonitorSchedulingOptionCustomScheduleRecurrenceArgs) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutput() MonitorSchedulingOptionCustomScheduleRecurrenceOutput { + return i.ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(context.Background()) +} + +func (i MonitorSchedulingOptionCustomScheduleRecurrenceArgs) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(ctx context.Context) MonitorSchedulingOptionCustomScheduleRecurrenceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MonitorSchedulingOptionCustomScheduleRecurrenceOutput) +} + +type MonitorSchedulingOptionCustomScheduleRecurrenceOutput struct{ *pulumi.OutputState } + +func (MonitorSchedulingOptionCustomScheduleRecurrenceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleRecurrence)(nil)).Elem() +} + +func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutput() MonitorSchedulingOptionCustomScheduleRecurrenceOutput { + return o +} + +func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) ToMonitorSchedulingOptionCustomScheduleRecurrenceOutputWithContext(ctx context.Context) MonitorSchedulingOptionCustomScheduleRecurrenceOutput { + return o +} + +// Must be a valid `rrule`. See API docs for supported fields +func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) Rrule() pulumi.StringOutput { + return o.ApplyT(func(v MonitorSchedulingOptionCustomScheduleRecurrence) string { return v.Rrule }).(pulumi.StringOutput) +} + +// Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' +func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) Start() pulumi.StringPtrOutput { + return o.ApplyT(func(v MonitorSchedulingOptionCustomScheduleRecurrence) *string { return v.Start }).(pulumi.StringPtrOutput) +} + +// 'tz database' format. Example: `America/New_York` or `UTC` +func (o MonitorSchedulingOptionCustomScheduleRecurrenceOutput) Timezone() pulumi.StringOutput { + return o.ApplyT(func(v MonitorSchedulingOptionCustomScheduleRecurrence) string { return v.Timezone }).(pulumi.StringOutput) +} + type MonitorSchedulingOptionEvaluationWindow struct { // The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in `HH:mm` format. DayStarts *string `pulumi:"dayStarts"` @@ -88065,182 +88135,8 @@ func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupByArrayOutput) Index }).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupByOutput) } -type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery struct { - // The aggregation method. - Aggregation string `pulumi:"aggregation"` - // The facet name. - Facet *string `pulumi:"facet"` - // Widget sorting methods. Valid values are `asc`, `desc`. - Order string `pulumi:"order"` -} - -// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput is an input type that accepts PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs and PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput values. -// You can construct a concrete instance of `PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput` via: -// -// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{...} -type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput interface { - pulumi.Input - - ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput - ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput -} - -type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs struct { - // The aggregation method. - Aggregation pulumi.StringInput `pulumi:"aggregation"` - // The facet name. - Facet pulumi.StringPtrInput `pulumi:"facet"` - // Widget sorting methods. Valid values are `asc`, `desc`. - Order pulumi.StringInput `pulumi:"order"` -} - -func (PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() -} - -func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { - return i.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(context.Background()) -} - -func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { - return pulumi.ToOutputWithContext(ctx, i).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) -} - -func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return i.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Background()) -} - -func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput).ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx) -} - -// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput is an input type that accepts PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs, PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtr and PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput values. -// You can construct a concrete instance of `PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput` via: -// -// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{...} -// -// or: -// -// nil -type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput interface { - pulumi.Input - - ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput - ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput -} - -type powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs - -func PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtr(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput { - return (*powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType)(v) -} - -func (*powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() -} - -func (i *powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return i.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Background()) -} - -func (i *powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) -} - -type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput struct{ *pulumi.OutputState } - -func (PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() -} - -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { - return o -} - -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { - return o -} - -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return o.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Background()) -} - -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery { - return &v - }).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) -} - -// The aggregation method. -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) Aggregation() pulumi.StringOutput { - return o.ApplyT(func(v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) string { return v.Aggregation }).(pulumi.StringOutput) -} - -// The facet name. -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) Facet() pulumi.StringPtrOutput { - return o.ApplyT(func(v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { return v.Facet }).(pulumi.StringPtrOutput) -} - -// Widget sorting methods. Valid values are `asc`, `desc`. -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) Order() pulumi.StringOutput { - return o.ApplyT(func(v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) string { return v.Order }).(pulumi.StringOutput) -} - -type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput struct{ *pulumi.OutputState } - -func (PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() -} - -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return o -} - -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { - return o -} - -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Elem() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { - return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery { - if v != nil { - return *v - } - var ret PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery - return ret - }).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) -} - -// The aggregation method. -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Aggregation() pulumi.StringPtrOutput { - return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { - if v == nil { - return nil - } - return &v.Aggregation - }).(pulumi.StringPtrOutput) -} - -// The facet name. -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Facet() pulumi.StringPtrOutput { - return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { - if v == nil { - return nil - } - return v.Facet - }).(pulumi.StringPtrOutput) -} - -// Widget sorting methods. Valid values are `asc`, `desc`. -func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Order() pulumi.StringPtrOutput { - return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { - if v == nil { - return nil - } - return &v.Order - }).(pulumi.StringPtrOutput) -} - func init() { + pulumi.RegisterInputType(reflect.TypeOf((*MonitorSchedulingOptionCustomScheduleRecurrenceInput)(nil)).Elem(), MonitorSchedulingOptionCustomScheduleRecurrenceArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MonitorSchedulingOptionEvaluationWindowInput)(nil)).Elem(), MonitorSchedulingOptionEvaluationWindowArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MonitorSchedulingOptionEvaluationWindowArrayInput)(nil)).Elem(), MonitorSchedulingOptionEvaluationWindowArray{}) pulumi.RegisterInputType(reflect.TypeOf((*MonitorVariablesInput)(nil)).Elem(), MonitorVariablesArgs{}) @@ -89237,8 +89133,7 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryComputeQueryPtrInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryComputeQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupByInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryGroupByArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupByArrayInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryGroupByArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{}) + pulumi.RegisterOutputType(MonitorSchedulingOptionCustomScheduleRecurrenceOutput{}) pulumi.RegisterOutputType(MonitorSchedulingOptionEvaluationWindowOutput{}) pulumi.RegisterOutputType(MonitorSchedulingOptionEvaluationWindowArrayOutput{}) pulumi.RegisterOutputType(MonitorVariablesOutput{}) @@ -90235,6 +90130,4 @@ func init() { pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryComputeQueryPtrOutput{}) pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryGroupByOutput{}) pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryGroupByArrayOutput{}) - pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput{}) - pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput{}) } diff --git a/sdk/go/datadog/pulumiTypes5.go b/sdk/go/datadog/pulumiTypes5.go index bffac9b80..c1e810baa 100644 --- a/sdk/go/datadog/pulumiTypes5.go +++ b/sdk/go/datadog/pulumiTypes5.go @@ -13,6 +13,181 @@ import ( var _ = internal.GetEnvOrDefault +type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery struct { + // The aggregation method. + Aggregation string `pulumi:"aggregation"` + // The facet name. + Facet *string `pulumi:"facet"` + // Widget sorting methods. Valid values are `asc`, `desc`. + Order string `pulumi:"order"` +} + +// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput is an input type that accepts PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs and PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput values. +// You can construct a concrete instance of `PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput` via: +// +// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{...} +type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput interface { + pulumi.Input + + ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput + ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput +} + +type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs struct { + // The aggregation method. + Aggregation pulumi.StringInput `pulumi:"aggregation"` + // The facet name. + Facet pulumi.StringPtrInput `pulumi:"facet"` + // Widget sorting methods. Valid values are `asc`, `desc`. + Order pulumi.StringInput `pulumi:"order"` +} + +func (PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() +} + +func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { + return i.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(context.Background()) +} + +func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) +} + +func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return i.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Background()) +} + +func (i PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput).ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx) +} + +// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput is an input type that accepts PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs, PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtr and PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput values. +// You can construct a concrete instance of `PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput` via: +// +// PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{...} +// +// or: +// +// nil +type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput interface { + pulumi.Input + + ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput + ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput +} + +type powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs + +func PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtr(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput { + return (*powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType)(v) +} + +func (*powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() +} + +func (i *powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return i.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Background()) +} + +func (i *powerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrType) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) +} + +type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput struct{ *pulumi.OutputState } + +func (PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() +} + +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { + return o +} + +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { + return o +} + +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return o.ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(context.Background()) +} + +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery { + return &v + }).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) +} + +// The aggregation method. +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) Aggregation() pulumi.StringOutput { + return o.ApplyT(func(v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) string { return v.Aggregation }).(pulumi.StringOutput) +} + +// The facet name. +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) Facet() pulumi.StringPtrOutput { + return o.ApplyT(func(v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { return v.Facet }).(pulumi.StringPtrOutput) +} + +// Widget sorting methods. Valid values are `asc`, `desc`. +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) Order() pulumi.StringOutput { + return o.ApplyT(func(v PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) string { return v.Order }).(pulumi.StringOutput) +} + +type PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput struct{ *pulumi.OutputState } + +func (PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery)(nil)).Elem() +} + +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return o +} + +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) ToPowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutputWithContext(ctx context.Context) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput { + return o +} + +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Elem() PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput { + return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery { + if v != nil { + return *v + } + var ret PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery + return ret + }).(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput) +} + +// The aggregation method. +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Aggregation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { + if v == nil { + return nil + } + return &v.Aggregation + }).(pulumi.StringPtrOutput) +} + +// The facet name. +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Facet() pulumi.StringPtrOutput { + return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { + if v == nil { + return nil + } + return v.Facet + }).(pulumi.StringPtrOutput) +} + +// Widget sorting methods. Valid values are `asc`, `desc`. +func (o PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput) Order() pulumi.StringPtrOutput { + return o.ApplyT(func(v *PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQuery) *string { + if v == nil { + return nil + } + return &v.Order + }).(pulumi.StringPtrOutput) +} + type PowerpackWidgetToplistDefinitionRequestApmQueryMultiCompute struct { // The aggregation method. Aggregation string `pulumi:"aggregation"` @@ -12503,11 +12678,13 @@ type SecurityMonitoringRuleOptions struct { // Options for rules using the impossible travel detection method. ImpossibleTravelOptions *SecurityMonitoringRuleOptionsImpossibleTravelOptions `pulumi:"impossibleTravelOptions"` // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. - KeepAlive int `pulumi:"keepAlive"` + KeepAlive *int `pulumi:"keepAlive"` // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. - MaxSignalDuration int `pulumi:"maxSignalDuration"` + MaxSignalDuration *int `pulumi:"maxSignalDuration"` // New value rules specific options. NewValueOptions *SecurityMonitoringRuleOptionsNewValueOptions `pulumi:"newValueOptions"` + // Options for rules using the third-party detection method. + ThirdPartyRuleOptions *SecurityMonitoringRuleOptionsThirdPartyRuleOptions `pulumi:"thirdPartyRuleOptions"` } // SecurityMonitoringRuleOptionsInput is an input type that accepts SecurityMonitoringRuleOptionsArgs and SecurityMonitoringRuleOptionsOutput values. @@ -12531,11 +12708,13 @@ type SecurityMonitoringRuleOptionsArgs struct { // Options for rules using the impossible travel detection method. ImpossibleTravelOptions SecurityMonitoringRuleOptionsImpossibleTravelOptionsPtrInput `pulumi:"impossibleTravelOptions"` // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. - KeepAlive pulumi.IntInput `pulumi:"keepAlive"` + KeepAlive pulumi.IntPtrInput `pulumi:"keepAlive"` // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. - MaxSignalDuration pulumi.IntInput `pulumi:"maxSignalDuration"` + MaxSignalDuration pulumi.IntPtrInput `pulumi:"maxSignalDuration"` // New value rules specific options. NewValueOptions SecurityMonitoringRuleOptionsNewValueOptionsPtrInput `pulumi:"newValueOptions"` + // Options for rules using the third-party detection method. + ThirdPartyRuleOptions SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrInput `pulumi:"thirdPartyRuleOptions"` } func (SecurityMonitoringRuleOptionsArgs) ElementType() reflect.Type { @@ -12638,13 +12817,13 @@ func (o SecurityMonitoringRuleOptionsOutput) ImpossibleTravelOptions() SecurityM } // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. -func (o SecurityMonitoringRuleOptionsOutput) KeepAlive() pulumi.IntOutput { - return o.ApplyT(func(v SecurityMonitoringRuleOptions) int { return v.KeepAlive }).(pulumi.IntOutput) +func (o SecurityMonitoringRuleOptionsOutput) KeepAlive() pulumi.IntPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptions) *int { return v.KeepAlive }).(pulumi.IntPtrOutput) } // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. -func (o SecurityMonitoringRuleOptionsOutput) MaxSignalDuration() pulumi.IntOutput { - return o.ApplyT(func(v SecurityMonitoringRuleOptions) int { return v.MaxSignalDuration }).(pulumi.IntOutput) +func (o SecurityMonitoringRuleOptionsOutput) MaxSignalDuration() pulumi.IntPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptions) *int { return v.MaxSignalDuration }).(pulumi.IntPtrOutput) } // New value rules specific options. @@ -12654,6 +12833,13 @@ func (o SecurityMonitoringRuleOptionsOutput) NewValueOptions() SecurityMonitorin }).(SecurityMonitoringRuleOptionsNewValueOptionsPtrOutput) } +// Options for rules using the third-party detection method. +func (o SecurityMonitoringRuleOptionsOutput) ThirdPartyRuleOptions() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptions) *SecurityMonitoringRuleOptionsThirdPartyRuleOptions { + return v.ThirdPartyRuleOptions + }).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) +} + type SecurityMonitoringRuleOptionsPtrOutput struct{ *pulumi.OutputState } func (SecurityMonitoringRuleOptionsPtrOutput) ElementType() reflect.Type { @@ -12724,7 +12910,7 @@ func (o SecurityMonitoringRuleOptionsPtrOutput) KeepAlive() pulumi.IntPtrOutput if v == nil { return nil } - return &v.KeepAlive + return v.KeepAlive }).(pulumi.IntPtrOutput) } @@ -12734,7 +12920,7 @@ func (o SecurityMonitoringRuleOptionsPtrOutput) MaxSignalDuration() pulumi.IntPt if v == nil { return nil } - return &v.MaxSignalDuration + return v.MaxSignalDuration }).(pulumi.IntPtrOutput) } @@ -12748,6 +12934,16 @@ func (o SecurityMonitoringRuleOptionsPtrOutput) NewValueOptions() SecurityMonito }).(SecurityMonitoringRuleOptionsNewValueOptionsPtrOutput) } +// Options for rules using the third-party detection method. +func (o SecurityMonitoringRuleOptionsPtrOutput) ThirdPartyRuleOptions() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ApplyT(func(v *SecurityMonitoringRuleOptions) *SecurityMonitoringRuleOptionsThirdPartyRuleOptions { + if v == nil { + return nil + } + return v.ThirdPartyRuleOptions + }).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) +} + type SecurityMonitoringRuleOptionsImpossibleTravelOptions struct { // If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to `false`. BaselineUserLocations *bool `pulumi:"baselineUserLocations"` @@ -13079,186 +13275,488 @@ func (o SecurityMonitoringRuleOptionsNewValueOptionsPtrOutput) LearningThreshold }).(pulumi.IntPtrOutput) } -type SecurityMonitoringRuleQuery struct { - // **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. - // - // Deprecated: `agent_rule` has been deprecated in favor of new Agent Rule resource. - AgentRules []SecurityMonitoringRuleQueryAgentRule `pulumi:"agentRules"` - // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `newValue`, `geoData`, `eventCount`, `none`. Defaults to `"count"`. - Aggregation *string `pulumi:"aggregation"` - // Field for which the cardinality is measured. Sent as an array. - DistinctFields []string `pulumi:"distinctFields"` - // Fields to group by. - GroupByFields []string `pulumi:"groupByFields"` - // The target field to aggregate over when using the `sum`, `max`, or `geoData` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. - // - // Deprecated: Configure `metrics` instead. This attribute will be removed in the next major version of the provider. - Metric *string `pulumi:"metric"` - // Group of target fields to aggregate over when using the `sum`, `max`, `geoData`, or `newValue` aggregations. The `sum`, `max`, and `geoData` aggregations only accept one value in this list, whereas the `newValue` aggregation accepts up to five values. - Metrics []string `pulumi:"metrics"` - // Name of the query. Not compatible with `newValue` aggregations. - Name *string `pulumi:"name"` - // Query to run on logs. - Query string `pulumi:"query"` +type SecurityMonitoringRuleOptionsThirdPartyRuleOptions struct { + // Notification targets for the default rule case, when none of the third-party cases match. + DefaultNotifications []string `pulumi:"defaultNotifications"` + // Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + DefaultStatus string `pulumi:"defaultStatus"` + // Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + RootQueries []SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery `pulumi:"rootQueries"` + // A template for the signal title; if omitted, the title is generated based on the case name. + SignalTitleTemplate *string `pulumi:"signalTitleTemplate"` } -// SecurityMonitoringRuleQueryInput is an input type that accepts SecurityMonitoringRuleQueryArgs and SecurityMonitoringRuleQueryOutput values. -// You can construct a concrete instance of `SecurityMonitoringRuleQueryInput` via: +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsInput is an input type that accepts SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs and SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleOptionsThirdPartyRuleOptionsInput` via: // -// SecurityMonitoringRuleQueryArgs{...} -type SecurityMonitoringRuleQueryInput interface { +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs{...} +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsInput interface { pulumi.Input - ToSecurityMonitoringRuleQueryOutput() SecurityMonitoringRuleQueryOutput - ToSecurityMonitoringRuleQueryOutputWithContext(context.Context) SecurityMonitoringRuleQueryOutput + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutputWithContext(context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput } -type SecurityMonitoringRuleQueryArgs struct { - // **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. - // - // Deprecated: `agent_rule` has been deprecated in favor of new Agent Rule resource. - AgentRules SecurityMonitoringRuleQueryAgentRuleArrayInput `pulumi:"agentRules"` - // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `newValue`, `geoData`, `eventCount`, `none`. Defaults to `"count"`. - Aggregation pulumi.StringPtrInput `pulumi:"aggregation"` - // Field for which the cardinality is measured. Sent as an array. - DistinctFields pulumi.StringArrayInput `pulumi:"distinctFields"` - // Fields to group by. - GroupByFields pulumi.StringArrayInput `pulumi:"groupByFields"` - // The target field to aggregate over when using the `sum`, `max`, or `geoData` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. - // - // Deprecated: Configure `metrics` instead. This attribute will be removed in the next major version of the provider. - Metric pulumi.StringPtrInput `pulumi:"metric"` - // Group of target fields to aggregate over when using the `sum`, `max`, `geoData`, or `newValue` aggregations. The `sum`, `max`, and `geoData` aggregations only accept one value in this list, whereas the `newValue` aggregation accepts up to five values. - Metrics pulumi.StringArrayInput `pulumi:"metrics"` - // Name of the query. Not compatible with `newValue` aggregations. - Name pulumi.StringPtrInput `pulumi:"name"` - // Query to run on logs. - Query pulumi.StringInput `pulumi:"query"` +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs struct { + // Notification targets for the default rule case, when none of the third-party cases match. + DefaultNotifications pulumi.StringArrayInput `pulumi:"defaultNotifications"` + // Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + DefaultStatus pulumi.StringInput `pulumi:"defaultStatus"` + // Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + RootQueries SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput `pulumi:"rootQueries"` + // A template for the signal title; if omitted, the title is generated based on the case name. + SignalTitleTemplate pulumi.StringPtrInput `pulumi:"signalTitleTemplate"` } -func (SecurityMonitoringRuleQueryArgs) ElementType() reflect.Type { - return reflect.TypeOf((*SecurityMonitoringRuleQuery)(nil)).Elem() +func (SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptions)(nil)).Elem() } -func (i SecurityMonitoringRuleQueryArgs) ToSecurityMonitoringRuleQueryOutput() SecurityMonitoringRuleQueryOutput { - return i.ToSecurityMonitoringRuleQueryOutputWithContext(context.Background()) +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput { + return i.ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutputWithContext(context.Background()) } -func (i SecurityMonitoringRuleQueryArgs) ToSecurityMonitoringRuleQueryOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryOutput { - return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleQueryOutput) +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) } -// SecurityMonitoringRuleQueryArrayInput is an input type that accepts SecurityMonitoringRuleQueryArray and SecurityMonitoringRuleQueryArrayOutput values. -// You can construct a concrete instance of `SecurityMonitoringRuleQueryArrayInput` via: +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return i.ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput).ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx) +} + +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrInput is an input type that accepts SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs, SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtr and SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrInput` via: // -// SecurityMonitoringRuleQueryArray{ SecurityMonitoringRuleQueryArgs{...} } -type SecurityMonitoringRuleQueryArrayInput interface { +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs{...} +// +// or: +// +// nil +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrInput interface { pulumi.Input - ToSecurityMonitoringRuleQueryArrayOutput() SecurityMonitoringRuleQueryArrayOutput - ToSecurityMonitoringRuleQueryArrayOutputWithContext(context.Context) SecurityMonitoringRuleQueryArrayOutput + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput } -type SecurityMonitoringRuleQueryArray []SecurityMonitoringRuleQueryInput +type securityMonitoringRuleOptionsThirdPartyRuleOptionsPtrType SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs -func (SecurityMonitoringRuleQueryArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]SecurityMonitoringRuleQuery)(nil)).Elem() +func SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtr(v *SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrInput { + return (*securityMonitoringRuleOptionsThirdPartyRuleOptionsPtrType)(v) } -func (i SecurityMonitoringRuleQueryArray) ToSecurityMonitoringRuleQueryArrayOutput() SecurityMonitoringRuleQueryArrayOutput { - return i.ToSecurityMonitoringRuleQueryArrayOutputWithContext(context.Background()) +func (*securityMonitoringRuleOptionsThirdPartyRuleOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityMonitoringRuleOptionsThirdPartyRuleOptions)(nil)).Elem() } -func (i SecurityMonitoringRuleQueryArray) ToSecurityMonitoringRuleQueryArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleQueryArrayOutput) +func (i *securityMonitoringRuleOptionsThirdPartyRuleOptionsPtrType) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return i.ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Background()) } -type SecurityMonitoringRuleQueryOutput struct{ *pulumi.OutputState } - -func (SecurityMonitoringRuleQueryOutput) ElementType() reflect.Type { - return reflect.TypeOf((*SecurityMonitoringRuleQuery)(nil)).Elem() +func (i *securityMonitoringRuleOptionsThirdPartyRuleOptionsPtrType) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) } -func (o SecurityMonitoringRuleQueryOutput) ToSecurityMonitoringRuleQueryOutput() SecurityMonitoringRuleQueryOutput { - return o -} +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput struct{ *pulumi.OutputState } -func (o SecurityMonitoringRuleQueryOutput) ToSecurityMonitoringRuleQueryOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryOutput { - return o +func (SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptions)(nil)).Elem() } -// **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. -// -// Deprecated: `agent_rule` has been deprecated in favor of new Agent Rule resource. -func (o SecurityMonitoringRuleQueryOutput) AgentRules() SecurityMonitoringRuleQueryAgentRuleArrayOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) []SecurityMonitoringRuleQueryAgentRule { return v.AgentRules }).(SecurityMonitoringRuleQueryAgentRuleArrayOutput) +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput { + return o } -// The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `newValue`, `geoData`, `eventCount`, `none`. Defaults to `"count"`. -func (o SecurityMonitoringRuleQueryOutput) Aggregation() pulumi.StringPtrOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) *string { return v.Aggregation }).(pulumi.StringPtrOutput) +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput { + return o } -// Field for which the cardinality is measured. Sent as an array. -func (o SecurityMonitoringRuleQueryOutput) DistinctFields() pulumi.StringArrayOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) []string { return v.DistinctFields }).(pulumi.StringArrayOutput) +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Background()) } -// Fields to group by. -func (o SecurityMonitoringRuleQueryOutput) GroupByFields() pulumi.StringArrayOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) []string { return v.GroupByFields }).(pulumi.StringArrayOutput) +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SecurityMonitoringRuleOptionsThirdPartyRuleOptions) *SecurityMonitoringRuleOptionsThirdPartyRuleOptions { + return &v + }).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) } -// The target field to aggregate over when using the `sum`, `max`, or `geoData` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. -// -// Deprecated: Configure `metrics` instead. This attribute will be removed in the next major version of the provider. -func (o SecurityMonitoringRuleQueryOutput) Metric() pulumi.StringPtrOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) *string { return v.Metric }).(pulumi.StringPtrOutput) +// Notification targets for the default rule case, when none of the third-party cases match. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) DefaultNotifications() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptionsThirdPartyRuleOptions) []string { return v.DefaultNotifications }).(pulumi.StringArrayOutput) } -// Group of target fields to aggregate over when using the `sum`, `max`, `geoData`, or `newValue` aggregations. The `sum`, `max`, and `geoData` aggregations only accept one value in this list, whereas the `newValue` aggregation accepts up to five values. -func (o SecurityMonitoringRuleQueryOutput) Metrics() pulumi.StringArrayOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) []string { return v.Metrics }).(pulumi.StringArrayOutput) +// Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) DefaultStatus() pulumi.StringOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptionsThirdPartyRuleOptions) string { return v.DefaultStatus }).(pulumi.StringOutput) } -// Name of the query. Not compatible with `newValue` aggregations. -func (o SecurityMonitoringRuleQueryOutput) Name() pulumi.StringPtrOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) *string { return v.Name }).(pulumi.StringPtrOutput) +// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) RootQueries() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptionsThirdPartyRuleOptions) []SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery { + return v.RootQueries + }).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) } -// Query to run on logs. -func (o SecurityMonitoringRuleQueryOutput) Query() pulumi.StringOutput { - return o.ApplyT(func(v SecurityMonitoringRuleQuery) string { return v.Query }).(pulumi.StringOutput) +// A template for the signal title; if omitted, the title is generated based on the case name. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) SignalTitleTemplate() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptionsThirdPartyRuleOptions) *string { return v.SignalTitleTemplate }).(pulumi.StringPtrOutput) } -type SecurityMonitoringRuleQueryArrayOutput struct{ *pulumi.OutputState } +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput struct{ *pulumi.OutputState } -func (SecurityMonitoringRuleQueryArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]SecurityMonitoringRuleQuery)(nil)).Elem() +func (SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityMonitoringRuleOptionsThirdPartyRuleOptions)(nil)).Elem() } -func (o SecurityMonitoringRuleQueryArrayOutput) ToSecurityMonitoringRuleQueryArrayOutput() SecurityMonitoringRuleQueryArrayOutput { +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { return o } -func (o SecurityMonitoringRuleQueryArrayOutput) ToSecurityMonitoringRuleQueryArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryArrayOutput { +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput { return o } -func (o SecurityMonitoringRuleQueryArrayOutput) Index(i pulumi.IntInput) SecurityMonitoringRuleQueryOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) SecurityMonitoringRuleQuery { - return vs[0].([]SecurityMonitoringRuleQuery)[vs[1].(int)] - }).(SecurityMonitoringRuleQueryOutput) +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) Elem() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput { + return o.ApplyT(func(v *SecurityMonitoringRuleOptionsThirdPartyRuleOptions) SecurityMonitoringRuleOptionsThirdPartyRuleOptions { + if v != nil { + return *v + } + var ret SecurityMonitoringRuleOptionsThirdPartyRuleOptions + return ret + }).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput) } -type SecurityMonitoringRuleQueryAgentRule struct { - // **Deprecated**. It won't be applied anymore. - AgentRuleId string `pulumi:"agentRuleId"` - // **Deprecated**. It won't be applied anymore. - Expression string `pulumi:"expression"` +// Notification targets for the default rule case, when none of the third-party cases match. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) DefaultNotifications() pulumi.StringArrayOutput { + return o.ApplyT(func(v *SecurityMonitoringRuleOptionsThirdPartyRuleOptions) []string { + if v == nil { + return nil + } + return v.DefaultNotifications + }).(pulumi.StringArrayOutput) } -// SecurityMonitoringRuleQueryAgentRuleInput is an input type that accepts SecurityMonitoringRuleQueryAgentRuleArgs and SecurityMonitoringRuleQueryAgentRuleOutput values. +// Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) DefaultStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityMonitoringRuleOptionsThirdPartyRuleOptions) *string { + if v == nil { + return nil + } + return &v.DefaultStatus + }).(pulumi.StringPtrOutput) +} + +// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) RootQueries() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o.ApplyT(func(v *SecurityMonitoringRuleOptionsThirdPartyRuleOptions) []SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery { + if v == nil { + return nil + } + return v.RootQueries + }).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) +} + +// A template for the signal title; if omitted, the title is generated based on the case name. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput) SignalTitleTemplate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityMonitoringRuleOptionsThirdPartyRuleOptions) *string { + if v == nil { + return nil + } + return v.SignalTitleTemplate + }).(pulumi.StringPtrOutput) +} + +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery struct { + // Fields to group by. If empty, each log triggers a signal. + GroupByFields []string `pulumi:"groupByFields"` + // Query for selecting logs to apply the filtering action. + Query string `pulumi:"query"` +} + +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryInput is an input type that accepts SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs and SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryInput` via: +// +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs{...} +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryInput interface { + pulumi.Input + + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput +} + +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs struct { + // Fields to group by. If empty, each log triggers a signal. + GroupByFields pulumi.StringArrayInput `pulumi:"groupByFields"` + // Query for selecting logs to apply the filtering action. + Query pulumi.StringInput `pulumi:"query"` +} + +func (SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return i.ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput) +} + +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput is an input type that accepts SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArray and SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput` via: +// +// SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArray{ SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs{...} } +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput interface { + pulumi.Input + + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput + ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput +} + +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArray []SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryInput + +func (SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArray) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return i.ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArray) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) +} + +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return o +} + +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return o +} + +// Fields to group by. If empty, each log triggers a signal. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput) GroupByFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery) []string { return v.GroupByFields }).(pulumi.StringArrayOutput) +} + +// Query for selecting logs to apply the filtering action. +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput) Query() pulumi.StringOutput { + return o.ApplyT(func(v SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery) string { return v.Query }).(pulumi.StringOutput) +} + +type SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput() SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o +} + +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) ToSecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o +} + +func (o SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) Index(i pulumi.IntInput) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery { + return vs[0].([]SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery)[vs[1].(int)] + }).(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput) +} + +type SecurityMonitoringRuleQuery struct { + // **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. + // + // Deprecated: `agent_rule` has been deprecated in favor of new Agent Rule resource. + AgentRules []SecurityMonitoringRuleQueryAgentRule `pulumi:"agentRules"` + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `newValue`, `geoData`, `eventCount`, `none`. Defaults to `"count"`. + Aggregation *string `pulumi:"aggregation"` + // Field for which the cardinality is measured. Sent as an array. + DistinctFields []string `pulumi:"distinctFields"` + // Fields to group by. + GroupByFields []string `pulumi:"groupByFields"` + // The target field to aggregate over when using the `sum`, `max`, or `geoData` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. + // + // Deprecated: Configure `metrics` instead. This attribute will be removed in the next major version of the provider. + Metric *string `pulumi:"metric"` + // Group of target fields to aggregate over when using the `sum`, `max`, `geoData`, or `newValue` aggregations. The `sum`, `max`, and `geoData` aggregations only accept one value in this list, whereas the `newValue` aggregation accepts up to five values. + Metrics []string `pulumi:"metrics"` + // Name of the query. Not compatible with `newValue` aggregations. + Name *string `pulumi:"name"` + // Query to run on logs. + Query string `pulumi:"query"` +} + +// SecurityMonitoringRuleQueryInput is an input type that accepts SecurityMonitoringRuleQueryArgs and SecurityMonitoringRuleQueryOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleQueryInput` via: +// +// SecurityMonitoringRuleQueryArgs{...} +type SecurityMonitoringRuleQueryInput interface { + pulumi.Input + + ToSecurityMonitoringRuleQueryOutput() SecurityMonitoringRuleQueryOutput + ToSecurityMonitoringRuleQueryOutputWithContext(context.Context) SecurityMonitoringRuleQueryOutput +} + +type SecurityMonitoringRuleQueryArgs struct { + // **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. + // + // Deprecated: `agent_rule` has been deprecated in favor of new Agent Rule resource. + AgentRules SecurityMonitoringRuleQueryAgentRuleArrayInput `pulumi:"agentRules"` + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `newValue`, `geoData`, `eventCount`, `none`. Defaults to `"count"`. + Aggregation pulumi.StringPtrInput `pulumi:"aggregation"` + // Field for which the cardinality is measured. Sent as an array. + DistinctFields pulumi.StringArrayInput `pulumi:"distinctFields"` + // Fields to group by. + GroupByFields pulumi.StringArrayInput `pulumi:"groupByFields"` + // The target field to aggregate over when using the `sum`, `max`, or `geoData` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. + // + // Deprecated: Configure `metrics` instead. This attribute will be removed in the next major version of the provider. + Metric pulumi.StringPtrInput `pulumi:"metric"` + // Group of target fields to aggregate over when using the `sum`, `max`, `geoData`, or `newValue` aggregations. The `sum`, `max`, and `geoData` aggregations only accept one value in this list, whereas the `newValue` aggregation accepts up to five values. + Metrics pulumi.StringArrayInput `pulumi:"metrics"` + // Name of the query. Not compatible with `newValue` aggregations. + Name pulumi.StringPtrInput `pulumi:"name"` + // Query to run on logs. + Query pulumi.StringInput `pulumi:"query"` +} + +func (SecurityMonitoringRuleQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleQuery)(nil)).Elem() +} + +func (i SecurityMonitoringRuleQueryArgs) ToSecurityMonitoringRuleQueryOutput() SecurityMonitoringRuleQueryOutput { + return i.ToSecurityMonitoringRuleQueryOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringRuleQueryArgs) ToSecurityMonitoringRuleQueryOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleQueryOutput) +} + +// SecurityMonitoringRuleQueryArrayInput is an input type that accepts SecurityMonitoringRuleQueryArray and SecurityMonitoringRuleQueryArrayOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleQueryArrayInput` via: +// +// SecurityMonitoringRuleQueryArray{ SecurityMonitoringRuleQueryArgs{...} } +type SecurityMonitoringRuleQueryArrayInput interface { + pulumi.Input + + ToSecurityMonitoringRuleQueryArrayOutput() SecurityMonitoringRuleQueryArrayOutput + ToSecurityMonitoringRuleQueryArrayOutputWithContext(context.Context) SecurityMonitoringRuleQueryArrayOutput +} + +type SecurityMonitoringRuleQueryArray []SecurityMonitoringRuleQueryInput + +func (SecurityMonitoringRuleQueryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityMonitoringRuleQuery)(nil)).Elem() +} + +func (i SecurityMonitoringRuleQueryArray) ToSecurityMonitoringRuleQueryArrayOutput() SecurityMonitoringRuleQueryArrayOutput { + return i.ToSecurityMonitoringRuleQueryArrayOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringRuleQueryArray) ToSecurityMonitoringRuleQueryArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleQueryArrayOutput) +} + +type SecurityMonitoringRuleQueryOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringRuleQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleQuery)(nil)).Elem() +} + +func (o SecurityMonitoringRuleQueryOutput) ToSecurityMonitoringRuleQueryOutput() SecurityMonitoringRuleQueryOutput { + return o +} + +func (o SecurityMonitoringRuleQueryOutput) ToSecurityMonitoringRuleQueryOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryOutput { + return o +} + +// **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. +// +// Deprecated: `agent_rule` has been deprecated in favor of new Agent Rule resource. +func (o SecurityMonitoringRuleQueryOutput) AgentRules() SecurityMonitoringRuleQueryAgentRuleArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) []SecurityMonitoringRuleQueryAgentRule { return v.AgentRules }).(SecurityMonitoringRuleQueryAgentRuleArrayOutput) +} + +// The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `newValue`, `geoData`, `eventCount`, `none`. Defaults to `"count"`. +func (o SecurityMonitoringRuleQueryOutput) Aggregation() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) *string { return v.Aggregation }).(pulumi.StringPtrOutput) +} + +// Field for which the cardinality is measured. Sent as an array. +func (o SecurityMonitoringRuleQueryOutput) DistinctFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) []string { return v.DistinctFields }).(pulumi.StringArrayOutput) +} + +// Fields to group by. +func (o SecurityMonitoringRuleQueryOutput) GroupByFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) []string { return v.GroupByFields }).(pulumi.StringArrayOutput) +} + +// The target field to aggregate over when using the `sum`, `max`, or `geoData` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. +// +// Deprecated: Configure `metrics` instead. This attribute will be removed in the next major version of the provider. +func (o SecurityMonitoringRuleQueryOutput) Metric() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) *string { return v.Metric }).(pulumi.StringPtrOutput) +} + +// Group of target fields to aggregate over when using the `sum`, `max`, `geoData`, or `newValue` aggregations. The `sum`, `max`, and `geoData` aggregations only accept one value in this list, whereas the `newValue` aggregation accepts up to five values. +func (o SecurityMonitoringRuleQueryOutput) Metrics() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) []string { return v.Metrics }).(pulumi.StringArrayOutput) +} + +// Name of the query. Not compatible with `newValue` aggregations. +func (o SecurityMonitoringRuleQueryOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Query to run on logs. +func (o SecurityMonitoringRuleQueryOutput) Query() pulumi.StringOutput { + return o.ApplyT(func(v SecurityMonitoringRuleQuery) string { return v.Query }).(pulumi.StringOutput) +} + +type SecurityMonitoringRuleQueryArrayOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringRuleQueryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityMonitoringRuleQuery)(nil)).Elem() +} + +func (o SecurityMonitoringRuleQueryArrayOutput) ToSecurityMonitoringRuleQueryArrayOutput() SecurityMonitoringRuleQueryArrayOutput { + return o +} + +func (o SecurityMonitoringRuleQueryArrayOutput) ToSecurityMonitoringRuleQueryArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleQueryArrayOutput { + return o +} + +func (o SecurityMonitoringRuleQueryArrayOutput) Index(i pulumi.IntInput) SecurityMonitoringRuleQueryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SecurityMonitoringRuleQuery { + return vs[0].([]SecurityMonitoringRuleQuery)[vs[1].(int)] + }).(SecurityMonitoringRuleQueryOutput) +} + +type SecurityMonitoringRuleQueryAgentRule struct { + // **Deprecated**. It won't be applied anymore. + AgentRuleId string `pulumi:"agentRuleId"` + // **Deprecated**. It won't be applied anymore. + Expression string `pulumi:"expression"` +} + +// SecurityMonitoringRuleQueryAgentRuleInput is an input type that accepts SecurityMonitoringRuleQueryAgentRuleArgs and SecurityMonitoringRuleQueryAgentRuleOutput values. // You can construct a concrete instance of `SecurityMonitoringRuleQueryAgentRuleInput` via: // // SecurityMonitoringRuleQueryAgentRuleArgs{...} @@ -13499,7 +13997,131 @@ func (o SecurityMonitoringRuleSignalQueryArrayOutput) Index(i pulumi.IntInput) S }).(SecurityMonitoringRuleSignalQueryOutput) } -type SensitiveDataScannerGroupFilter struct { +type SecurityMonitoringRuleThirdPartyCase struct { + // Name of the case. + Name *string `pulumi:"name"` + // Notification targets for each rule case. + Notifications []string `pulumi:"notifications"` + // A query to associate a third-party event to this case. + Query *string `pulumi:"query"` + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status string `pulumi:"status"` +} + +// SecurityMonitoringRuleThirdPartyCaseInput is an input type that accepts SecurityMonitoringRuleThirdPartyCaseArgs and SecurityMonitoringRuleThirdPartyCaseOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleThirdPartyCaseInput` via: +// +// SecurityMonitoringRuleThirdPartyCaseArgs{...} +type SecurityMonitoringRuleThirdPartyCaseInput interface { + pulumi.Input + + ToSecurityMonitoringRuleThirdPartyCaseOutput() SecurityMonitoringRuleThirdPartyCaseOutput + ToSecurityMonitoringRuleThirdPartyCaseOutputWithContext(context.Context) SecurityMonitoringRuleThirdPartyCaseOutput +} + +type SecurityMonitoringRuleThirdPartyCaseArgs struct { + // Name of the case. + Name pulumi.StringPtrInput `pulumi:"name"` + // Notification targets for each rule case. + Notifications pulumi.StringArrayInput `pulumi:"notifications"` + // A query to associate a third-party event to this case. + Query pulumi.StringPtrInput `pulumi:"query"` + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status pulumi.StringInput `pulumi:"status"` +} + +func (SecurityMonitoringRuleThirdPartyCaseArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleThirdPartyCase)(nil)).Elem() +} + +func (i SecurityMonitoringRuleThirdPartyCaseArgs) ToSecurityMonitoringRuleThirdPartyCaseOutput() SecurityMonitoringRuleThirdPartyCaseOutput { + return i.ToSecurityMonitoringRuleThirdPartyCaseOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringRuleThirdPartyCaseArgs) ToSecurityMonitoringRuleThirdPartyCaseOutputWithContext(ctx context.Context) SecurityMonitoringRuleThirdPartyCaseOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleThirdPartyCaseOutput) +} + +// SecurityMonitoringRuleThirdPartyCaseArrayInput is an input type that accepts SecurityMonitoringRuleThirdPartyCaseArray and SecurityMonitoringRuleThirdPartyCaseArrayOutput values. +// You can construct a concrete instance of `SecurityMonitoringRuleThirdPartyCaseArrayInput` via: +// +// SecurityMonitoringRuleThirdPartyCaseArray{ SecurityMonitoringRuleThirdPartyCaseArgs{...} } +type SecurityMonitoringRuleThirdPartyCaseArrayInput interface { + pulumi.Input + + ToSecurityMonitoringRuleThirdPartyCaseArrayOutput() SecurityMonitoringRuleThirdPartyCaseArrayOutput + ToSecurityMonitoringRuleThirdPartyCaseArrayOutputWithContext(context.Context) SecurityMonitoringRuleThirdPartyCaseArrayOutput +} + +type SecurityMonitoringRuleThirdPartyCaseArray []SecurityMonitoringRuleThirdPartyCaseInput + +func (SecurityMonitoringRuleThirdPartyCaseArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityMonitoringRuleThirdPartyCase)(nil)).Elem() +} + +func (i SecurityMonitoringRuleThirdPartyCaseArray) ToSecurityMonitoringRuleThirdPartyCaseArrayOutput() SecurityMonitoringRuleThirdPartyCaseArrayOutput { + return i.ToSecurityMonitoringRuleThirdPartyCaseArrayOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringRuleThirdPartyCaseArray) ToSecurityMonitoringRuleThirdPartyCaseArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleThirdPartyCaseArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringRuleThirdPartyCaseArrayOutput) +} + +type SecurityMonitoringRuleThirdPartyCaseOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringRuleThirdPartyCaseOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityMonitoringRuleThirdPartyCase)(nil)).Elem() +} + +func (o SecurityMonitoringRuleThirdPartyCaseOutput) ToSecurityMonitoringRuleThirdPartyCaseOutput() SecurityMonitoringRuleThirdPartyCaseOutput { + return o +} + +func (o SecurityMonitoringRuleThirdPartyCaseOutput) ToSecurityMonitoringRuleThirdPartyCaseOutputWithContext(ctx context.Context) SecurityMonitoringRuleThirdPartyCaseOutput { + return o +} + +// Name of the case. +func (o SecurityMonitoringRuleThirdPartyCaseOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleThirdPartyCase) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Notification targets for each rule case. +func (o SecurityMonitoringRuleThirdPartyCaseOutput) Notifications() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityMonitoringRuleThirdPartyCase) []string { return v.Notifications }).(pulumi.StringArrayOutput) +} + +// A query to associate a third-party event to this case. +func (o SecurityMonitoringRuleThirdPartyCaseOutput) Query() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityMonitoringRuleThirdPartyCase) *string { return v.Query }).(pulumi.StringPtrOutput) +} + +// Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. +func (o SecurityMonitoringRuleThirdPartyCaseOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v SecurityMonitoringRuleThirdPartyCase) string { return v.Status }).(pulumi.StringOutput) +} + +type SecurityMonitoringRuleThirdPartyCaseArrayOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringRuleThirdPartyCaseArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityMonitoringRuleThirdPartyCase)(nil)).Elem() +} + +func (o SecurityMonitoringRuleThirdPartyCaseArrayOutput) ToSecurityMonitoringRuleThirdPartyCaseArrayOutput() SecurityMonitoringRuleThirdPartyCaseArrayOutput { + return o +} + +func (o SecurityMonitoringRuleThirdPartyCaseArrayOutput) ToSecurityMonitoringRuleThirdPartyCaseArrayOutputWithContext(ctx context.Context) SecurityMonitoringRuleThirdPartyCaseArrayOutput { + return o +} + +func (o SecurityMonitoringRuleThirdPartyCaseArrayOutput) Index(i pulumi.IntInput) SecurityMonitoringRuleThirdPartyCaseOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SecurityMonitoringRuleThirdPartyCase { + return vs[0].([]SecurityMonitoringRuleThirdPartyCase)[vs[1].(int)] + }).(SecurityMonitoringRuleThirdPartyCaseOutput) +} + +type SensitiveDataScannerGroupFilter struct { // Query to filter the events. Query string `pulumi:"query"` } @@ -13636,6 +14258,162 @@ func (o SensitiveDataScannerGroupFilterPtrOutput) Query() pulumi.StringPtrOutput }).(pulumi.StringPtrOutput) } +type SensitiveDataScannerRuleIncludedKeywordConfiguration struct { + // Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + CharacterCount int `pulumi:"characterCount"` + // Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + Keywords []string `pulumi:"keywords"` +} + +// SensitiveDataScannerRuleIncludedKeywordConfigurationInput is an input type that accepts SensitiveDataScannerRuleIncludedKeywordConfigurationArgs and SensitiveDataScannerRuleIncludedKeywordConfigurationOutput values. +// You can construct a concrete instance of `SensitiveDataScannerRuleIncludedKeywordConfigurationInput` via: +// +// SensitiveDataScannerRuleIncludedKeywordConfigurationArgs{...} +type SensitiveDataScannerRuleIncludedKeywordConfigurationInput interface { + pulumi.Input + + ToSensitiveDataScannerRuleIncludedKeywordConfigurationOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationOutput + ToSensitiveDataScannerRuleIncludedKeywordConfigurationOutputWithContext(context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationOutput +} + +type SensitiveDataScannerRuleIncludedKeywordConfigurationArgs struct { + // Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + CharacterCount pulumi.IntInput `pulumi:"characterCount"` + // Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + Keywords pulumi.StringArrayInput `pulumi:"keywords"` +} + +func (SensitiveDataScannerRuleIncludedKeywordConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SensitiveDataScannerRuleIncludedKeywordConfiguration)(nil)).Elem() +} + +func (i SensitiveDataScannerRuleIncludedKeywordConfigurationArgs) ToSensitiveDataScannerRuleIncludedKeywordConfigurationOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationOutput { + return i.ToSensitiveDataScannerRuleIncludedKeywordConfigurationOutputWithContext(context.Background()) +} + +func (i SensitiveDataScannerRuleIncludedKeywordConfigurationArgs) ToSensitiveDataScannerRuleIncludedKeywordConfigurationOutputWithContext(ctx context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) +} + +func (i SensitiveDataScannerRuleIncludedKeywordConfigurationArgs) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return i.ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(context.Background()) +} + +func (i SensitiveDataScannerRuleIncludedKeywordConfigurationArgs) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(ctx context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SensitiveDataScannerRuleIncludedKeywordConfigurationOutput).ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(ctx) +} + +// SensitiveDataScannerRuleIncludedKeywordConfigurationPtrInput is an input type that accepts SensitiveDataScannerRuleIncludedKeywordConfigurationArgs, SensitiveDataScannerRuleIncludedKeywordConfigurationPtr and SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput values. +// You can construct a concrete instance of `SensitiveDataScannerRuleIncludedKeywordConfigurationPtrInput` via: +// +// SensitiveDataScannerRuleIncludedKeywordConfigurationArgs{...} +// +// or: +// +// nil +type SensitiveDataScannerRuleIncludedKeywordConfigurationPtrInput interface { + pulumi.Input + + ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput + ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput +} + +type sensitiveDataScannerRuleIncludedKeywordConfigurationPtrType SensitiveDataScannerRuleIncludedKeywordConfigurationArgs + +func SensitiveDataScannerRuleIncludedKeywordConfigurationPtr(v *SensitiveDataScannerRuleIncludedKeywordConfigurationArgs) SensitiveDataScannerRuleIncludedKeywordConfigurationPtrInput { + return (*sensitiveDataScannerRuleIncludedKeywordConfigurationPtrType)(v) +} + +func (*sensitiveDataScannerRuleIncludedKeywordConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**SensitiveDataScannerRuleIncludedKeywordConfiguration)(nil)).Elem() +} + +func (i *sensitiveDataScannerRuleIncludedKeywordConfigurationPtrType) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return i.ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *sensitiveDataScannerRuleIncludedKeywordConfigurationPtrType) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(ctx context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) +} + +type SensitiveDataScannerRuleIncludedKeywordConfigurationOutput struct{ *pulumi.OutputState } + +func (SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SensitiveDataScannerRuleIncludedKeywordConfiguration)(nil)).Elem() +} + +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) ToSensitiveDataScannerRuleIncludedKeywordConfigurationOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationOutput { + return o +} + +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) ToSensitiveDataScannerRuleIncludedKeywordConfigurationOutputWithContext(ctx context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationOutput { + return o +} + +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return o.ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(context.Background()) +} + +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(ctx context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SensitiveDataScannerRuleIncludedKeywordConfiguration) *SensitiveDataScannerRuleIncludedKeywordConfiguration { + return &v + }).(SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) +} + +// Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) CharacterCount() pulumi.IntOutput { + return o.ApplyT(func(v SensitiveDataScannerRuleIncludedKeywordConfiguration) int { return v.CharacterCount }).(pulumi.IntOutput) +} + +// Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) Keywords() pulumi.StringArrayOutput { + return o.ApplyT(func(v SensitiveDataScannerRuleIncludedKeywordConfiguration) []string { return v.Keywords }).(pulumi.StringArrayOutput) +} + +type SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SensitiveDataScannerRuleIncludedKeywordConfiguration)(nil)).Elem() +} + +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput() SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return o +} + +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) ToSensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutputWithContext(ctx context.Context) SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return o +} + +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) Elem() SensitiveDataScannerRuleIncludedKeywordConfigurationOutput { + return o.ApplyT(func(v *SensitiveDataScannerRuleIncludedKeywordConfiguration) SensitiveDataScannerRuleIncludedKeywordConfiguration { + if v != nil { + return *v + } + var ret SensitiveDataScannerRuleIncludedKeywordConfiguration + return ret + }).(SensitiveDataScannerRuleIncludedKeywordConfigurationOutput) +} + +// Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) CharacterCount() pulumi.IntPtrOutput { + return o.ApplyT(func(v *SensitiveDataScannerRuleIncludedKeywordConfiguration) *int { + if v == nil { + return nil + } + return &v.CharacterCount + }).(pulumi.IntPtrOutput) +} + +// Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. +func (o SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) Keywords() pulumi.StringArrayOutput { + return o.ApplyT(func(v *SensitiveDataScannerRuleIncludedKeywordConfiguration) []string { + if v == nil { + return nil + } + return v.Keywords + }).(pulumi.StringArrayOutput) +} + type SensitiveDataScannerRuleTextReplacement struct { // Required if type == 'partial*replacement*from*beginning' or 'partial*replacement*from*end'. It must be > 0. NumberOfChars *int `pulumi:"numberOfChars"` @@ -13913,57 +14691,946 @@ func (o ServiceLevelObjectiveQueryOutput) ToServiceLevelObjectiveQueryPtrOutputW }).(ServiceLevelObjectiveQueryPtrOutput) } -// The sum of the `total` events. -func (o ServiceLevelObjectiveQueryOutput) Denominator() pulumi.StringOutput { - return o.ApplyT(func(v ServiceLevelObjectiveQuery) string { return v.Denominator }).(pulumi.StringOutput) +// The sum of the `total` events. +func (o ServiceLevelObjectiveQueryOutput) Denominator() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLevelObjectiveQuery) string { return v.Denominator }).(pulumi.StringOutput) +} + +// The sum of all the `good` events. +func (o ServiceLevelObjectiveQueryOutput) Numerator() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLevelObjectiveQuery) string { return v.Numerator }).(pulumi.StringOutput) +} + +type ServiceLevelObjectiveQueryPtrOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveQueryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveQuery)(nil)).Elem() +} + +func (o ServiceLevelObjectiveQueryPtrOutput) ToServiceLevelObjectiveQueryPtrOutput() ServiceLevelObjectiveQueryPtrOutput { + return o +} + +func (o ServiceLevelObjectiveQueryPtrOutput) ToServiceLevelObjectiveQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveQueryPtrOutput { + return o +} + +func (o ServiceLevelObjectiveQueryPtrOutput) Elem() ServiceLevelObjectiveQueryOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveQuery) ServiceLevelObjectiveQuery { + if v != nil { + return *v + } + var ret ServiceLevelObjectiveQuery + return ret + }).(ServiceLevelObjectiveQueryOutput) +} + +// The sum of the `total` events. +func (o ServiceLevelObjectiveQueryPtrOutput) Denominator() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveQuery) *string { + if v == nil { + return nil + } + return &v.Denominator + }).(pulumi.StringPtrOutput) +} + +// The sum of all the `good` events. +func (o ServiceLevelObjectiveQueryPtrOutput) Numerator() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveQuery) *string { + if v == nil { + return nil + } + return &v.Numerator + }).(pulumi.StringPtrOutput) +} + +type ServiceLevelObjectiveSliSpecification struct { + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + TimeSlice ServiceLevelObjectiveSliSpecificationTimeSlice `pulumi:"timeSlice"` +} + +// ServiceLevelObjectiveSliSpecificationInput is an input type that accepts ServiceLevelObjectiveSliSpecificationArgs and ServiceLevelObjectiveSliSpecificationOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationInput` via: +// +// ServiceLevelObjectiveSliSpecificationArgs{...} +type ServiceLevelObjectiveSliSpecificationInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationOutput() ServiceLevelObjectiveSliSpecificationOutput + ToServiceLevelObjectiveSliSpecificationOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationOutput +} + +type ServiceLevelObjectiveSliSpecificationArgs struct { + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + TimeSlice ServiceLevelObjectiveSliSpecificationTimeSliceInput `pulumi:"timeSlice"` +} + +func (ServiceLevelObjectiveSliSpecificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecification)(nil)).Elem() +} + +func (i ServiceLevelObjectiveSliSpecificationArgs) ToServiceLevelObjectiveSliSpecificationOutput() ServiceLevelObjectiveSliSpecificationOutput { + return i.ToServiceLevelObjectiveSliSpecificationOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationArgs) ToServiceLevelObjectiveSliSpecificationOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationOutput) +} + +func (i ServiceLevelObjectiveSliSpecificationArgs) ToServiceLevelObjectiveSliSpecificationPtrOutput() ServiceLevelObjectiveSliSpecificationPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationArgs) ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationOutput).ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(ctx) +} + +// ServiceLevelObjectiveSliSpecificationPtrInput is an input type that accepts ServiceLevelObjectiveSliSpecificationArgs, ServiceLevelObjectiveSliSpecificationPtr and ServiceLevelObjectiveSliSpecificationPtrOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationPtrInput` via: +// +// ServiceLevelObjectiveSliSpecificationArgs{...} +// +// or: +// +// nil +type ServiceLevelObjectiveSliSpecificationPtrInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationPtrOutput() ServiceLevelObjectiveSliSpecificationPtrOutput + ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationPtrOutput +} + +type serviceLevelObjectiveSliSpecificationPtrType ServiceLevelObjectiveSliSpecificationArgs + +func ServiceLevelObjectiveSliSpecificationPtr(v *ServiceLevelObjectiveSliSpecificationArgs) ServiceLevelObjectiveSliSpecificationPtrInput { + return (*serviceLevelObjectiveSliSpecificationPtrType)(v) +} + +func (*serviceLevelObjectiveSliSpecificationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecification)(nil)).Elem() +} + +func (i *serviceLevelObjectiveSliSpecificationPtrType) ToServiceLevelObjectiveSliSpecificationPtrOutput() ServiceLevelObjectiveSliSpecificationPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(context.Background()) +} + +func (i *serviceLevelObjectiveSliSpecificationPtrType) ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationPtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecification)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationOutput) ToServiceLevelObjectiveSliSpecificationOutput() ServiceLevelObjectiveSliSpecificationOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationOutput) ToServiceLevelObjectiveSliSpecificationOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationOutput) ToServiceLevelObjectiveSliSpecificationPtrOutput() ServiceLevelObjectiveSliSpecificationPtrOutput { + return o.ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(context.Background()) +} + +func (o ServiceLevelObjectiveSliSpecificationOutput) ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceLevelObjectiveSliSpecification) *ServiceLevelObjectiveSliSpecification { + return &v + }).(ServiceLevelObjectiveSliSpecificationPtrOutput) +} + +// The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. +func (o ServiceLevelObjectiveSliSpecificationOutput) TimeSlice() ServiceLevelObjectiveSliSpecificationTimeSliceOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecification) ServiceLevelObjectiveSliSpecificationTimeSlice { + return v.TimeSlice + }).(ServiceLevelObjectiveSliSpecificationTimeSliceOutput) +} + +type ServiceLevelObjectiveSliSpecificationPtrOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecification)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationPtrOutput) ToServiceLevelObjectiveSliSpecificationPtrOutput() ServiceLevelObjectiveSliSpecificationPtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationPtrOutput) ToServiceLevelObjectiveSliSpecificationPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationPtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationPtrOutput) Elem() ServiceLevelObjectiveSliSpecificationOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecification) ServiceLevelObjectiveSliSpecification { + if v != nil { + return *v + } + var ret ServiceLevelObjectiveSliSpecification + return ret + }).(ServiceLevelObjectiveSliSpecificationOutput) +} + +// The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. +func (o ServiceLevelObjectiveSliSpecificationPtrOutput) TimeSlice() ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecification) *ServiceLevelObjectiveSliSpecificationTimeSlice { + if v == nil { + return nil + } + return &v.TimeSlice + }).(ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSlice struct { + // The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + Comparator string `pulumi:"comparator"` + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Query ServiceLevelObjectiveSliSpecificationTimeSliceQuery `pulumi:"query"` + // The threshold value to which each SLI value will be compared. + Threshold float64 `pulumi:"threshold"` +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceArgs and ServiceLevelObjectiveSliSpecificationTimeSliceOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceArgs{...} +type ServiceLevelObjectiveSliSpecificationTimeSliceInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceOutput() ServiceLevelObjectiveSliSpecificationTimeSliceOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceOutput +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceArgs struct { + // The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + Comparator pulumi.StringInput `pulumi:"comparator"` + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Query ServiceLevelObjectiveSliSpecificationTimeSliceQueryInput `pulumi:"query"` + // The threshold value to which each SLI value will be compared. + Threshold pulumi.Float64Input `pulumi:"threshold"` +} + +func (ServiceLevelObjectiveSliSpecificationTimeSliceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSlice)(nil)).Elem() +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceOutput() ServiceLevelObjectiveSliSpecificationTimeSliceOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceOutput) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceArgs) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput() ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceArgs) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceOutput).ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(ctx) +} + +// ServiceLevelObjectiveSliSpecificationTimeSlicePtrInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceArgs, ServiceLevelObjectiveSliSpecificationTimeSlicePtr and ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSlicePtrInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceArgs{...} +// +// or: +// +// nil +type ServiceLevelObjectiveSliSpecificationTimeSlicePtrInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput() ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput + ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput +} + +type serviceLevelObjectiveSliSpecificationTimeSlicePtrType ServiceLevelObjectiveSliSpecificationTimeSliceArgs + +func ServiceLevelObjectiveSliSpecificationTimeSlicePtr(v *ServiceLevelObjectiveSliSpecificationTimeSliceArgs) ServiceLevelObjectiveSliSpecificationTimeSlicePtrInput { + return (*serviceLevelObjectiveSliSpecificationTimeSlicePtrType)(v) +} + +func (*serviceLevelObjectiveSliSpecificationTimeSlicePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSlice)(nil)).Elem() +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSlicePtrType) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput() ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(context.Background()) +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSlicePtrType) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSlice)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceOutput() ServiceLevelObjectiveSliSpecificationTimeSliceOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceOutput) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput() ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return o.ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(context.Background()) +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceOutput) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceLevelObjectiveSliSpecificationTimeSlice) *ServiceLevelObjectiveSliSpecificationTimeSlice { + return &v + }).(ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) +} + +// The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceOutput) Comparator() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSlice) string { return v.Comparator }).(pulumi.StringOutput) +} + +// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceOutput) Query() ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSlice) ServiceLevelObjectiveSliSpecificationTimeSliceQuery { + return v.Query + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) +} + +// The threshold value to which each SLI value will be compared. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceOutput) Threshold() pulumi.Float64Output { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSlice) float64 { return v.Threshold }).(pulumi.Float64Output) +} + +type ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSlice)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput() ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSlicePtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) Elem() ServiceLevelObjectiveSliSpecificationTimeSliceOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSlice) ServiceLevelObjectiveSliSpecificationTimeSlice { + if v != nil { + return *v + } + var ret ServiceLevelObjectiveSliSpecificationTimeSlice + return ret + }).(ServiceLevelObjectiveSliSpecificationTimeSliceOutput) +} + +// The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. +func (o ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) Comparator() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSlice) *string { + if v == nil { + return nil + } + return &v.Comparator + }).(pulumi.StringPtrOutput) +} + +// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) Query() ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSlice) *ServiceLevelObjectiveSliSpecificationTimeSliceQuery { + if v == nil { + return nil + } + return &v.Query + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) +} + +// The threshold value to which each SLI value will be compared. +func (o ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput) Threshold() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSlice) *float64 { + if v == nil { + return nil + } + return &v.Threshold + }).(pulumi.Float64PtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQuery struct { + // A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + Formula ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula `pulumi:"formula"` + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Queries []ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery `pulumi:"queries"` +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs and ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs{...} +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs struct { + // A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + Formula ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaInput `pulumi:"formula"` + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Queries ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayInput `pulumi:"queries"` +} + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQuery)(nil)).Elem() +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput).ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(ctx) +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs, ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtr and ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs{...} +// +// or: +// +// nil +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput +} + +type serviceLevelObjectiveSliSpecificationTimeSliceQueryPtrType ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs + +func ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtr(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs) ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrInput { + return (*serviceLevelObjectiveSliSpecificationTimeSliceQueryPtrType)(v) +} + +func (*serviceLevelObjectiveSliSpecificationTimeSliceQueryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSliceQuery)(nil)).Elem() +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSliceQueryPtrType) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(context.Background()) +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSliceQueryPtrType) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQuery)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return o.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(context.Background()) +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceLevelObjectiveSliSpecificationTimeSliceQuery) *ServiceLevelObjectiveSliSpecificationTimeSliceQuery { + return &v + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) +} + +// A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) Formula() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSliceQuery) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula { + return v.Formula + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) +} + +// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) Queries() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSliceQuery) []ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery { + return v.Queries + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSliceQuery)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) Elem() ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQuery) ServiceLevelObjectiveSliSpecificationTimeSliceQuery { + if v != nil { + return *v + } + var ret ServiceLevelObjectiveSliSpecificationTimeSliceQuery + return ret + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput) +} + +// A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) Formula() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQuery) *ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula { + if v == nil { + return nil + } + return &v.Formula + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) +} + +// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput) Queries() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQuery) []ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery { + if v == nil { + return nil + } + return v.Queries + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula struct { + // The formula string, which is an expression involving named queries. + FormulaExpression string `pulumi:"formulaExpression"` +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs and ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs{...} +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs struct { + // The formula string, which is an expression involving named queries. + FormulaExpression pulumi.StringInput `pulumi:"formulaExpression"` +} + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula)(nil)).Elem() +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput).ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(ctx) +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs, ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtr and ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs{...} +// +// or: +// +// nil +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput +} + +type serviceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrType ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs + +func ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtr(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrInput { + return (*serviceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrType)(v) +} + +func (*serviceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula)(nil)).Elem() +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrType) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(context.Background()) +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrType) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return o.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(context.Background()) +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula) *ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula { + return &v + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) +} + +// The formula string, which is an expression involving named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) FormulaExpression() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula) string { return v.FormulaExpression }).(pulumi.StringOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) Elem() ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula) ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula { + if v != nil { + return *v + } + var ret ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula + return ret + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput) +} + +// The formula string, which is an expression involving named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput) FormulaExpression() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula) *string { + if v == nil { + return nil + } + return &v.FormulaExpression + }).(pulumi.StringPtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery struct { + // A timeseries formula and functions metrics query. + MetricQuery *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery `pulumi:"metricQuery"` +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs and ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs{...} +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs struct { + // A timeseries formula and functions metrics query. + MetricQuery ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrInput `pulumi:"metricQuery"` +} + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery)(nil)).Elem() +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput) +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArray and ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArray{ ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs{...} } +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArray []ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryInput + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery)(nil)).Elem() +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArray) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArray) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput { + return o +} + +// A timeseries formula and functions metrics query. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput) MetricQuery() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery) *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery { + return v.MetricQuery + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput) Index(i pulumi.IntInput) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery { + return vs[0].([]ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery)[vs[1].(int)] + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery struct { + // The data source for metrics queries. Defaults to `"metrics"`. + DataSource *string `pulumi:"dataSource"` + // The name of the query for use in formulas. + Name string `pulumi:"name"` + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Query string `pulumi:"query"` +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs and ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs{...} +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs struct { + // The data source for metrics queries. Defaults to `"metrics"`. + DataSource pulumi.StringPtrInput `pulumi:"dataSource"` + // The name of the query for use in formulas. + Name pulumi.StringInput `pulumi:"name"` + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Query pulumi.StringInput `pulumi:"query"` +} + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery)(nil)).Elem() +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(context.Background()) +} + +func (i ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput).ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(ctx) +} + +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrInput is an input type that accepts ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs, ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtr and ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput values. +// You can construct a concrete instance of `ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrInput` via: +// +// ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs{...} +// +// or: +// +// nil +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrInput interface { + pulumi.Input + + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput + ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput +} + +type serviceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrType ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs + +func ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtr(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrInput { + return (*serviceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrType)(v) +} + +func (*serviceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery)(nil)).Elem() +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrType) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { + return i.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(context.Background()) +} + +func (i *serviceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrType) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) +} + +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery)(nil)).Elem() +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput { + return o +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { + return o.ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(context.Background()) +} + +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery { + return &v + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) +} + +// The data source for metrics queries. Defaults to `"metrics"`. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) DataSource() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) *string { + return v.DataSource + }).(pulumi.StringPtrOutput) } -// The sum of all the `good` events. -func (o ServiceLevelObjectiveQueryOutput) Numerator() pulumi.StringOutput { - return o.ApplyT(func(v ServiceLevelObjectiveQuery) string { return v.Numerator }).(pulumi.StringOutput) +// The name of the query for use in formulas. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) string { return v.Name }).(pulumi.StringOutput) } -type ServiceLevelObjectiveQueryPtrOutput struct{ *pulumi.OutputState } +// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) Query() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) string { return v.Query }).(pulumi.StringOutput) +} -func (ServiceLevelObjectiveQueryPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ServiceLevelObjectiveQuery)(nil)).Elem() +type ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput struct{ *pulumi.OutputState } + +func (ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery)(nil)).Elem() } -func (o ServiceLevelObjectiveQueryPtrOutput) ToServiceLevelObjectiveQueryPtrOutput() ServiceLevelObjectiveQueryPtrOutput { +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { return o } -func (o ServiceLevelObjectiveQueryPtrOutput) ToServiceLevelObjectiveQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveQueryPtrOutput { +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) ToServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutputWithContext(ctx context.Context) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput { return o } -func (o ServiceLevelObjectiveQueryPtrOutput) Elem() ServiceLevelObjectiveQueryOutput { - return o.ApplyT(func(v *ServiceLevelObjectiveQuery) ServiceLevelObjectiveQuery { +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) Elem() ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery { if v != nil { return *v } - var ret ServiceLevelObjectiveQuery + var ret ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery return ret - }).(ServiceLevelObjectiveQueryOutput) + }).(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput) } -// The sum of the `total` events. -func (o ServiceLevelObjectiveQueryPtrOutput) Denominator() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ServiceLevelObjectiveQuery) *string { +// The data source for metrics queries. Defaults to `"metrics"`. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) DataSource() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) *string { if v == nil { return nil } - return &v.Denominator + return v.DataSource }).(pulumi.StringPtrOutput) } -// The sum of all the `good` events. -func (o ServiceLevelObjectiveQueryPtrOutput) Numerator() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ServiceLevelObjectiveQuery) *string { +// The name of the query for use in formulas. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) *string { if v == nil { return nil } - return &v.Numerator + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. +func (o ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput) Query() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery) *string { + if v == nil { + return nil + } + return &v.Query }).(pulumi.StringPtrOutput) } @@ -22935,6 +24602,10 @@ func (o GetHostsHostListMetricsOutput) Load() pulumi.Float64Output { type GetLogsIndexesLogsIndex struct { // The number of log events you can send in this index per day before you are rate-limited. DailyLimit int `pulumi:"dailyLimit"` + // Object containing options to override the default daily limit reset time. + DailyLimitResets []GetLogsIndexesLogsIndexDailyLimitReset `pulumi:"dailyLimitResets"` + // The percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage float64 `pulumi:"dailyLimitWarningThresholdPercentage"` // List of exclusion filters. ExclusionFilters []GetLogsIndexesLogsIndexExclusionFilter `pulumi:"exclusionFilters"` // Logs filter @@ -22959,6 +24630,10 @@ type GetLogsIndexesLogsIndexInput interface { type GetLogsIndexesLogsIndexArgs struct { // The number of log events you can send in this index per day before you are rate-limited. DailyLimit pulumi.IntInput `pulumi:"dailyLimit"` + // Object containing options to override the default daily limit reset time. + DailyLimitResets GetLogsIndexesLogsIndexDailyLimitResetArrayInput `pulumi:"dailyLimitResets"` + // The percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage pulumi.Float64Input `pulumi:"dailyLimitWarningThresholdPercentage"` // List of exclusion filters. ExclusionFilters GetLogsIndexesLogsIndexExclusionFilterArrayInput `pulumi:"exclusionFilters"` // Logs filter @@ -23025,6 +24700,16 @@ func (o GetLogsIndexesLogsIndexOutput) DailyLimit() pulumi.IntOutput { return o.ApplyT(func(v GetLogsIndexesLogsIndex) int { return v.DailyLimit }).(pulumi.IntOutput) } +// Object containing options to override the default daily limit reset time. +func (o GetLogsIndexesLogsIndexOutput) DailyLimitResets() GetLogsIndexesLogsIndexDailyLimitResetArrayOutput { + return o.ApplyT(func(v GetLogsIndexesLogsIndex) []GetLogsIndexesLogsIndexDailyLimitReset { return v.DailyLimitResets }).(GetLogsIndexesLogsIndexDailyLimitResetArrayOutput) +} + +// The percentage threshold of the daily quota at which a Datadog warning event is generated. +func (o GetLogsIndexesLogsIndexOutput) DailyLimitWarningThresholdPercentage() pulumi.Float64Output { + return o.ApplyT(func(v GetLogsIndexesLogsIndex) float64 { return v.DailyLimitWarningThresholdPercentage }).(pulumi.Float64Output) +} + // List of exclusion filters. func (o GetLogsIndexesLogsIndexOutput) ExclusionFilters() GetLogsIndexesLogsIndexExclusionFilterArrayOutput { return o.ApplyT(func(v GetLogsIndexesLogsIndex) []GetLogsIndexesLogsIndexExclusionFilter { return v.ExclusionFilters }).(GetLogsIndexesLogsIndexExclusionFilterArrayOutput) @@ -23065,6 +24750,112 @@ func (o GetLogsIndexesLogsIndexArrayOutput) Index(i pulumi.IntInput) GetLogsInde }).(GetLogsIndexesLogsIndexOutput) } +type GetLogsIndexesLogsIndexDailyLimitReset struct { + // String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + ResetTime string `pulumi:"resetTime"` + // String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + ResetUtcOffset string `pulumi:"resetUtcOffset"` +} + +// GetLogsIndexesLogsIndexDailyLimitResetInput is an input type that accepts GetLogsIndexesLogsIndexDailyLimitResetArgs and GetLogsIndexesLogsIndexDailyLimitResetOutput values. +// You can construct a concrete instance of `GetLogsIndexesLogsIndexDailyLimitResetInput` via: +// +// GetLogsIndexesLogsIndexDailyLimitResetArgs{...} +type GetLogsIndexesLogsIndexDailyLimitResetInput interface { + pulumi.Input + + ToGetLogsIndexesLogsIndexDailyLimitResetOutput() GetLogsIndexesLogsIndexDailyLimitResetOutput + ToGetLogsIndexesLogsIndexDailyLimitResetOutputWithContext(context.Context) GetLogsIndexesLogsIndexDailyLimitResetOutput +} + +type GetLogsIndexesLogsIndexDailyLimitResetArgs struct { + // String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + ResetTime pulumi.StringInput `pulumi:"resetTime"` + // String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + ResetUtcOffset pulumi.StringInput `pulumi:"resetUtcOffset"` +} + +func (GetLogsIndexesLogsIndexDailyLimitResetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogsIndexesLogsIndexDailyLimitReset)(nil)).Elem() +} + +func (i GetLogsIndexesLogsIndexDailyLimitResetArgs) ToGetLogsIndexesLogsIndexDailyLimitResetOutput() GetLogsIndexesLogsIndexDailyLimitResetOutput { + return i.ToGetLogsIndexesLogsIndexDailyLimitResetOutputWithContext(context.Background()) +} + +func (i GetLogsIndexesLogsIndexDailyLimitResetArgs) ToGetLogsIndexesLogsIndexDailyLimitResetOutputWithContext(ctx context.Context) GetLogsIndexesLogsIndexDailyLimitResetOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogsIndexesLogsIndexDailyLimitResetOutput) +} + +// GetLogsIndexesLogsIndexDailyLimitResetArrayInput is an input type that accepts GetLogsIndexesLogsIndexDailyLimitResetArray and GetLogsIndexesLogsIndexDailyLimitResetArrayOutput values. +// You can construct a concrete instance of `GetLogsIndexesLogsIndexDailyLimitResetArrayInput` via: +// +// GetLogsIndexesLogsIndexDailyLimitResetArray{ GetLogsIndexesLogsIndexDailyLimitResetArgs{...} } +type GetLogsIndexesLogsIndexDailyLimitResetArrayInput interface { + pulumi.Input + + ToGetLogsIndexesLogsIndexDailyLimitResetArrayOutput() GetLogsIndexesLogsIndexDailyLimitResetArrayOutput + ToGetLogsIndexesLogsIndexDailyLimitResetArrayOutputWithContext(context.Context) GetLogsIndexesLogsIndexDailyLimitResetArrayOutput +} + +type GetLogsIndexesLogsIndexDailyLimitResetArray []GetLogsIndexesLogsIndexDailyLimitResetInput + +func (GetLogsIndexesLogsIndexDailyLimitResetArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLogsIndexesLogsIndexDailyLimitReset)(nil)).Elem() +} + +func (i GetLogsIndexesLogsIndexDailyLimitResetArray) ToGetLogsIndexesLogsIndexDailyLimitResetArrayOutput() GetLogsIndexesLogsIndexDailyLimitResetArrayOutput { + return i.ToGetLogsIndexesLogsIndexDailyLimitResetArrayOutputWithContext(context.Background()) +} + +func (i GetLogsIndexesLogsIndexDailyLimitResetArray) ToGetLogsIndexesLogsIndexDailyLimitResetArrayOutputWithContext(ctx context.Context) GetLogsIndexesLogsIndexDailyLimitResetArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogsIndexesLogsIndexDailyLimitResetArrayOutput) +} + +type GetLogsIndexesLogsIndexDailyLimitResetOutput struct{ *pulumi.OutputState } + +func (GetLogsIndexesLogsIndexDailyLimitResetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogsIndexesLogsIndexDailyLimitReset)(nil)).Elem() +} + +func (o GetLogsIndexesLogsIndexDailyLimitResetOutput) ToGetLogsIndexesLogsIndexDailyLimitResetOutput() GetLogsIndexesLogsIndexDailyLimitResetOutput { + return o +} + +func (o GetLogsIndexesLogsIndexDailyLimitResetOutput) ToGetLogsIndexesLogsIndexDailyLimitResetOutputWithContext(ctx context.Context) GetLogsIndexesLogsIndexDailyLimitResetOutput { + return o +} + +// String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). +func (o GetLogsIndexesLogsIndexDailyLimitResetOutput) ResetTime() pulumi.StringOutput { + return o.ApplyT(func(v GetLogsIndexesLogsIndexDailyLimitReset) string { return v.ResetTime }).(pulumi.StringOutput) +} + +// String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). +func (o GetLogsIndexesLogsIndexDailyLimitResetOutput) ResetUtcOffset() pulumi.StringOutput { + return o.ApplyT(func(v GetLogsIndexesLogsIndexDailyLimitReset) string { return v.ResetUtcOffset }).(pulumi.StringOutput) +} + +type GetLogsIndexesLogsIndexDailyLimitResetArrayOutput struct{ *pulumi.OutputState } + +func (GetLogsIndexesLogsIndexDailyLimitResetArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLogsIndexesLogsIndexDailyLimitReset)(nil)).Elem() +} + +func (o GetLogsIndexesLogsIndexDailyLimitResetArrayOutput) ToGetLogsIndexesLogsIndexDailyLimitResetArrayOutput() GetLogsIndexesLogsIndexDailyLimitResetArrayOutput { + return o +} + +func (o GetLogsIndexesLogsIndexDailyLimitResetArrayOutput) ToGetLogsIndexesLogsIndexDailyLimitResetArrayOutputWithContext(ctx context.Context) GetLogsIndexesLogsIndexDailyLimitResetArrayOutput { + return o +} + +func (o GetLogsIndexesLogsIndexDailyLimitResetArrayOutput) Index(i pulumi.IntInput) GetLogsIndexesLogsIndexDailyLimitResetOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetLogsIndexesLogsIndexDailyLimitReset { + return vs[0].([]GetLogsIndexesLogsIndexDailyLimitReset)[vs[1].(int)] + }).(GetLogsIndexesLogsIndexDailyLimitResetOutput) +} + type GetLogsIndexesLogsIndexExclusionFilter struct { Filters []GetLogsIndexesLogsIndexExclusionFilterFilter `pulumi:"filters"` // A boolean stating if the exclusion is active or not. @@ -24972,6 +26763,8 @@ type GetSecurityMonitoringRulesRule struct { SignalQueries []GetSecurityMonitoringRulesRuleSignalQuery `pulumi:"signalQueries"` // Tags for generated signals. Tags []string `pulumi:"tags"` + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCases []GetSecurityMonitoringRulesRuleThirdPartyCase `pulumi:"thirdPartyCases"` // The rule type. Type *string `pulumi:"type"` } @@ -25008,6 +26801,8 @@ type GetSecurityMonitoringRulesRuleArgs struct { SignalQueries GetSecurityMonitoringRulesRuleSignalQueryArrayInput `pulumi:"signalQueries"` // Tags for generated signals. Tags pulumi.StringArrayInput `pulumi:"tags"` + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCases GetSecurityMonitoringRulesRuleThirdPartyCaseArrayInput `pulumi:"thirdPartyCases"` // The rule type. Type pulumi.StringPtrInput `pulumi:"type"` } @@ -25115,6 +26910,13 @@ func (o GetSecurityMonitoringRulesRuleOutput) Tags() pulumi.StringArrayOutput { return o.ApplyT(func(v GetSecurityMonitoringRulesRule) []string { return v.Tags }).(pulumi.StringArrayOutput) } +// Cases for generating signals for third-party rules. Only required and accepted for third-party rules +func (o GetSecurityMonitoringRulesRuleOutput) ThirdPartyCases() GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRule) []GetSecurityMonitoringRulesRuleThirdPartyCase { + return v.ThirdPartyCases + }).(GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput) +} + // The rule type. func (o GetSecurityMonitoringRulesRuleOutput) Type() pulumi.StringPtrOutput { return o.ApplyT(func(v GetSecurityMonitoringRulesRule) *string { return v.Type }).(pulumi.StringPtrOutput) @@ -25380,11 +27182,13 @@ type GetSecurityMonitoringRulesRuleOptions struct { // Options for rules using the impossible travel detection method. ImpossibleTravelOptions *GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions `pulumi:"impossibleTravelOptions"` // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). - KeepAlive int `pulumi:"keepAlive"` + KeepAlive *int `pulumi:"keepAlive"` // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. - MaxSignalDuration int `pulumi:"maxSignalDuration"` + MaxSignalDuration *int `pulumi:"maxSignalDuration"` // New value rules specific options. NewValueOptions *GetSecurityMonitoringRulesRuleOptionsNewValueOptions `pulumi:"newValueOptions"` + // Options for rules using the third-party detection method. + ThirdPartyRuleOptions *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions `pulumi:"thirdPartyRuleOptions"` } // GetSecurityMonitoringRulesRuleOptionsInput is an input type that accepts GetSecurityMonitoringRulesRuleOptionsArgs and GetSecurityMonitoringRulesRuleOptionsOutput values. @@ -25408,11 +27212,13 @@ type GetSecurityMonitoringRulesRuleOptionsArgs struct { // Options for rules using the impossible travel detection method. ImpossibleTravelOptions GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsPtrInput `pulumi:"impossibleTravelOptions"` // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). - KeepAlive pulumi.IntInput `pulumi:"keepAlive"` + KeepAlive pulumi.IntPtrInput `pulumi:"keepAlive"` // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. - MaxSignalDuration pulumi.IntInput `pulumi:"maxSignalDuration"` + MaxSignalDuration pulumi.IntPtrInput `pulumi:"maxSignalDuration"` // New value rules specific options. NewValueOptions GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrInput `pulumi:"newValueOptions"` + // Options for rules using the third-party detection method. + ThirdPartyRuleOptions GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrInput `pulumi:"thirdPartyRuleOptions"` } func (GetSecurityMonitoringRulesRuleOptionsArgs) ElementType() reflect.Type { @@ -25515,13 +27321,13 @@ func (o GetSecurityMonitoringRulesRuleOptionsOutput) ImpossibleTravelOptions() G } // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). -func (o GetSecurityMonitoringRulesRuleOptionsOutput) KeepAlive() pulumi.IntOutput { - return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptions) int { return v.KeepAlive }).(pulumi.IntOutput) +func (o GetSecurityMonitoringRulesRuleOptionsOutput) KeepAlive() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptions) *int { return v.KeepAlive }).(pulumi.IntPtrOutput) } // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. -func (o GetSecurityMonitoringRulesRuleOptionsOutput) MaxSignalDuration() pulumi.IntOutput { - return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptions) int { return v.MaxSignalDuration }).(pulumi.IntOutput) +func (o GetSecurityMonitoringRulesRuleOptionsOutput) MaxSignalDuration() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptions) *int { return v.MaxSignalDuration }).(pulumi.IntPtrOutput) } // New value rules specific options. @@ -25531,6 +27337,13 @@ func (o GetSecurityMonitoringRulesRuleOptionsOutput) NewValueOptions() GetSecuri }).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) } +// Options for rules using the third-party detection method. +func (o GetSecurityMonitoringRulesRuleOptionsOutput) ThirdPartyRuleOptions() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptions) *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions { + return v.ThirdPartyRuleOptions + }).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) +} + type GetSecurityMonitoringRulesRuleOptionsPtrOutput struct{ *pulumi.OutputState } func (GetSecurityMonitoringRulesRuleOptionsPtrOutput) ElementType() reflect.Type { @@ -25601,7 +27414,7 @@ func (o GetSecurityMonitoringRulesRuleOptionsPtrOutput) KeepAlive() pulumi.IntPt if v == nil { return nil } - return &v.KeepAlive + return v.KeepAlive }).(pulumi.IntPtrOutput) } @@ -25611,7 +27424,7 @@ func (o GetSecurityMonitoringRulesRuleOptionsPtrOutput) MaxSignalDuration() pulu if v == nil { return nil } - return &v.MaxSignalDuration + return v.MaxSignalDuration }).(pulumi.IntPtrOutput) } @@ -25625,6 +27438,16 @@ func (o GetSecurityMonitoringRulesRuleOptionsPtrOutput) NewValueOptions() GetSec }).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) } +// Options for rules using the third-party detection method. +func (o GetSecurityMonitoringRulesRuleOptionsPtrOutput) ThirdPartyRuleOptions() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptions) *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions { + if v == nil { + return nil + } + return v.ThirdPartyRuleOptions + }).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) +} + type GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions struct { // If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. BaselineUserLocations *bool `pulumi:"baselineUserLocations"` @@ -25828,134 +27651,442 @@ func (i GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs) ToGetSecurityM type GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrInput interface { pulumi.Input - ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput - ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput + ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput + ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput +} + +type getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs + +func GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtr(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrInput { + return (*getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType)(v) +} + +func (*getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetSecurityMonitoringRulesRuleOptionsNewValueOptions)(nil)).Elem() +} + +func (i *getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { + return i.ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(context.Background()) +} + +func (i *getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) +} + +type GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsNewValueOptions)(nil)).Elem() +} + +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { + return o.ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(context.Background()) +} + +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *GetSecurityMonitoringRulesRuleOptionsNewValueOptions { + return &v + }).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) +} + +// The duration in days after which a learned value is forgotten. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ForgetAfter() pulumi.IntOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) int { return v.ForgetAfter }).(pulumi.IntOutput) +} + +// The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) LearningDuration() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { return v.LearningDuration }).(pulumi.IntPtrOutput) +} + +// The learning method used to determine when signals should be generated for values that weren't learned. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) LearningMethod() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *string { return v.LearningMethod }).(pulumi.StringPtrOutput) +} + +// A number of occurrences after which signals are generated for values that weren't learned. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) LearningThreshold() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { return v.LearningThreshold }).(pulumi.IntPtrOutput) +} + +type GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetSecurityMonitoringRulesRuleOptionsNewValueOptions)(nil)).Elem() +} + +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) Elem() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) GetSecurityMonitoringRulesRuleOptionsNewValueOptions { + if v != nil { + return *v + } + var ret GetSecurityMonitoringRulesRuleOptionsNewValueOptions + return ret + }).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) +} + +// The duration in days after which a learned value is forgotten. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ForgetAfter() pulumi.IntPtrOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { + if v == nil { + return nil + } + return &v.ForgetAfter + }).(pulumi.IntPtrOutput) +} + +// The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) LearningDuration() pulumi.IntPtrOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { + if v == nil { + return nil + } + return v.LearningDuration + }).(pulumi.IntPtrOutput) +} + +// The learning method used to determine when signals should be generated for values that weren't learned. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) LearningMethod() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *string { + if v == nil { + return nil + } + return v.LearningMethod + }).(pulumi.StringPtrOutput) +} + +// A number of occurrences after which signals are generated for values that weren't learned. +func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) LearningThreshold() pulumi.IntPtrOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { + if v == nil { + return nil + } + return v.LearningThreshold + }).(pulumi.IntPtrOutput) +} + +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions struct { + // Notification targets for the default rule case, when none of the third-party cases match. + DefaultNotifications []string `pulumi:"defaultNotifications"` + // Severity of the default rule case, when none of the third-party cases match. + DefaultStatus string `pulumi:"defaultStatus"` + // Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + RootQueries []GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery `pulumi:"rootQueries"` + // A template for the signal title; if omitted, the title is generated based on the case name. + SignalTitleTemplate *string `pulumi:"signalTitleTemplate"` +} + +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsInput is an input type that accepts GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs and GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsInput` via: +// +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs{...} +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsInput interface { + pulumi.Input + + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput +} + +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs struct { + // Notification targets for the default rule case, when none of the third-party cases match. + DefaultNotifications pulumi.StringArrayInput `pulumi:"defaultNotifications"` + // Severity of the default rule case, when none of the third-party cases match. + DefaultStatus pulumi.StringInput `pulumi:"defaultStatus"` + // Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + RootQueries GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput `pulumi:"rootQueries"` + // A template for the signal title; if omitted, the title is generated based on the case name. + SignalTitleTemplate pulumi.StringPtrInput `pulumi:"signalTitleTemplate"` +} + +func (GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions)(nil)).Elem() +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput { + return i.ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return i.ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput).ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx) +} + +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrInput is an input type that accepts GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs, GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtr and GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrInput` via: +// +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs{...} +// +// or: +// +// nil +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrInput interface { + pulumi.Input + + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput } -type getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs +type getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrType GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs -func GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtr(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrInput { - return (*getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType)(v) +func GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtr(v *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrInput { + return (*getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrType)(v) } -func (*getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**GetSecurityMonitoringRulesRuleOptionsNewValueOptions)(nil)).Elem() +func (*getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions)(nil)).Elem() } -func (i *getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { - return i.ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(context.Background()) +func (i *getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrType) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return i.ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Background()) } -func (i *getSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrType) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) +func (i *getSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrType) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) } -type GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput struct{ *pulumi.OutputState } +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput struct{ *pulumi.OutputState } -func (GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ElementType() reflect.Type { - return reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsNewValueOptions)(nil)).Elem() +func (GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions)(nil)).Elem() } -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput { +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput { return o } -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput { +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput { return o } -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { - return o.ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(context.Background()) +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(context.Background()) } -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *GetSecurityMonitoringRulesRuleOptionsNewValueOptions { +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions { return &v - }).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) + }).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) } -// The duration in days after which a learned value is forgotten. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) ForgetAfter() pulumi.IntOutput { - return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) int { return v.ForgetAfter }).(pulumi.IntOutput) +// Notification targets for the default rule case, when none of the third-party cases match. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) DefaultNotifications() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) []string { + return v.DefaultNotifications + }).(pulumi.StringArrayOutput) } -// The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) LearningDuration() pulumi.IntPtrOutput { - return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { return v.LearningDuration }).(pulumi.IntPtrOutput) +// Severity of the default rule case, when none of the third-party cases match. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) DefaultStatus() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) string { return v.DefaultStatus }).(pulumi.StringOutput) } -// The learning method used to determine when signals should be generated for values that weren't learned. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) LearningMethod() pulumi.StringPtrOutput { - return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *string { return v.LearningMethod }).(pulumi.StringPtrOutput) +// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) RootQueries() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) []GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery { + return v.RootQueries + }).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) } -// A number of occurrences after which signals are generated for values that weren't learned. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) LearningThreshold() pulumi.IntPtrOutput { - return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { return v.LearningThreshold }).(pulumi.IntPtrOutput) +// A template for the signal title; if omitted, the title is generated based on the case name. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) SignalTitleTemplate() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) *string { + return v.SignalTitleTemplate + }).(pulumi.StringPtrOutput) } -type GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput struct{ *pulumi.OutputState } +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput struct{ *pulumi.OutputState } -func (GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**GetSecurityMonitoringRulesRuleOptionsNewValueOptions)(nil)).Elem() +func (GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions)(nil)).Elem() } -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { return o } -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ToGetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput { +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput { return o } -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) Elem() GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput { - return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) GetSecurityMonitoringRulesRuleOptionsNewValueOptions { +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) Elem() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions { if v != nil { return *v } - var ret GetSecurityMonitoringRulesRuleOptionsNewValueOptions + var ret GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions return ret - }).(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput) + }).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput) } -// The duration in days after which a learned value is forgotten. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) ForgetAfter() pulumi.IntPtrOutput { - return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { +// Notification targets for the default rule case, when none of the third-party cases match. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) DefaultNotifications() pulumi.StringArrayOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) []string { if v == nil { return nil } - return &v.ForgetAfter - }).(pulumi.IntPtrOutput) + return v.DefaultNotifications + }).(pulumi.StringArrayOutput) } -// The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) LearningDuration() pulumi.IntPtrOutput { - return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { +// Severity of the default rule case, when none of the third-party cases match. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) DefaultStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) *string { if v == nil { return nil } - return v.LearningDuration - }).(pulumi.IntPtrOutput) + return &v.DefaultStatus + }).(pulumi.StringPtrOutput) } -// The learning method used to determine when signals should be generated for values that weren't learned. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) LearningMethod() pulumi.StringPtrOutput { - return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *string { +// Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) RootQueries() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) []GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery { if v == nil { return nil } - return v.LearningMethod - }).(pulumi.StringPtrOutput) + return v.RootQueries + }).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) } -// A number of occurrences after which signals are generated for values that weren't learned. -func (o GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput) LearningThreshold() pulumi.IntPtrOutput { - return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsNewValueOptions) *int { +// A template for the signal title; if omitted, the title is generated based on the case name. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput) SignalTitleTemplate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions) *string { if v == nil { return nil } - return v.LearningThreshold - }).(pulumi.IntPtrOutput) + return v.SignalTitleTemplate + }).(pulumi.StringPtrOutput) +} + +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery struct { + // Fields to group by. If empty, each log triggers a signal. + GroupByFields []string `pulumi:"groupByFields"` + // Query to filter logs. + Query string `pulumi:"query"` +} + +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryInput is an input type that accepts GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs and GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryInput` via: +// +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs{...} +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryInput interface { + pulumi.Input + + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput +} + +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs struct { + // Fields to group by. If empty, each log triggers a signal. + GroupByFields pulumi.StringArrayInput `pulumi:"groupByFields"` + // Query to filter logs. + Query pulumi.StringInput `pulumi:"query"` +} + +func (GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return i.ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput) +} + +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput is an input type that accepts GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArray and GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput` via: +// +// GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArray{ GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs{...} } +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput interface { + pulumi.Input + + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput + ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput +} + +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArray []GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryInput + +func (GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArray) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return i.ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArray) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) +} + +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return o +} + +// Fields to group by. If empty, each log triggers a signal. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput) GroupByFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery) []string { + return v.GroupByFields + }).(pulumi.StringArrayOutput) +} + +// Query to filter logs. +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput) Query() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery) string { return v.Query }).(pulumi.StringOutput) +} + +type GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery)(nil)).Elem() +} + +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput() GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) ToGetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput) Index(i pulumi.IntInput) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery { + return vs[0].([]GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery)[vs[1].(int)] + }).(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput) } type GetSecurityMonitoringRulesRuleQuery struct { @@ -26380,6 +28511,260 @@ func (o GetSecurityMonitoringRulesRuleSignalQueryArrayOutput) Index(i pulumi.Int }).(GetSecurityMonitoringRulesRuleSignalQueryOutput) } +type GetSecurityMonitoringRulesRuleThirdPartyCase struct { + // Name of the case. + Name *string `pulumi:"name"` + // Notification targets for each rule case. + Notifications []string `pulumi:"notifications"` + // A query to associate a third-party event to this case. + Query *string `pulumi:"query"` + // Severity of the Security Signal. + Status string `pulumi:"status"` +} + +// GetSecurityMonitoringRulesRuleThirdPartyCaseInput is an input type that accepts GetSecurityMonitoringRulesRuleThirdPartyCaseArgs and GetSecurityMonitoringRulesRuleThirdPartyCaseOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringRulesRuleThirdPartyCaseInput` via: +// +// GetSecurityMonitoringRulesRuleThirdPartyCaseArgs{...} +type GetSecurityMonitoringRulesRuleThirdPartyCaseInput interface { + pulumi.Input + + ToGetSecurityMonitoringRulesRuleThirdPartyCaseOutput() GetSecurityMonitoringRulesRuleThirdPartyCaseOutput + ToGetSecurityMonitoringRulesRuleThirdPartyCaseOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleThirdPartyCaseOutput +} + +type GetSecurityMonitoringRulesRuleThirdPartyCaseArgs struct { + // Name of the case. + Name pulumi.StringPtrInput `pulumi:"name"` + // Notification targets for each rule case. + Notifications pulumi.StringArrayInput `pulumi:"notifications"` + // A query to associate a third-party event to this case. + Query pulumi.StringPtrInput `pulumi:"query"` + // Severity of the Security Signal. + Status pulumi.StringInput `pulumi:"status"` +} + +func (GetSecurityMonitoringRulesRuleThirdPartyCaseArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringRulesRuleThirdPartyCase)(nil)).Elem() +} + +func (i GetSecurityMonitoringRulesRuleThirdPartyCaseArgs) ToGetSecurityMonitoringRulesRuleThirdPartyCaseOutput() GetSecurityMonitoringRulesRuleThirdPartyCaseOutput { + return i.ToGetSecurityMonitoringRulesRuleThirdPartyCaseOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringRulesRuleThirdPartyCaseArgs) ToGetSecurityMonitoringRulesRuleThirdPartyCaseOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleThirdPartyCaseOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) +} + +// GetSecurityMonitoringRulesRuleThirdPartyCaseArrayInput is an input type that accepts GetSecurityMonitoringRulesRuleThirdPartyCaseArray and GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringRulesRuleThirdPartyCaseArrayInput` via: +// +// GetSecurityMonitoringRulesRuleThirdPartyCaseArray{ GetSecurityMonitoringRulesRuleThirdPartyCaseArgs{...} } +type GetSecurityMonitoringRulesRuleThirdPartyCaseArrayInput interface { + pulumi.Input + + ToGetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput() GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput + ToGetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutputWithContext(context.Context) GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput +} + +type GetSecurityMonitoringRulesRuleThirdPartyCaseArray []GetSecurityMonitoringRulesRuleThirdPartyCaseInput + +func (GetSecurityMonitoringRulesRuleThirdPartyCaseArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetSecurityMonitoringRulesRuleThirdPartyCase)(nil)).Elem() +} + +func (i GetSecurityMonitoringRulesRuleThirdPartyCaseArray) ToGetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput() GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput { + return i.ToGetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringRulesRuleThirdPartyCaseArray) ToGetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput) +} + +type GetSecurityMonitoringRulesRuleThirdPartyCaseOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringRulesRuleThirdPartyCase)(nil)).Elem() +} + +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) ToGetSecurityMonitoringRulesRuleThirdPartyCaseOutput() GetSecurityMonitoringRulesRuleThirdPartyCaseOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) ToGetSecurityMonitoringRulesRuleThirdPartyCaseOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleThirdPartyCaseOutput { + return o +} + +// Name of the case. +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleThirdPartyCase) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Notification targets for each rule case. +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) Notifications() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleThirdPartyCase) []string { return v.Notifications }).(pulumi.StringArrayOutput) +} + +// A query to associate a third-party event to this case. +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) Query() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleThirdPartyCase) *string { return v.Query }).(pulumi.StringPtrOutput) +} + +// Severity of the Security Signal. +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringRulesRuleThirdPartyCase) string { return v.Status }).(pulumi.StringOutput) +} + +type GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetSecurityMonitoringRulesRuleThirdPartyCase)(nil)).Elem() +} + +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput) ToGetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput() GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput) ToGetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutputWithContext(ctx context.Context) GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput { + return o +} + +func (o GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput) Index(i pulumi.IntInput) GetSecurityMonitoringRulesRuleThirdPartyCaseOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetSecurityMonitoringRulesRuleThirdPartyCase { + return vs[0].([]GetSecurityMonitoringRulesRuleThirdPartyCase)[vs[1].(int)] + }).(GetSecurityMonitoringRulesRuleThirdPartyCaseOutput) +} + +type GetSecurityMonitoringSuppressionsSuppression struct { + Description string `pulumi:"description"` + Enabled bool `pulumi:"enabled"` + ExpirationDate string `pulumi:"expirationDate"` + Id string `pulumi:"id"` + Name string `pulumi:"name"` + RuleQuery string `pulumi:"ruleQuery"` + SuppressionQuery string `pulumi:"suppressionQuery"` +} + +// GetSecurityMonitoringSuppressionsSuppressionInput is an input type that accepts GetSecurityMonitoringSuppressionsSuppressionArgs and GetSecurityMonitoringSuppressionsSuppressionOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringSuppressionsSuppressionInput` via: +// +// GetSecurityMonitoringSuppressionsSuppressionArgs{...} +type GetSecurityMonitoringSuppressionsSuppressionInput interface { + pulumi.Input + + ToGetSecurityMonitoringSuppressionsSuppressionOutput() GetSecurityMonitoringSuppressionsSuppressionOutput + ToGetSecurityMonitoringSuppressionsSuppressionOutputWithContext(context.Context) GetSecurityMonitoringSuppressionsSuppressionOutput +} + +type GetSecurityMonitoringSuppressionsSuppressionArgs struct { + Description pulumi.StringInput `pulumi:"description"` + Enabled pulumi.BoolInput `pulumi:"enabled"` + ExpirationDate pulumi.StringInput `pulumi:"expirationDate"` + Id pulumi.StringInput `pulumi:"id"` + Name pulumi.StringInput `pulumi:"name"` + RuleQuery pulumi.StringInput `pulumi:"ruleQuery"` + SuppressionQuery pulumi.StringInput `pulumi:"suppressionQuery"` +} + +func (GetSecurityMonitoringSuppressionsSuppressionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringSuppressionsSuppression)(nil)).Elem() +} + +func (i GetSecurityMonitoringSuppressionsSuppressionArgs) ToGetSecurityMonitoringSuppressionsSuppressionOutput() GetSecurityMonitoringSuppressionsSuppressionOutput { + return i.ToGetSecurityMonitoringSuppressionsSuppressionOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringSuppressionsSuppressionArgs) ToGetSecurityMonitoringSuppressionsSuppressionOutputWithContext(ctx context.Context) GetSecurityMonitoringSuppressionsSuppressionOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringSuppressionsSuppressionOutput) +} + +// GetSecurityMonitoringSuppressionsSuppressionArrayInput is an input type that accepts GetSecurityMonitoringSuppressionsSuppressionArray and GetSecurityMonitoringSuppressionsSuppressionArrayOutput values. +// You can construct a concrete instance of `GetSecurityMonitoringSuppressionsSuppressionArrayInput` via: +// +// GetSecurityMonitoringSuppressionsSuppressionArray{ GetSecurityMonitoringSuppressionsSuppressionArgs{...} } +type GetSecurityMonitoringSuppressionsSuppressionArrayInput interface { + pulumi.Input + + ToGetSecurityMonitoringSuppressionsSuppressionArrayOutput() GetSecurityMonitoringSuppressionsSuppressionArrayOutput + ToGetSecurityMonitoringSuppressionsSuppressionArrayOutputWithContext(context.Context) GetSecurityMonitoringSuppressionsSuppressionArrayOutput +} + +type GetSecurityMonitoringSuppressionsSuppressionArray []GetSecurityMonitoringSuppressionsSuppressionInput + +func (GetSecurityMonitoringSuppressionsSuppressionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetSecurityMonitoringSuppressionsSuppression)(nil)).Elem() +} + +func (i GetSecurityMonitoringSuppressionsSuppressionArray) ToGetSecurityMonitoringSuppressionsSuppressionArrayOutput() GetSecurityMonitoringSuppressionsSuppressionArrayOutput { + return i.ToGetSecurityMonitoringSuppressionsSuppressionArrayOutputWithContext(context.Background()) +} + +func (i GetSecurityMonitoringSuppressionsSuppressionArray) ToGetSecurityMonitoringSuppressionsSuppressionArrayOutputWithContext(ctx context.Context) GetSecurityMonitoringSuppressionsSuppressionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetSecurityMonitoringSuppressionsSuppressionArrayOutput) +} + +type GetSecurityMonitoringSuppressionsSuppressionOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringSuppressionsSuppressionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSecurityMonitoringSuppressionsSuppression)(nil)).Elem() +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) ToGetSecurityMonitoringSuppressionsSuppressionOutput() GetSecurityMonitoringSuppressionsSuppressionOutput { + return o +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) ToGetSecurityMonitoringSuppressionsSuppressionOutputWithContext(ctx context.Context) GetSecurityMonitoringSuppressionsSuppressionOutput { + return o +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsSuppression) string { return v.Description }).(pulumi.StringOutput) +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsSuppression) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) ExpirationDate() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsSuppression) string { return v.ExpirationDate }).(pulumi.StringOutput) +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsSuppression) string { return v.Id }).(pulumi.StringOutput) +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsSuppression) string { return v.Name }).(pulumi.StringOutput) +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) RuleQuery() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsSuppression) string { return v.RuleQuery }).(pulumi.StringOutput) +} + +func (o GetSecurityMonitoringSuppressionsSuppressionOutput) SuppressionQuery() pulumi.StringOutput { + return o.ApplyT(func(v GetSecurityMonitoringSuppressionsSuppression) string { return v.SuppressionQuery }).(pulumi.StringOutput) +} + +type GetSecurityMonitoringSuppressionsSuppressionArrayOutput struct{ *pulumi.OutputState } + +func (GetSecurityMonitoringSuppressionsSuppressionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetSecurityMonitoringSuppressionsSuppression)(nil)).Elem() +} + +func (o GetSecurityMonitoringSuppressionsSuppressionArrayOutput) ToGetSecurityMonitoringSuppressionsSuppressionArrayOutput() GetSecurityMonitoringSuppressionsSuppressionArrayOutput { + return o +} + +func (o GetSecurityMonitoringSuppressionsSuppressionArrayOutput) ToGetSecurityMonitoringSuppressionsSuppressionArrayOutputWithContext(ctx context.Context) GetSecurityMonitoringSuppressionsSuppressionArrayOutput { + return o +} + +func (o GetSecurityMonitoringSuppressionsSuppressionArrayOutput) Index(i pulumi.IntInput) GetSecurityMonitoringSuppressionsSuppressionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetSecurityMonitoringSuppressionsSuppression { + return vs[0].([]GetSecurityMonitoringSuppressionsSuppression)[vs[1].(int)] + }).(GetSecurityMonitoringSuppressionsSuppressionOutput) +} + type GetServiceLevelObjectiveQuery struct { // The sum of the `total` events. Denominator string `pulumi:"denominator"` @@ -26820,6 +29205,8 @@ func (o GetUsersUserArrayOutput) Index(i pulumi.IntInput) GetUsersUserOutput { } func init() { + pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryMultiComputeInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryMultiComputeArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestApmQueryMultiComputeArrayInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestApmQueryMultiComputeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*PowerpackWidgetToplistDefinitionRequestAuditQueryInput)(nil)).Elem(), PowerpackWidgetToplistDefinitionRequestAuditQueryArgs{}) @@ -26970,18 +29357,38 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleOptionsImpossibleTravelOptionsPtrInput)(nil)).Elem(), SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleOptionsNewValueOptionsInput)(nil)).Elem(), SecurityMonitoringRuleOptionsNewValueOptionsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleOptionsNewValueOptionsPtrInput)(nil)).Elem(), SecurityMonitoringRuleOptionsNewValueOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptionsInput)(nil)).Elem(), SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrInput)(nil)).Elem(), SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryInput)(nil)).Elem(), SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput)(nil)).Elem(), SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleQueryInput)(nil)).Elem(), SecurityMonitoringRuleQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleQueryArrayInput)(nil)).Elem(), SecurityMonitoringRuleQueryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleQueryAgentRuleInput)(nil)).Elem(), SecurityMonitoringRuleQueryAgentRuleArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleQueryAgentRuleArrayInput)(nil)).Elem(), SecurityMonitoringRuleQueryAgentRuleArray{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleSignalQueryInput)(nil)).Elem(), SecurityMonitoringRuleSignalQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleSignalQueryArrayInput)(nil)).Elem(), SecurityMonitoringRuleSignalQueryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleThirdPartyCaseInput)(nil)).Elem(), SecurityMonitoringRuleThirdPartyCaseArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringRuleThirdPartyCaseArrayInput)(nil)).Elem(), SecurityMonitoringRuleThirdPartyCaseArray{}) pulumi.RegisterInputType(reflect.TypeOf((*SensitiveDataScannerGroupFilterInput)(nil)).Elem(), SensitiveDataScannerGroupFilterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SensitiveDataScannerGroupFilterPtrInput)(nil)).Elem(), SensitiveDataScannerGroupFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SensitiveDataScannerRuleIncludedKeywordConfigurationInput)(nil)).Elem(), SensitiveDataScannerRuleIncludedKeywordConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SensitiveDataScannerRuleIncludedKeywordConfigurationPtrInput)(nil)).Elem(), SensitiveDataScannerRuleIncludedKeywordConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SensitiveDataScannerRuleTextReplacementInput)(nil)).Elem(), SensitiveDataScannerRuleTextReplacementArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*SensitiveDataScannerRuleTextReplacementPtrInput)(nil)).Elem(), SensitiveDataScannerRuleTextReplacementArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveQueryInput)(nil)).Elem(), ServiceLevelObjectiveQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveQueryPtrInput)(nil)).Elem(), ServiceLevelObjectiveQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationPtrInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSlicePtrInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrInput)(nil)).Elem(), ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveThresholdInput)(nil)).Elem(), ServiceLevelObjectiveThresholdArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ServiceLevelObjectiveThresholdArrayInput)(nil)).Elem(), ServiceLevelObjectiveThresholdArray{}) pulumi.RegisterInputType(reflect.TypeOf((*SpansMetricComputeInput)(nil)).Elem(), SpansMetricComputeArgs{}) @@ -27078,6 +29485,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetHostsHostListMetricsInput)(nil)).Elem(), GetHostsHostListMetricsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetLogsIndexesLogsIndexInput)(nil)).Elem(), GetLogsIndexesLogsIndexArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetLogsIndexesLogsIndexArrayInput)(nil)).Elem(), GetLogsIndexesLogsIndexArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogsIndexesLogsIndexDailyLimitResetInput)(nil)).Elem(), GetLogsIndexesLogsIndexDailyLimitResetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogsIndexesLogsIndexDailyLimitResetArrayInput)(nil)).Elem(), GetLogsIndexesLogsIndexDailyLimitResetArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetLogsIndexesLogsIndexExclusionFilterInput)(nil)).Elem(), GetLogsIndexesLogsIndexExclusionFilterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetLogsIndexesLogsIndexExclusionFilterArrayInput)(nil)).Elem(), GetLogsIndexesLogsIndexExclusionFilterArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetLogsIndexesLogsIndexExclusionFilterFilterInput)(nil)).Elem(), GetLogsIndexesLogsIndexExclusionFilterFilterArgs{}) @@ -27123,12 +29532,20 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsPtrInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsNewValueOptionsInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleQueryInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleQueryArrayInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleQueryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleQueryAgentRuleInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleQueryAgentRuleArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleQueryAgentRuleArrayInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleQueryAgentRuleArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleSignalQueryInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleSignalQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleSignalQueryArrayInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleSignalQueryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleThirdPartyCaseInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleThirdPartyCaseArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringRulesRuleThirdPartyCaseArrayInput)(nil)).Elem(), GetSecurityMonitoringRulesRuleThirdPartyCaseArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringSuppressionsSuppressionInput)(nil)).Elem(), GetSecurityMonitoringSuppressionsSuppressionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetSecurityMonitoringSuppressionsSuppressionArrayInput)(nil)).Elem(), GetSecurityMonitoringSuppressionsSuppressionArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetServiceLevelObjectiveQueryInput)(nil)).Elem(), GetServiceLevelObjectiveQueryArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetServiceLevelObjectiveQueryArrayInput)(nil)).Elem(), GetServiceLevelObjectiveQueryArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetServiceLevelObjectivesSloInput)(nil)).Elem(), GetServiceLevelObjectivesSloArgs{}) @@ -27137,6 +29554,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetTeamMembershipsTeamMembershipArrayInput)(nil)).Elem(), GetTeamMembershipsTeamMembershipArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetUsersUserInput)(nil)).Elem(), GetUsersUserArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetUsersUserArrayInput)(nil)).Elem(), GetUsersUserArray{}) + pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryOutput{}) + pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryGroupBySortQueryPtrOutput{}) pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryMultiComputeOutput{}) pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestApmQueryMultiComputeArrayOutput{}) pulumi.RegisterOutputType(PowerpackWidgetToplistDefinitionRequestAuditQueryOutput{}) @@ -27287,18 +29706,38 @@ func init() { pulumi.RegisterOutputType(SecurityMonitoringRuleOptionsImpossibleTravelOptionsPtrOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleOptionsNewValueOptionsOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleOptionsNewValueOptionsPtrOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsPtrOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleQueryOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleQueryArrayOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleQueryAgentRuleOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleQueryAgentRuleArrayOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleSignalQueryOutput{}) pulumi.RegisterOutputType(SecurityMonitoringRuleSignalQueryArrayOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringRuleThirdPartyCaseOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringRuleThirdPartyCaseArrayOutput{}) pulumi.RegisterOutputType(SensitiveDataScannerGroupFilterOutput{}) pulumi.RegisterOutputType(SensitiveDataScannerGroupFilterPtrOutput{}) + pulumi.RegisterOutputType(SensitiveDataScannerRuleIncludedKeywordConfigurationOutput{}) + pulumi.RegisterOutputType(SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput{}) pulumi.RegisterOutputType(SensitiveDataScannerRuleTextReplacementOutput{}) pulumi.RegisterOutputType(SensitiveDataScannerRuleTextReplacementPtrOutput{}) pulumi.RegisterOutputType(ServiceLevelObjectiveQueryOutput{}) pulumi.RegisterOutputType(ServiceLevelObjectiveQueryPtrOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationPtrOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSlicePtrOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryPtrOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaPtrOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArrayOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryOutput{}) + pulumi.RegisterOutputType(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryPtrOutput{}) pulumi.RegisterOutputType(ServiceLevelObjectiveThresholdOutput{}) pulumi.RegisterOutputType(ServiceLevelObjectiveThresholdArrayOutput{}) pulumi.RegisterOutputType(SpansMetricComputeOutput{}) @@ -27395,6 +29834,8 @@ func init() { pulumi.RegisterOutputType(GetHostsHostListMetricsOutput{}) pulumi.RegisterOutputType(GetLogsIndexesLogsIndexOutput{}) pulumi.RegisterOutputType(GetLogsIndexesLogsIndexArrayOutput{}) + pulumi.RegisterOutputType(GetLogsIndexesLogsIndexDailyLimitResetOutput{}) + pulumi.RegisterOutputType(GetLogsIndexesLogsIndexDailyLimitResetArrayOutput{}) pulumi.RegisterOutputType(GetLogsIndexesLogsIndexExclusionFilterOutput{}) pulumi.RegisterOutputType(GetLogsIndexesLogsIndexExclusionFilterArrayOutput{}) pulumi.RegisterOutputType(GetLogsIndexesLogsIndexExclusionFilterFilterOutput{}) @@ -27440,12 +29881,20 @@ func init() { pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsPtrOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleOptionsNewValueOptionsPtrOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsPtrOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArrayOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleQueryOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleQueryArrayOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleQueryAgentRuleOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleQueryAgentRuleArrayOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleSignalQueryOutput{}) pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleSignalQueryArrayOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleThirdPartyCaseOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringRulesRuleThirdPartyCaseArrayOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringSuppressionsSuppressionOutput{}) + pulumi.RegisterOutputType(GetSecurityMonitoringSuppressionsSuppressionArrayOutput{}) pulumi.RegisterOutputType(GetServiceLevelObjectiveQueryOutput{}) pulumi.RegisterOutputType(GetServiceLevelObjectiveQueryArrayOutput{}) pulumi.RegisterOutputType(GetServiceLevelObjectivesSloOutput{}) diff --git a/sdk/go/datadog/securityMonitoringRule.go b/sdk/go/datadog/securityMonitoringRule.go index 053ce404e..9d5bf3ba8 100644 --- a/sdk/go/datadog/securityMonitoringRule.go +++ b/sdk/go/datadog/securityMonitoringRule.go @@ -107,6 +107,8 @@ type SecurityMonitoringRule struct { SignalQueries SecurityMonitoringRuleSignalQueryArrayOutput `pulumi:"signalQueries"` // Tags for generated signals. Tags pulumi.StringArrayOutput `pulumi:"tags"` + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCases SecurityMonitoringRuleThirdPartyCaseArrayOutput `pulumi:"thirdPartyCases"` // The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. Type pulumi.StringPtrOutput `pulumi:"type"` } @@ -118,9 +120,6 @@ func NewSecurityMonitoringRule(ctx *pulumi.Context, return nil, errors.New("missing one or more required arguments") } - if args.Cases == nil { - return nil, errors.New("invalid value for required argument 'Cases'") - } if args.Message == nil { return nil, errors.New("invalid value for required argument 'Message'") } @@ -170,6 +169,8 @@ type securityMonitoringRuleState struct { SignalQueries []SecurityMonitoringRuleSignalQuery `pulumi:"signalQueries"` // Tags for generated signals. Tags []string `pulumi:"tags"` + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCases []SecurityMonitoringRuleThirdPartyCase `pulumi:"thirdPartyCases"` // The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. Type *string `pulumi:"type"` } @@ -195,6 +196,8 @@ type SecurityMonitoringRuleState struct { SignalQueries SecurityMonitoringRuleSignalQueryArrayInput // Tags for generated signals. Tags pulumi.StringArrayInput + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCases SecurityMonitoringRuleThirdPartyCaseArrayInput // The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. Type pulumi.StringPtrInput } @@ -224,6 +227,8 @@ type securityMonitoringRuleArgs struct { SignalQueries []SecurityMonitoringRuleSignalQuery `pulumi:"signalQueries"` // Tags for generated signals. Tags []string `pulumi:"tags"` + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCases []SecurityMonitoringRuleThirdPartyCase `pulumi:"thirdPartyCases"` // The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. Type *string `pulumi:"type"` } @@ -250,6 +255,8 @@ type SecurityMonitoringRuleArgs struct { SignalQueries SecurityMonitoringRuleSignalQueryArrayInput // Tags for generated signals. Tags pulumi.StringArrayInput + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCases SecurityMonitoringRuleThirdPartyCaseArrayInput // The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. Type pulumi.StringPtrInput } @@ -391,6 +398,13 @@ func (o SecurityMonitoringRuleOutput) Tags() pulumi.StringArrayOutput { return o.ApplyT(func(v *SecurityMonitoringRule) pulumi.StringArrayOutput { return v.Tags }).(pulumi.StringArrayOutput) } +// Cases for generating signals for third-party rules. Only required and accepted for third-party rules +func (o SecurityMonitoringRuleOutput) ThirdPartyCases() SecurityMonitoringRuleThirdPartyCaseArrayOutput { + return o.ApplyT(func(v *SecurityMonitoringRule) SecurityMonitoringRuleThirdPartyCaseArrayOutput { + return v.ThirdPartyCases + }).(SecurityMonitoringRuleThirdPartyCaseArrayOutput) +} + // The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. func (o SecurityMonitoringRuleOutput) Type() pulumi.StringPtrOutput { return o.ApplyT(func(v *SecurityMonitoringRule) pulumi.StringPtrOutput { return v.Type }).(pulumi.StringPtrOutput) diff --git a/sdk/go/datadog/securityMonitoringSuppression.go b/sdk/go/datadog/securityMonitoringSuppression.go new file mode 100644 index 000000000..cb7d37cbd --- /dev/null +++ b/sdk/go/datadog/securityMonitoringSuppression.go @@ -0,0 +1,303 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package datadog + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules. +type SecurityMonitoringSuppression struct { + pulumi.CustomResourceState + + // A description for the suppression rule. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Whether the suppression rule is enabled. + Enabled pulumi.BoolOutput `pulumi:"enabled"` + // A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + ExpirationDate pulumi.StringPtrOutput `pulumi:"expirationDate"` + // The name of the suppression rule. + Name pulumi.StringOutput `pulumi:"name"` + // The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + RuleQuery pulumi.StringOutput `pulumi:"ruleQuery"` + // The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + SuppressionQuery pulumi.StringOutput `pulumi:"suppressionQuery"` +} + +// NewSecurityMonitoringSuppression registers a new resource with the given unique name, arguments, and options. +func NewSecurityMonitoringSuppression(ctx *pulumi.Context, + name string, args *SecurityMonitoringSuppressionArgs, opts ...pulumi.ResourceOption) (*SecurityMonitoringSuppression, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Enabled == nil { + return nil, errors.New("invalid value for required argument 'Enabled'") + } + if args.Name == nil { + return nil, errors.New("invalid value for required argument 'Name'") + } + if args.RuleQuery == nil { + return nil, errors.New("invalid value for required argument 'RuleQuery'") + } + if args.SuppressionQuery == nil { + return nil, errors.New("invalid value for required argument 'SuppressionQuery'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SecurityMonitoringSuppression + err := ctx.RegisterResource("datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSecurityMonitoringSuppression gets an existing SecurityMonitoringSuppression resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetSecurityMonitoringSuppression(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SecurityMonitoringSuppressionState, opts ...pulumi.ResourceOption) (*SecurityMonitoringSuppression, error) { + var resource SecurityMonitoringSuppression + err := ctx.ReadResource("datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SecurityMonitoringSuppression resources. +type securityMonitoringSuppressionState struct { + // A description for the suppression rule. + Description *string `pulumi:"description"` + // Whether the suppression rule is enabled. + Enabled *bool `pulumi:"enabled"` + // A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + ExpirationDate *string `pulumi:"expirationDate"` + // The name of the suppression rule. + Name *string `pulumi:"name"` + // The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + RuleQuery *string `pulumi:"ruleQuery"` + // The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + SuppressionQuery *string `pulumi:"suppressionQuery"` +} + +type SecurityMonitoringSuppressionState struct { + // A description for the suppression rule. + Description pulumi.StringPtrInput + // Whether the suppression rule is enabled. + Enabled pulumi.BoolPtrInput + // A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + ExpirationDate pulumi.StringPtrInput + // The name of the suppression rule. + Name pulumi.StringPtrInput + // The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + RuleQuery pulumi.StringPtrInput + // The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + SuppressionQuery pulumi.StringPtrInput +} + +func (SecurityMonitoringSuppressionState) ElementType() reflect.Type { + return reflect.TypeOf((*securityMonitoringSuppressionState)(nil)).Elem() +} + +type securityMonitoringSuppressionArgs struct { + // A description for the suppression rule. + Description *string `pulumi:"description"` + // Whether the suppression rule is enabled. + Enabled bool `pulumi:"enabled"` + // A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + ExpirationDate *string `pulumi:"expirationDate"` + // The name of the suppression rule. + Name string `pulumi:"name"` + // The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + RuleQuery string `pulumi:"ruleQuery"` + // The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + SuppressionQuery string `pulumi:"suppressionQuery"` +} + +// The set of arguments for constructing a SecurityMonitoringSuppression resource. +type SecurityMonitoringSuppressionArgs struct { + // A description for the suppression rule. + Description pulumi.StringPtrInput + // Whether the suppression rule is enabled. + Enabled pulumi.BoolInput + // A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + ExpirationDate pulumi.StringPtrInput + // The name of the suppression rule. + Name pulumi.StringInput + // The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + RuleQuery pulumi.StringInput + // The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + SuppressionQuery pulumi.StringInput +} + +func (SecurityMonitoringSuppressionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*securityMonitoringSuppressionArgs)(nil)).Elem() +} + +type SecurityMonitoringSuppressionInput interface { + pulumi.Input + + ToSecurityMonitoringSuppressionOutput() SecurityMonitoringSuppressionOutput + ToSecurityMonitoringSuppressionOutputWithContext(ctx context.Context) SecurityMonitoringSuppressionOutput +} + +func (*SecurityMonitoringSuppression) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityMonitoringSuppression)(nil)).Elem() +} + +func (i *SecurityMonitoringSuppression) ToSecurityMonitoringSuppressionOutput() SecurityMonitoringSuppressionOutput { + return i.ToSecurityMonitoringSuppressionOutputWithContext(context.Background()) +} + +func (i *SecurityMonitoringSuppression) ToSecurityMonitoringSuppressionOutputWithContext(ctx context.Context) SecurityMonitoringSuppressionOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringSuppressionOutput) +} + +// SecurityMonitoringSuppressionArrayInput is an input type that accepts SecurityMonitoringSuppressionArray and SecurityMonitoringSuppressionArrayOutput values. +// You can construct a concrete instance of `SecurityMonitoringSuppressionArrayInput` via: +// +// SecurityMonitoringSuppressionArray{ SecurityMonitoringSuppressionArgs{...} } +type SecurityMonitoringSuppressionArrayInput interface { + pulumi.Input + + ToSecurityMonitoringSuppressionArrayOutput() SecurityMonitoringSuppressionArrayOutput + ToSecurityMonitoringSuppressionArrayOutputWithContext(context.Context) SecurityMonitoringSuppressionArrayOutput +} + +type SecurityMonitoringSuppressionArray []SecurityMonitoringSuppressionInput + +func (SecurityMonitoringSuppressionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SecurityMonitoringSuppression)(nil)).Elem() +} + +func (i SecurityMonitoringSuppressionArray) ToSecurityMonitoringSuppressionArrayOutput() SecurityMonitoringSuppressionArrayOutput { + return i.ToSecurityMonitoringSuppressionArrayOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringSuppressionArray) ToSecurityMonitoringSuppressionArrayOutputWithContext(ctx context.Context) SecurityMonitoringSuppressionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringSuppressionArrayOutput) +} + +// SecurityMonitoringSuppressionMapInput is an input type that accepts SecurityMonitoringSuppressionMap and SecurityMonitoringSuppressionMapOutput values. +// You can construct a concrete instance of `SecurityMonitoringSuppressionMapInput` via: +// +// SecurityMonitoringSuppressionMap{ "key": SecurityMonitoringSuppressionArgs{...} } +type SecurityMonitoringSuppressionMapInput interface { + pulumi.Input + + ToSecurityMonitoringSuppressionMapOutput() SecurityMonitoringSuppressionMapOutput + ToSecurityMonitoringSuppressionMapOutputWithContext(context.Context) SecurityMonitoringSuppressionMapOutput +} + +type SecurityMonitoringSuppressionMap map[string]SecurityMonitoringSuppressionInput + +func (SecurityMonitoringSuppressionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SecurityMonitoringSuppression)(nil)).Elem() +} + +func (i SecurityMonitoringSuppressionMap) ToSecurityMonitoringSuppressionMapOutput() SecurityMonitoringSuppressionMapOutput { + return i.ToSecurityMonitoringSuppressionMapOutputWithContext(context.Background()) +} + +func (i SecurityMonitoringSuppressionMap) ToSecurityMonitoringSuppressionMapOutputWithContext(ctx context.Context) SecurityMonitoringSuppressionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityMonitoringSuppressionMapOutput) +} + +type SecurityMonitoringSuppressionOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringSuppressionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityMonitoringSuppression)(nil)).Elem() +} + +func (o SecurityMonitoringSuppressionOutput) ToSecurityMonitoringSuppressionOutput() SecurityMonitoringSuppressionOutput { + return o +} + +func (o SecurityMonitoringSuppressionOutput) ToSecurityMonitoringSuppressionOutputWithContext(ctx context.Context) SecurityMonitoringSuppressionOutput { + return o +} + +// A description for the suppression rule. +func (o SecurityMonitoringSuppressionOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityMonitoringSuppression) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Whether the suppression rule is enabled. +func (o SecurityMonitoringSuppressionOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v *SecurityMonitoringSuppression) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput) +} + +// A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. +func (o SecurityMonitoringSuppressionOutput) ExpirationDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityMonitoringSuppression) pulumi.StringPtrOutput { return v.ExpirationDate }).(pulumi.StringPtrOutput) +} + +// The name of the suppression rule. +func (o SecurityMonitoringSuppressionOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityMonitoringSuppression) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The rule query of the suppression rule, with the same syntax as the search bar for detection rules. +func (o SecurityMonitoringSuppressionOutput) RuleQuery() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityMonitoringSuppression) pulumi.StringOutput { return v.RuleQuery }).(pulumi.StringOutput) +} + +// The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. +func (o SecurityMonitoringSuppressionOutput) SuppressionQuery() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityMonitoringSuppression) pulumi.StringOutput { return v.SuppressionQuery }).(pulumi.StringOutput) +} + +type SecurityMonitoringSuppressionArrayOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringSuppressionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SecurityMonitoringSuppression)(nil)).Elem() +} + +func (o SecurityMonitoringSuppressionArrayOutput) ToSecurityMonitoringSuppressionArrayOutput() SecurityMonitoringSuppressionArrayOutput { + return o +} + +func (o SecurityMonitoringSuppressionArrayOutput) ToSecurityMonitoringSuppressionArrayOutputWithContext(ctx context.Context) SecurityMonitoringSuppressionArrayOutput { + return o +} + +func (o SecurityMonitoringSuppressionArrayOutput) Index(i pulumi.IntInput) SecurityMonitoringSuppressionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SecurityMonitoringSuppression { + return vs[0].([]*SecurityMonitoringSuppression)[vs[1].(int)] + }).(SecurityMonitoringSuppressionOutput) +} + +type SecurityMonitoringSuppressionMapOutput struct{ *pulumi.OutputState } + +func (SecurityMonitoringSuppressionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SecurityMonitoringSuppression)(nil)).Elem() +} + +func (o SecurityMonitoringSuppressionMapOutput) ToSecurityMonitoringSuppressionMapOutput() SecurityMonitoringSuppressionMapOutput { + return o +} + +func (o SecurityMonitoringSuppressionMapOutput) ToSecurityMonitoringSuppressionMapOutputWithContext(ctx context.Context) SecurityMonitoringSuppressionMapOutput { + return o +} + +func (o SecurityMonitoringSuppressionMapOutput) MapIndex(k pulumi.StringInput) SecurityMonitoringSuppressionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SecurityMonitoringSuppression { + return vs[0].(map[string]*SecurityMonitoringSuppression)[vs[1].(string)] + }).(SecurityMonitoringSuppressionOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringSuppressionInput)(nil)).Elem(), &SecurityMonitoringSuppression{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringSuppressionArrayInput)(nil)).Elem(), SecurityMonitoringSuppressionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringSuppressionMapInput)(nil)).Elem(), SecurityMonitoringSuppressionMap{}) + pulumi.RegisterOutputType(SecurityMonitoringSuppressionOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringSuppressionArrayOutput{}) + pulumi.RegisterOutputType(SecurityMonitoringSuppressionMapOutput{}) +} diff --git a/sdk/go/datadog/sensitiveDataScannerRule.go b/sdk/go/datadog/sensitiveDataScannerRule.go index 6af864c15..ac7197d14 100644 --- a/sdk/go/datadog/sensitiveDataScannerRule.go +++ b/sdk/go/datadog/sensitiveDataScannerRule.go @@ -12,7 +12,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. +// Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `includedKeywordConfiguration` field to avoid unexpectedly disabling Sensitive Data Scanner groups. // // ## Example Usage // @@ -59,6 +59,13 @@ import ( // ReplacementString: pulumi.String(""), // Type: pulumi.String("hash"), // }, +// IncludedKeywordConfiguration: &datadog.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs{ +// Keywords: pulumi.StringArray{ +// pulumi.String("cc"), +// pulumi.String("credit card"), +// }, +// CharacterCount: pulumi.Int(30), +// }, // }) // if err != nil { // return err @@ -107,6 +114,8 @@ type SensitiveDataScannerRule struct { ExcludedNamespaces pulumi.StringArrayOutput `pulumi:"excludedNamespaces"` // Id of the scanning group the rule belongs to. GroupId pulumi.StringOutput `pulumi:"groupId"` + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + IncludedKeywordConfiguration SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput `pulumi:"includedKeywordConfiguration"` // Whether or not the rule is enabled. IsEnabled pulumi.BoolPtrOutput `pulumi:"isEnabled"` // Name of the rule. @@ -162,6 +171,8 @@ type sensitiveDataScannerRuleState struct { ExcludedNamespaces []string `pulumi:"excludedNamespaces"` // Id of the scanning group the rule belongs to. GroupId *string `pulumi:"groupId"` + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + IncludedKeywordConfiguration *SensitiveDataScannerRuleIncludedKeywordConfiguration `pulumi:"includedKeywordConfiguration"` // Whether or not the rule is enabled. IsEnabled *bool `pulumi:"isEnabled"` // Name of the rule. @@ -185,6 +196,8 @@ type SensitiveDataScannerRuleState struct { ExcludedNamespaces pulumi.StringArrayInput // Id of the scanning group the rule belongs to. GroupId pulumi.StringPtrInput + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + IncludedKeywordConfiguration SensitiveDataScannerRuleIncludedKeywordConfigurationPtrInput // Whether or not the rule is enabled. IsEnabled pulumi.BoolPtrInput // Name of the rule. @@ -212,6 +225,8 @@ type sensitiveDataScannerRuleArgs struct { ExcludedNamespaces []string `pulumi:"excludedNamespaces"` // Id of the scanning group the rule belongs to. GroupId string `pulumi:"groupId"` + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + IncludedKeywordConfiguration *SensitiveDataScannerRuleIncludedKeywordConfiguration `pulumi:"includedKeywordConfiguration"` // Whether or not the rule is enabled. IsEnabled *bool `pulumi:"isEnabled"` // Name of the rule. @@ -236,6 +251,8 @@ type SensitiveDataScannerRuleArgs struct { ExcludedNamespaces pulumi.StringArrayInput // Id of the scanning group the rule belongs to. GroupId pulumi.StringInput + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + IncludedKeywordConfiguration SensitiveDataScannerRuleIncludedKeywordConfigurationPtrInput // Whether or not the rule is enabled. IsEnabled pulumi.BoolPtrInput // Name of the rule. @@ -354,6 +371,13 @@ func (o SensitiveDataScannerRuleOutput) GroupId() pulumi.StringOutput { return o.ApplyT(func(v *SensitiveDataScannerRule) pulumi.StringOutput { return v.GroupId }).(pulumi.StringOutput) } +// Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. +func (o SensitiveDataScannerRuleOutput) IncludedKeywordConfiguration() SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return o.ApplyT(func(v *SensitiveDataScannerRule) SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput { + return v.IncludedKeywordConfiguration + }).(SensitiveDataScannerRuleIncludedKeywordConfigurationPtrOutput) +} + // Whether or not the rule is enabled. func (o SensitiveDataScannerRuleOutput) IsEnabled() pulumi.BoolPtrOutput { return o.ApplyT(func(v *SensitiveDataScannerRule) pulumi.BoolPtrOutput { return v.IsEnabled }).(pulumi.BoolPtrOutput) diff --git a/sdk/go/datadog/serviceLevelObjective.go b/sdk/go/datadog/serviceLevelObjective.go index a9be5cd5f..fedcd95e7 100644 --- a/sdk/go/datadog/serviceLevelObjective.go +++ b/sdk/go/datadog/serviceLevelObjective.go @@ -14,89 +14,6 @@ import ( // Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. // -// ## Example Usage -// -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := datadog.NewServiceLevelObjective(ctx, "foo", &datadog.ServiceLevelObjectiveArgs{ -// Description: pulumi.String("My custom metric SLO"), -// Name: pulumi.String("Example Metric SLO"), -// Query: &datadog.ServiceLevelObjectiveQueryArgs{ -// Denominator: pulumi.String("sum:my.custom.count.metric{*}.as_count()"), -// Numerator: pulumi.String("sum:my.custom.count.metric{type:good_events}.as_count()"), -// }, -// Tags: pulumi.StringArray{ -// pulumi.String("foo:bar"), -// pulumi.String("baz"), -// }, -// TargetThreshold: pulumi.Float64(99.9), -// Thresholds: datadog.ServiceLevelObjectiveThresholdArray{ -// &datadog.ServiceLevelObjectiveThresholdArgs{ -// Target: pulumi.Float64(99.9), -// Timeframe: pulumi.String("7d"), -// Warning: pulumi.Float64(99.99), -// }, -// &datadog.ServiceLevelObjectiveThresholdArgs{ -// Target: pulumi.Float64(99.9), -// Timeframe: pulumi.String("30d"), -// Warning: pulumi.Float64(99.99), -// }, -// }, -// Timeframe: pulumi.String("30d"), -// Type: pulumi.String("metric"), -// WarningThreshold: pulumi.Float64(99.99), -// }) -// if err != nil { -// return err -// } -// _, err = datadog.NewServiceLevelObjective(ctx, "bar", &datadog.ServiceLevelObjectiveArgs{ -// Description: pulumi.String("My custom monitor SLO"), -// MonitorIds: pulumi.IntArray{ -// pulumi.Int(1), -// pulumi.Int(2), -// pulumi.Int(3), -// }, -// Name: pulumi.String("Example Monitor SLO"), -// Tags: pulumi.StringArray{ -// pulumi.String("foo:bar"), -// pulumi.String("baz"), -// }, -// TargetThreshold: pulumi.Float64(99.9), -// Thresholds: datadog.ServiceLevelObjectiveThresholdArray{ -// &datadog.ServiceLevelObjectiveThresholdArgs{ -// Target: pulumi.Float64(99.9), -// Timeframe: pulumi.String("7d"), -// Warning: pulumi.Float64(99.99), -// }, -// &datadog.ServiceLevelObjectiveThresholdArgs{ -// Target: pulumi.Float64(99.9), -// Timeframe: pulumi.String("30d"), -// Warning: pulumi.Float64(99.99), -// }, -// }, -// Timeframe: pulumi.String("30d"), -// Type: pulumi.String("monitor"), -// WarningThreshold: pulumi.Float64(99.99), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// // ## Import // // Service Level Objectives can be imported using their string ID, e.g. @@ -115,10 +32,12 @@ type ServiceLevelObjective struct { Groups pulumi.StringArrayOutput `pulumi:"groups"` // A static set of monitor IDs to use as part of the SLO MonitorIds pulumi.IntArrayOutput `pulumi:"monitorIds"` - // Name of Datadog service level objective + // The name of the query for use in formulas. Name pulumi.StringOutput `pulumi:"name"` - // The metric query of good / total events + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. Query ServiceLevelObjectiveQueryPtrOutput `pulumi:"query"` + // A map of SLI specifications to use as part of the SLO. + SliSpecification ServiceLevelObjectiveSliSpecificationPtrOutput `pulumi:"sliSpecification"` // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API Tags pulumi.StringArrayOutput `pulumi:"tags"` // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. @@ -182,10 +101,12 @@ type serviceLevelObjectiveState struct { Groups []string `pulumi:"groups"` // A static set of monitor IDs to use as part of the SLO MonitorIds []int `pulumi:"monitorIds"` - // Name of Datadog service level objective + // The name of the query for use in formulas. Name *string `pulumi:"name"` - // The metric query of good / total events + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. Query *ServiceLevelObjectiveQuery `pulumi:"query"` + // A map of SLI specifications to use as part of the SLO. + SliSpecification *ServiceLevelObjectiveSliSpecification `pulumi:"sliSpecification"` // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API Tags []string `pulumi:"tags"` // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. @@ -211,10 +132,12 @@ type ServiceLevelObjectiveState struct { Groups pulumi.StringArrayInput // A static set of monitor IDs to use as part of the SLO MonitorIds pulumi.IntArrayInput - // Name of Datadog service level objective + // The name of the query for use in formulas. Name pulumi.StringPtrInput - // The metric query of good / total events + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. Query ServiceLevelObjectiveQueryPtrInput + // A map of SLI specifications to use as part of the SLO. + SliSpecification ServiceLevelObjectiveSliSpecificationPtrInput // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API Tags pulumi.StringArrayInput // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. @@ -244,10 +167,12 @@ type serviceLevelObjectiveArgs struct { Groups []string `pulumi:"groups"` // A static set of monitor IDs to use as part of the SLO MonitorIds []int `pulumi:"monitorIds"` - // Name of Datadog service level objective + // The name of the query for use in formulas. Name string `pulumi:"name"` - // The metric query of good / total events + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. Query *ServiceLevelObjectiveQuery `pulumi:"query"` + // A map of SLI specifications to use as part of the SLO. + SliSpecification *ServiceLevelObjectiveSliSpecification `pulumi:"sliSpecification"` // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API Tags []string `pulumi:"tags"` // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. @@ -274,10 +199,12 @@ type ServiceLevelObjectiveArgs struct { Groups pulumi.StringArrayInput // A static set of monitor IDs to use as part of the SLO MonitorIds pulumi.IntArrayInput - // Name of Datadog service level objective + // The name of the query for use in formulas. Name pulumi.StringInput - // The metric query of good / total events + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. Query ServiceLevelObjectiveQueryPtrInput + // A map of SLI specifications to use as part of the SLO. + SliSpecification ServiceLevelObjectiveSliSpecificationPtrInput // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API Tags pulumi.StringArrayInput // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. @@ -401,16 +328,23 @@ func (o ServiceLevelObjectiveOutput) MonitorIds() pulumi.IntArrayOutput { return o.ApplyT(func(v *ServiceLevelObjective) pulumi.IntArrayOutput { return v.MonitorIds }).(pulumi.IntArrayOutput) } -// Name of Datadog service level objective +// The name of the query for use in formulas. func (o ServiceLevelObjectiveOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *ServiceLevelObjective) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } -// The metric query of good / total events +// A timeseries query, containing named data-source-specific queries and a formula involving the named queries. func (o ServiceLevelObjectiveOutput) Query() ServiceLevelObjectiveQueryPtrOutput { return o.ApplyT(func(v *ServiceLevelObjective) ServiceLevelObjectiveQueryPtrOutput { return v.Query }).(ServiceLevelObjectiveQueryPtrOutput) } +// A map of SLI specifications to use as part of the SLO. +func (o ServiceLevelObjectiveOutput) SliSpecification() ServiceLevelObjectiveSliSpecificationPtrOutput { + return o.ApplyT(func(v *ServiceLevelObjective) ServiceLevelObjectiveSliSpecificationPtrOutput { + return v.SliSpecification + }).(ServiceLevelObjectiveSliSpecificationPtrOutput) +} + // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API func (o ServiceLevelObjectiveOutput) Tags() pulumi.StringArrayOutput { return o.ApplyT(func(v *ServiceLevelObjective) pulumi.StringArrayOutput { return v.Tags }).(pulumi.StringArrayOutput) diff --git a/sdk/java/src/main/java/com/pulumi/datadog/DatadogFunctions.java b/sdk/java/src/main/java/com/pulumi/datadog/DatadogFunctions.java index 73a684d23..a07975d48 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/DatadogFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/DatadogFunctions.java @@ -73,6 +73,7 @@ import com.pulumi.datadog.outputs.GetRumApplicationResult; import com.pulumi.datadog.outputs.GetSecurityMonitoringFiltersResult; import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesResult; +import com.pulumi.datadog.outputs.GetSecurityMonitoringSuppressionsResult; import com.pulumi.datadog.outputs.GetSensitiveDataScannerGroupOrderResult; import com.pulumi.datadog.outputs.GetSensitiveDataScannerStandardPatternResult; import com.pulumi.datadog.outputs.GetServiceAccountResult; @@ -3795,6 +3796,48 @@ public static Output getSecurityMonitoringRule public static CompletableFuture getSecurityMonitoringRulesPlain(GetSecurityMonitoringRulesPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("datadog:index/getSecurityMonitoringRules:getSecurityMonitoringRules", TypeShape.of(GetSecurityMonitoringRulesResult.class), args, Utilities.withVersion(options)); } + /** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + * + */ + public static Output getSecurityMonitoringSuppressions() { + return getSecurityMonitoringSuppressions(InvokeArgs.Empty, InvokeOptions.Empty); + } + /** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + * + */ + public static CompletableFuture getSecurityMonitoringSuppressionsPlain() { + return getSecurityMonitoringSuppressionsPlain(InvokeArgs.Empty, InvokeOptions.Empty); + } + /** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + * + */ + public static Output getSecurityMonitoringSuppressions(InvokeArgs args) { + return getSecurityMonitoringSuppressions(args, InvokeOptions.Empty); + } + /** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + * + */ + public static CompletableFuture getSecurityMonitoringSuppressionsPlain(InvokeArgs args) { + return getSecurityMonitoringSuppressionsPlain(args, InvokeOptions.Empty); + } + /** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + * + */ + public static Output getSecurityMonitoringSuppressions(InvokeArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions", TypeShape.of(GetSecurityMonitoringSuppressionsResult.class), args, Utilities.withVersion(options)); + } + /** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + * + */ + public static CompletableFuture getSecurityMonitoringSuppressionsPlain(InvokeArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions", TypeShape.of(GetSecurityMonitoringSuppressionsResult.class), args, Utilities.withVersion(options)); + } /** * Provides a Datadog Sensitive Data Scanner Group Order API data source. This can be used to retrieve the order of Datadog Sensitive Data Scanner Groups. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/LogsIndex.java b/sdk/java/src/main/java/com/pulumi/datadog/LogsIndex.java index af591ac15..3f1f9dd5f 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/LogsIndex.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/LogsIndex.java @@ -10,9 +10,11 @@ import com.pulumi.datadog.LogsIndexArgs; import com.pulumi.datadog.Utilities; import com.pulumi.datadog.inputs.LogsIndexState; +import com.pulumi.datadog.outputs.LogsIndexDailyLimitReset; import com.pulumi.datadog.outputs.LogsIndexExclusionFilter; import com.pulumi.datadog.outputs.LogsIndexFilter; import java.lang.Boolean; +import java.lang.Double; import java.lang.Integer; import java.lang.String; import java.util.List; @@ -29,6 +31,7 @@ * import com.pulumi.core.Output; * import com.pulumi.datadog.LogsIndex; * import com.pulumi.datadog.LogsIndexArgs; + * import com.pulumi.datadog.inputs.LogsIndexDailyLimitResetArgs; * import com.pulumi.datadog.inputs.LogsIndexExclusionFilterArgs; * import com.pulumi.datadog.inputs.LogsIndexFilterArgs; * import java.util.List; @@ -46,6 +49,11 @@ * public static void stack(Context ctx) { * var sampleIndex = new LogsIndex("sampleIndex", LogsIndexArgs.builder() * .dailyLimit(200000) + * .dailyLimitReset(LogsIndexDailyLimitResetArgs.builder() + * .resetTime("14:00") + * .resetUtcOffset("+02:00") + * .build()) + * .dailyLimitWarningThresholdPercentage(50) * .exclusionFilters( * LogsIndexExclusionFilterArgs.builder() * .filters(LogsIndexExclusionFilterFilterArgs.builder() @@ -97,6 +105,34 @@ public class LogsIndex extends com.pulumi.resources.CustomResource { public Output> dailyLimit() { return Codegen.optional(this.dailyLimit); } + /** + * Object containing options to override the default daily limit reset time. + * + */ + @Export(name="dailyLimitReset", refs={LogsIndexDailyLimitReset.class}, tree="[0]") + private Output dailyLimitReset; + + /** + * @return Object containing options to override the default daily limit reset time. + * + */ + public Output> dailyLimitReset() { + return Codegen.optional(this.dailyLimitReset); + } + /** + * A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + @Export(name="dailyLimitWarningThresholdPercentage", refs={Double.class}, tree="[0]") + private Output dailyLimitWarningThresholdPercentage; + + /** + * @return A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + public Output dailyLimitWarningThresholdPercentage() { + return this.dailyLimitWarningThresholdPercentage; + } /** * If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/LogsIndexArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/LogsIndexArgs.java index cb362dd64..bf894cce5 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/LogsIndexArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/LogsIndexArgs.java @@ -5,10 +5,12 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.LogsIndexDailyLimitResetArgs; import com.pulumi.datadog.inputs.LogsIndexExclusionFilterArgs; import com.pulumi.datadog.inputs.LogsIndexFilterArgs; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; +import java.lang.Double; import java.lang.Integer; import java.lang.String; import java.util.List; @@ -36,6 +38,36 @@ public Optional> dailyLimit() { return Optional.ofNullable(this.dailyLimit); } + /** + * Object containing options to override the default daily limit reset time. + * + */ + @Import(name="dailyLimitReset") + private @Nullable Output dailyLimitReset; + + /** + * @return Object containing options to override the default daily limit reset time. + * + */ + public Optional> dailyLimitReset() { + return Optional.ofNullable(this.dailyLimitReset); + } + + /** + * A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + @Import(name="dailyLimitWarningThresholdPercentage") + private @Nullable Output dailyLimitWarningThresholdPercentage; + + /** + * @return A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + public Optional> dailyLimitWarningThresholdPercentage() { + return Optional.ofNullable(this.dailyLimitWarningThresholdPercentage); + } + /** * If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. * @@ -115,6 +147,8 @@ private LogsIndexArgs() {} private LogsIndexArgs(LogsIndexArgs $) { this.dailyLimit = $.dailyLimit; + this.dailyLimitReset = $.dailyLimitReset; + this.dailyLimitWarningThresholdPercentage = $.dailyLimitWarningThresholdPercentage; this.disableDailyLimit = $.disableDailyLimit; this.exclusionFilters = $.exclusionFilters; this.filters = $.filters; @@ -161,6 +195,48 @@ public Builder dailyLimit(Integer dailyLimit) { return dailyLimit(Output.of(dailyLimit)); } + /** + * @param dailyLimitReset Object containing options to override the default daily limit reset time. + * + * @return builder + * + */ + public Builder dailyLimitReset(@Nullable Output dailyLimitReset) { + $.dailyLimitReset = dailyLimitReset; + return this; + } + + /** + * @param dailyLimitReset Object containing options to override the default daily limit reset time. + * + * @return builder + * + */ + public Builder dailyLimitReset(LogsIndexDailyLimitResetArgs dailyLimitReset) { + return dailyLimitReset(Output.of(dailyLimitReset)); + } + + /** + * @param dailyLimitWarningThresholdPercentage A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + * @return builder + * + */ + public Builder dailyLimitWarningThresholdPercentage(@Nullable Output dailyLimitWarningThresholdPercentage) { + $.dailyLimitWarningThresholdPercentage = dailyLimitWarningThresholdPercentage; + return this; + } + + /** + * @param dailyLimitWarningThresholdPercentage A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + * @return builder + * + */ + public Builder dailyLimitWarningThresholdPercentage(Double dailyLimitWarningThresholdPercentage) { + return dailyLimitWarningThresholdPercentage(Output.of(dailyLimitWarningThresholdPercentage)); + } + /** * @param disableDailyLimit If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/OpenapiApi.java b/sdk/java/src/main/java/com/pulumi/datadog/OpenapiApi.java new file mode 100644 index 000000000..96f529f42 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/OpenapiApi.java @@ -0,0 +1,121 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.datadog.OpenapiApiArgs; +import com.pulumi.datadog.Utilities; +import com.pulumi.datadog.inputs.OpenapiApiState; +import java.lang.String; +import javax.annotation.Nullable; + +/** + * Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.datadog.OpenapiApi; + * import com.pulumi.datadog.OpenapiApiArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var my_api = new OpenapiApi("my-api", OpenapiApiArgs.builder() + * .spec(Files.readString(Paths.get("./path/my-api.yaml"))) + * .build()); + * + * } + * } + * ``` + * + * ## Import + * + * ```sh + * $ pulumi import datadog:index/openapiApi:OpenapiApi new_list "90646597-5fdb-4a17-a240-647003f8c028" + * ``` + * + */ +@ResourceType(type="datadog:index/openapiApi:OpenapiApi") +public class OpenapiApi extends com.pulumi.resources.CustomResource { + /** + * The OpenAPI spec. + * + */ + @Export(name="spec", refs={String.class}, tree="[0]") + private Output spec; + + /** + * @return The OpenAPI spec. + * + */ + public Output spec() { + return this.spec; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public OpenapiApi(String name) { + this(name, OpenapiApiArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public OpenapiApi(String name, OpenapiApiArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public OpenapiApi(String name, OpenapiApiArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("datadog:index/openapiApi:OpenapiApi", name, args == null ? OpenapiApiArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private OpenapiApi(String name, Output id, @Nullable OpenapiApiState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("datadog:index/openapiApi:OpenapiApi", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static OpenapiApi get(String name, Output id, @Nullable OpenapiApiState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new OpenapiApi(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/OpenapiApiArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/OpenapiApiArgs.java new file mode 100644 index 000000000..2e75cca64 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/OpenapiApiArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class OpenapiApiArgs extends com.pulumi.resources.ResourceArgs { + + public static final OpenapiApiArgs Empty = new OpenapiApiArgs(); + + /** + * The OpenAPI spec. + * + */ + @Import(name="spec", required=true) + private Output spec; + + /** + * @return The OpenAPI spec. + * + */ + public Output spec() { + return this.spec; + } + + private OpenapiApiArgs() {} + + private OpenapiApiArgs(OpenapiApiArgs $) { + this.spec = $.spec; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(OpenapiApiArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private OpenapiApiArgs $; + + public Builder() { + $ = new OpenapiApiArgs(); + } + + public Builder(OpenapiApiArgs defaults) { + $ = new OpenapiApiArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param spec The OpenAPI spec. + * + * @return builder + * + */ + public Builder spec(Output spec) { + $.spec = spec; + return this; + } + + /** + * @param spec The OpenAPI spec. + * + * @return builder + * + */ + public Builder spec(String spec) { + return spec(Output.of(spec)); + } + + public OpenapiApiArgs build() { + if ($.spec == null) { + throw new MissingRequiredPropertyException("OpenapiApiArgs", "spec"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRule.java b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRule.java index 6895864b1..532c17880 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRule.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRule.java @@ -15,6 +15,7 @@ import com.pulumi.datadog.outputs.SecurityMonitoringRuleOptions; import com.pulumi.datadog.outputs.SecurityMonitoringRuleQuery; import com.pulumi.datadog.outputs.SecurityMonitoringRuleSignalQuery; +import com.pulumi.datadog.outputs.SecurityMonitoringRuleThirdPartyCase; import java.lang.Boolean; import java.lang.String; import java.util.List; @@ -99,14 +100,14 @@ public class SecurityMonitoringRule extends com.pulumi.resources.CustomResource * */ @Export(name="cases", refs={List.class,SecurityMonitoringRuleCase.class}, tree="[0,1]") - private Output> cases; + private Output> cases; /** * @return Cases for generating signals. * */ - public Output> cases() { - return this.cases; + public Output>> cases() { + return Codegen.optional(this.cases); } /** * Whether the rule is enabled. Defaults to `true`. @@ -234,6 +235,20 @@ public Output>> signalQueries() public Output>> tags() { return Codegen.optional(this.tags); } + /** + * Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + @Export(name="thirdPartyCases", refs={List.class,SecurityMonitoringRuleThirdPartyCase.class}, tree="[0,1]") + private Output> thirdPartyCases; + + /** + * @return Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + public Output>> thirdPartyCases() { + return Codegen.optional(this.thirdPartyCases); + } /** * The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRuleArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRuleArgs.java index bde923791..7c67f7af3 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRuleArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringRuleArgs.java @@ -10,6 +10,7 @@ import com.pulumi.datadog.inputs.SecurityMonitoringRuleOptionsArgs; import com.pulumi.datadog.inputs.SecurityMonitoringRuleQueryArgs; import com.pulumi.datadog.inputs.SecurityMonitoringRuleSignalQueryArgs; +import com.pulumi.datadog.inputs.SecurityMonitoringRuleThirdPartyCaseArgs; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; import java.lang.String; @@ -27,15 +28,15 @@ public final class SecurityMonitoringRuleArgs extends com.pulumi.resources.Resou * Cases for generating signals. * */ - @Import(name="cases", required=true) - private Output> cases; + @Import(name="cases") + private @Nullable Output> cases; /** * @return Cases for generating signals. * */ - public Output> cases() { - return this.cases; + public Optional>> cases() { + return Optional.ofNullable(this.cases); } /** @@ -173,6 +174,21 @@ public Optional>> tags() { return Optional.ofNullable(this.tags); } + /** + * Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + @Import(name="thirdPartyCases") + private @Nullable Output> thirdPartyCases; + + /** + * @return Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + public Optional>> thirdPartyCases() { + return Optional.ofNullable(this.thirdPartyCases); + } + /** * The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. * @@ -201,6 +217,7 @@ private SecurityMonitoringRuleArgs(SecurityMonitoringRuleArgs $) { this.queries = $.queries; this.signalQueries = $.signalQueries; this.tags = $.tags; + this.thirdPartyCases = $.thirdPartyCases; this.type = $.type; } @@ -228,7 +245,7 @@ public Builder(SecurityMonitoringRuleArgs defaults) { * @return builder * */ - public Builder cases(Output> cases) { + public Builder cases(@Nullable Output> cases) { $.cases = cases; return this; } @@ -482,6 +499,37 @@ public Builder tags(String... tags) { return tags(List.of(tags)); } + /** + * @param thirdPartyCases Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + * @return builder + * + */ + public Builder thirdPartyCases(@Nullable Output> thirdPartyCases) { + $.thirdPartyCases = thirdPartyCases; + return this; + } + + /** + * @param thirdPartyCases Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + * @return builder + * + */ + public Builder thirdPartyCases(List thirdPartyCases) { + return thirdPartyCases(Output.of(thirdPartyCases)); + } + + /** + * @param thirdPartyCases Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + * @return builder + * + */ + public Builder thirdPartyCases(SecurityMonitoringRuleThirdPartyCaseArgs... thirdPartyCases) { + return thirdPartyCases(List.of(thirdPartyCases)); + } + /** * @param type The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. * @@ -504,9 +552,6 @@ public Builder type(String type) { } public SecurityMonitoringRuleArgs build() { - if ($.cases == null) { - throw new MissingRequiredPropertyException("SecurityMonitoringRuleArgs", "cases"); - } if ($.message == null) { throw new MissingRequiredPropertyException("SecurityMonitoringRuleArgs", "message"); } diff --git a/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppression.java b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppression.java new file mode 100644 index 000000000..e6214c98b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppression.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.datadog.SecurityMonitoringSuppressionArgs; +import com.pulumi.datadog.Utilities; +import com.pulumi.datadog.inputs.SecurityMonitoringSuppressionState; +import java.lang.Boolean; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules. + * + */ +@ResourceType(type="datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression") +public class SecurityMonitoringSuppression extends com.pulumi.resources.CustomResource { + /** + * A description for the suppression rule. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return A description for the suppression rule. + * + */ + public Output> description() { + return Codegen.optional(this.description); + } + /** + * Whether the suppression rule is enabled. + * + */ + @Export(name="enabled", refs={Boolean.class}, tree="[0]") + private Output enabled; + + /** + * @return Whether the suppression rule is enabled. + * + */ + public Output enabled() { + return this.enabled; + } + /** + * A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + */ + @Export(name="expirationDate", refs={String.class}, tree="[0]") + private Output expirationDate; + + /** + * @return A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + */ + public Output> expirationDate() { + return Codegen.optional(this.expirationDate); + } + /** + * The name of the suppression rule. + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return The name of the suppression rule. + * + */ + public Output name() { + return this.name; + } + /** + * The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + */ + @Export(name="ruleQuery", refs={String.class}, tree="[0]") + private Output ruleQuery; + + /** + * @return The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + */ + public Output ruleQuery() { + return this.ruleQuery; + } + /** + * The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + */ + @Export(name="suppressionQuery", refs={String.class}, tree="[0]") + private Output suppressionQuery; + + /** + * @return The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + */ + public Output suppressionQuery() { + return this.suppressionQuery; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public SecurityMonitoringSuppression(String name) { + this(name, SecurityMonitoringSuppressionArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public SecurityMonitoringSuppression(String name, SecurityMonitoringSuppressionArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public SecurityMonitoringSuppression(String name, SecurityMonitoringSuppressionArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression", name, args == null ? SecurityMonitoringSuppressionArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private SecurityMonitoringSuppression(String name, Output id, @Nullable SecurityMonitoringSuppressionState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static SecurityMonitoringSuppression get(String name, Output id, @Nullable SecurityMonitoringSuppressionState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new SecurityMonitoringSuppression(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppressionArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppressionArgs.java new file mode 100644 index 000000000..26a50dd98 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/SecurityMonitoringSuppressionArgs.java @@ -0,0 +1,282 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityMonitoringSuppressionArgs extends com.pulumi.resources.ResourceArgs { + + public static final SecurityMonitoringSuppressionArgs Empty = new SecurityMonitoringSuppressionArgs(); + + /** + * A description for the suppression rule. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return A description for the suppression rule. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Whether the suppression rule is enabled. + * + */ + @Import(name="enabled", required=true) + private Output enabled; + + /** + * @return Whether the suppression rule is enabled. + * + */ + public Output enabled() { + return this.enabled; + } + + /** + * A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + */ + @Import(name="expirationDate") + private @Nullable Output expirationDate; + + /** + * @return A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + */ + public Optional> expirationDate() { + return Optional.ofNullable(this.expirationDate); + } + + /** + * The name of the suppression rule. + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The name of the suppression rule. + * + */ + public Output name() { + return this.name; + } + + /** + * The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + */ + @Import(name="ruleQuery", required=true) + private Output ruleQuery; + + /** + * @return The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + */ + public Output ruleQuery() { + return this.ruleQuery; + } + + /** + * The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + */ + @Import(name="suppressionQuery", required=true) + private Output suppressionQuery; + + /** + * @return The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + */ + public Output suppressionQuery() { + return this.suppressionQuery; + } + + private SecurityMonitoringSuppressionArgs() {} + + private SecurityMonitoringSuppressionArgs(SecurityMonitoringSuppressionArgs $) { + this.description = $.description; + this.enabled = $.enabled; + this.expirationDate = $.expirationDate; + this.name = $.name; + this.ruleQuery = $.ruleQuery; + this.suppressionQuery = $.suppressionQuery; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityMonitoringSuppressionArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityMonitoringSuppressionArgs $; + + public Builder() { + $ = new SecurityMonitoringSuppressionArgs(); + } + + public Builder(SecurityMonitoringSuppressionArgs defaults) { + $ = new SecurityMonitoringSuppressionArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param description A description for the suppression rule. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description A description for the suppression rule. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param enabled Whether the suppression rule is enabled. + * + * @return builder + * + */ + public Builder enabled(Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled Whether the suppression rule is enabled. + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + /** + * @param expirationDate A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + * @return builder + * + */ + public Builder expirationDate(@Nullable Output expirationDate) { + $.expirationDate = expirationDate; + return this; + } + + /** + * @param expirationDate A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + * @return builder + * + */ + public Builder expirationDate(String expirationDate) { + return expirationDate(Output.of(expirationDate)); + } + + /** + * @param name The name of the suppression rule. + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the suppression rule. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param ruleQuery The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + * @return builder + * + */ + public Builder ruleQuery(Output ruleQuery) { + $.ruleQuery = ruleQuery; + return this; + } + + /** + * @param ruleQuery The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + * @return builder + * + */ + public Builder ruleQuery(String ruleQuery) { + return ruleQuery(Output.of(ruleQuery)); + } + + /** + * @param suppressionQuery The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + * @return builder + * + */ + public Builder suppressionQuery(Output suppressionQuery) { + $.suppressionQuery = suppressionQuery; + return this; + } + + /** + * @param suppressionQuery The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + * @return builder + * + */ + public Builder suppressionQuery(String suppressionQuery) { + return suppressionQuery(Output.of(suppressionQuery)); + } + + public SecurityMonitoringSuppressionArgs build() { + if ($.enabled == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringSuppressionArgs", "enabled"); + } + if ($.name == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringSuppressionArgs", "name"); + } + if ($.ruleQuery == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringSuppressionArgs", "ruleQuery"); + } + if ($.suppressionQuery == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringSuppressionArgs", "suppressionQuery"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRule.java b/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRule.java index 1c5ae658a..676d2c35d 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRule.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRule.java @@ -10,6 +10,7 @@ import com.pulumi.datadog.SensitiveDataScannerRuleArgs; import com.pulumi.datadog.Utilities; import com.pulumi.datadog.inputs.SensitiveDataScannerRuleState; +import com.pulumi.datadog.outputs.SensitiveDataScannerRuleIncludedKeywordConfiguration; import com.pulumi.datadog.outputs.SensitiveDataScannerRuleTextReplacement; import java.lang.Boolean; import java.lang.String; @@ -18,7 +19,7 @@ import javax.annotation.Nullable; /** - * Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. + * Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `included_keyword_configuration` field to avoid unexpectedly disabling Sensitive Data Scanner groups. * * ## Example Usage * ```java @@ -33,6 +34,7 @@ * import com.pulumi.datadog.SensitiveDataScannerRule; * import com.pulumi.datadog.SensitiveDataScannerRuleArgs; * import com.pulumi.datadog.inputs.SensitiveDataScannerRuleTextReplacementArgs; + * import com.pulumi.datadog.inputs.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs; * import com.pulumi.datadog.DatadogFunctions; * import com.pulumi.datadog.inputs.GetSensitiveDataScannerStandardPatternArgs; * import java.util.List; @@ -71,6 +73,12 @@ * .replacementString("") * .type("hash") * .build()) + * .includedKeywordConfiguration(SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.builder() + * .keywords( + * "cc", + * "credit card") + * .characterCount(30) + * .build()) * .build()); * * final var awsSp = DatadogFunctions.getSensitiveDataScannerStandardPattern(GetSensitiveDataScannerStandardPatternArgs.builder() @@ -142,6 +150,20 @@ public Output>> excludedNamespaces() { public Output groupId() { return this.groupId; } + /** + * Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + */ + @Export(name="includedKeywordConfiguration", refs={SensitiveDataScannerRuleIncludedKeywordConfiguration.class}, tree="[0]") + private Output includedKeywordConfiguration; + + /** + * @return Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + */ + public Output> includedKeywordConfiguration() { + return Codegen.optional(this.includedKeywordConfiguration); + } /** * Whether or not the rule is enabled. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRuleArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRuleArgs.java index 7027e236f..f1efa625d 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRuleArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/SensitiveDataScannerRuleArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs; import com.pulumi.datadog.inputs.SensitiveDataScannerRuleTextReplacementArgs; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; @@ -64,6 +65,21 @@ public Output groupId() { return this.groupId; } + /** + * Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + */ + @Import(name="includedKeywordConfiguration") + private @Nullable Output includedKeywordConfiguration; + + /** + * @return Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + */ + public Optional> includedKeywordConfiguration() { + return Optional.ofNullable(this.includedKeywordConfiguration); + } + /** * Whether or not the rule is enabled. * @@ -175,6 +191,7 @@ private SensitiveDataScannerRuleArgs(SensitiveDataScannerRuleArgs $) { this.description = $.description; this.excludedNamespaces = $.excludedNamespaces; this.groupId = $.groupId; + this.includedKeywordConfiguration = $.includedKeywordConfiguration; this.isEnabled = $.isEnabled; this.name = $.name; this.namespaces = $.namespaces; @@ -275,6 +292,27 @@ public Builder groupId(String groupId) { return groupId(Output.of(groupId)); } + /** + * @param includedKeywordConfiguration Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + * @return builder + * + */ + public Builder includedKeywordConfiguration(@Nullable Output includedKeywordConfiguration) { + $.includedKeywordConfiguration = includedKeywordConfiguration; + return this; + } + + /** + * @param includedKeywordConfiguration Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + * @return builder + * + */ + public Builder includedKeywordConfiguration(SensitiveDataScannerRuleIncludedKeywordConfigurationArgs includedKeywordConfiguration) { + return includedKeywordConfiguration(Output.of(includedKeywordConfiguration)); + } + /** * @param isEnabled Whether or not the rule is enabled. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjective.java b/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjective.java index defb3c6f6..2b8f9cd4a 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjective.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjective.java @@ -11,6 +11,7 @@ import com.pulumi.datadog.Utilities; import com.pulumi.datadog.inputs.ServiceLevelObjectiveState; import com.pulumi.datadog.outputs.ServiceLevelObjectiveQuery; +import com.pulumi.datadog.outputs.ServiceLevelObjectiveSliSpecification; import com.pulumi.datadog.outputs.ServiceLevelObjectiveThreshold; import java.lang.Boolean; import java.lang.Double; @@ -24,6 +25,7 @@ * Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. * * ## Example Usage + * * ```java * package generated_program; * @@ -34,6 +36,10 @@ * import com.pulumi.datadog.ServiceLevelObjectiveArgs; * import com.pulumi.datadog.inputs.ServiceLevelObjectiveQueryArgs; * import com.pulumi.datadog.inputs.ServiceLevelObjectiveThresholdArgs; + * import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationArgs; + * import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceArgs; + * import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs; + * import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -101,6 +107,35 @@ * .warningThreshold(99.99) * .build()); * + * var timeSliceSlo = new ServiceLevelObjective("timeSliceSlo", ServiceLevelObjectiveArgs.builder() + * .description("My custom time slice SLO") + * .name("Example Time Slice SLO") + * .sliSpecification(ServiceLevelObjectiveSliSpecificationArgs.builder() + * .timeSlice(ServiceLevelObjectiveSliSpecificationTimeSliceArgs.builder() + * .comparator(">") + * .query(ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.builder() + * .formula(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.builder() + * .formulaExpression("query1") + * .build()) + * .query(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference)) + * .build()) + * .threshold(0.9) + * .build()) + * .build()) + * .tags( + * "service:myservice", + * "team:myteam") + * .targetThreshold(99.9) + * .thresholds(ServiceLevelObjectiveThresholdArgs.builder() + * .target(99.9) + * .timeframe("7d") + * .warning(99.99) + * .build()) + * .timeframe("7d") + * .type("time_slice") + * .warningThreshold(99.99) + * .build()); + * * } * } * ``` @@ -173,33 +208,47 @@ public Output>> monitorIds() { return Codegen.optional(this.monitorIds); } /** - * Name of Datadog service level objective + * The name of the query for use in formulas. * */ @Export(name="name", refs={String.class}, tree="[0]") private Output name; /** - * @return Name of Datadog service level objective + * @return The name of the query for use in formulas. * */ public Output name() { return this.name; } /** - * The metric query of good / total events + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * */ @Export(name="query", refs={ServiceLevelObjectiveQuery.class}, tree="[0]") private Output query; /** - * @return The metric query of good / total events + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * */ public Output> query() { return Codegen.optional(this.query); } + /** + * A map of SLI specifications to use as part of the SLO. + * + */ + @Export(name="sliSpecification", refs={ServiceLevelObjectiveSliSpecification.class}, tree="[0]") + private Output sliSpecification; + + /** + * @return A map of SLI specifications to use as part of the SLO. + * + */ + public Output> sliSpecification() { + return Codegen.optional(this.sliSpecification); + } /** * A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjectiveArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjectiveArgs.java index 082de8ab7..fc220d022 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjectiveArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/ServiceLevelObjectiveArgs.java @@ -6,6 +6,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.datadog.inputs.ServiceLevelObjectiveQueryArgs; +import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationArgs; import com.pulumi.datadog.inputs.ServiceLevelObjectiveThresholdArgs; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; @@ -83,14 +84,14 @@ public Optional>> monitorIds() { } /** - * Name of Datadog service level objective + * The name of the query for use in formulas. * */ @Import(name="name", required=true) private Output name; /** - * @return Name of Datadog service level objective + * @return The name of the query for use in formulas. * */ public Output name() { @@ -98,20 +99,35 @@ public Output name() { } /** - * The metric query of good / total events + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * */ @Import(name="query") private @Nullable Output query; /** - * @return The metric query of good / total events + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * */ public Optional> query() { return Optional.ofNullable(this.query); } + /** + * A map of SLI specifications to use as part of the SLO. + * + */ + @Import(name="sliSpecification") + private @Nullable Output sliSpecification; + + /** + * @return A map of SLI specifications to use as part of the SLO. + * + */ + public Optional> sliSpecification() { + return Optional.ofNullable(this.sliSpecification); + } + /** * A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API * @@ -226,6 +242,7 @@ private ServiceLevelObjectiveArgs(ServiceLevelObjectiveArgs $) { this.monitorIds = $.monitorIds; this.name = $.name; this.query = $.query; + this.sliSpecification = $.sliSpecification; this.tags = $.tags; this.targetThreshold = $.targetThreshold; this.thresholds = $.thresholds; @@ -358,7 +375,7 @@ public Builder monitorIds(Integer... monitorIds) { } /** - * @param name Name of Datadog service level objective + * @param name The name of the query for use in formulas. * * @return builder * @@ -369,7 +386,7 @@ public Builder name(Output name) { } /** - * @param name Name of Datadog service level objective + * @param name The name of the query for use in formulas. * * @return builder * @@ -379,7 +396,7 @@ public Builder name(String name) { } /** - * @param query The metric query of good / total events + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * * @return builder * @@ -390,7 +407,7 @@ public Builder query(@Nullable Output query) { } /** - * @param query The metric query of good / total events + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * * @return builder * @@ -399,6 +416,27 @@ public Builder query(ServiceLevelObjectiveQueryArgs query) { return query(Output.of(query)); } + /** + * @param sliSpecification A map of SLI specifications to use as part of the SLO. + * + * @return builder + * + */ + public Builder sliSpecification(@Nullable Output sliSpecification) { + $.sliSpecification = sliSpecification; + return this; + } + + /** + * @param sliSpecification A map of SLI specifications to use as part of the SLO. + * + * @return builder + * + */ + public Builder sliSpecification(ServiceLevelObjectiveSliSpecificationArgs sliSpecification) { + return sliSpecification(Output.of(sliSpecification)); + } + /** * @param tags A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyArgs.java index d4fac60cf..95337fa04 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,6 +16,21 @@ public final class GetApiKeyArgs extends com.pulumi.resources.InvokeArgs { public static final GetApiKeyArgs Empty = new GetApiKeyArgs(); + /** + * Whether to use exact match when searching by name. + * + */ + @Import(name="exactMatch") + private @Nullable Output exactMatch; + + /** + * @return Whether to use exact match when searching by name. + * + */ + public Optional> exactMatch() { + return Optional.ofNullable(this.exactMatch); + } + /** * The ID of this resource. * @@ -48,6 +64,7 @@ public Optional> name() { private GetApiKeyArgs() {} private GetApiKeyArgs(GetApiKeyArgs $) { + this.exactMatch = $.exactMatch; this.id = $.id; this.name = $.name; } @@ -70,6 +87,27 @@ public Builder(GetApiKeyArgs defaults) { $ = new GetApiKeyArgs(Objects.requireNonNull(defaults)); } + /** + * @param exactMatch Whether to use exact match when searching by name. + * + * @return builder + * + */ + public Builder exactMatch(@Nullable Output exactMatch) { + $.exactMatch = exactMatch; + return this; + } + + /** + * @param exactMatch Whether to use exact match when searching by name. + * + * @return builder + * + */ + public Builder exactMatch(Boolean exactMatch) { + return exactMatch(Output.of(exactMatch)); + } + /** * @param id The ID of this resource. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyPlainArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyPlainArgs.java index aaecf6fd7..9093ee90e 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyPlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApiKeyPlainArgs.java @@ -4,6 +4,7 @@ package com.pulumi.datadog.inputs; import com.pulumi.core.annotations.Import; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -14,6 +15,21 @@ public final class GetApiKeyPlainArgs extends com.pulumi.resources.InvokeArgs { public static final GetApiKeyPlainArgs Empty = new GetApiKeyPlainArgs(); + /** + * Whether to use exact match when searching by name. + * + */ + @Import(name="exactMatch") + private @Nullable Boolean exactMatch; + + /** + * @return Whether to use exact match when searching by name. + * + */ + public Optional exactMatch() { + return Optional.ofNullable(this.exactMatch); + } + /** * The ID of this resource. * @@ -47,6 +63,7 @@ public Optional name() { private GetApiKeyPlainArgs() {} private GetApiKeyPlainArgs(GetApiKeyPlainArgs $) { + this.exactMatch = $.exactMatch; this.id = $.id; this.name = $.name; } @@ -69,6 +86,17 @@ public Builder(GetApiKeyPlainArgs defaults) { $ = new GetApiKeyPlainArgs(Objects.requireNonNull(defaults)); } + /** + * @param exactMatch Whether to use exact match when searching by name. + * + * @return builder + * + */ + public Builder exactMatch(@Nullable Boolean exactMatch) { + $.exactMatch = exactMatch; + return this; + } + /** * @param id The ID of this resource. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyArgs.java index c98ced9f0..b4e74e697 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,6 +16,21 @@ public final class GetApplicationKeyArgs extends com.pulumi.resources.InvokeArgs public static final GetApplicationKeyArgs Empty = new GetApplicationKeyArgs(); + /** + * Whether to use exact match when searching by name. + * + */ + @Import(name="exactMatch") + private @Nullable Output exactMatch; + + /** + * @return Whether to use exact match when searching by name. + * + */ + public Optional> exactMatch() { + return Optional.ofNullable(this.exactMatch); + } + /** * Id for Application Key. * @@ -48,6 +64,7 @@ public Optional> name() { private GetApplicationKeyArgs() {} private GetApplicationKeyArgs(GetApplicationKeyArgs $) { + this.exactMatch = $.exactMatch; this.id = $.id; this.name = $.name; } @@ -70,6 +87,27 @@ public Builder(GetApplicationKeyArgs defaults) { $ = new GetApplicationKeyArgs(Objects.requireNonNull(defaults)); } + /** + * @param exactMatch Whether to use exact match when searching by name. + * + * @return builder + * + */ + public Builder exactMatch(@Nullable Output exactMatch) { + $.exactMatch = exactMatch; + return this; + } + + /** + * @param exactMatch Whether to use exact match when searching by name. + * + * @return builder + * + */ + public Builder exactMatch(Boolean exactMatch) { + return exactMatch(Output.of(exactMatch)); + } + /** * @param id Id for Application Key. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyPlainArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyPlainArgs.java index 9dbbfbf79..19dcfd7d0 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyPlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/GetApplicationKeyPlainArgs.java @@ -4,6 +4,7 @@ package com.pulumi.datadog.inputs; import com.pulumi.core.annotations.Import; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -14,6 +15,21 @@ public final class GetApplicationKeyPlainArgs extends com.pulumi.resources.Invok public static final GetApplicationKeyPlainArgs Empty = new GetApplicationKeyPlainArgs(); + /** + * Whether to use exact match when searching by name. + * + */ + @Import(name="exactMatch") + private @Nullable Boolean exactMatch; + + /** + * @return Whether to use exact match when searching by name. + * + */ + public Optional exactMatch() { + return Optional.ofNullable(this.exactMatch); + } + /** * Id for Application Key. * @@ -47,6 +63,7 @@ public Optional name() { private GetApplicationKeyPlainArgs() {} private GetApplicationKeyPlainArgs(GetApplicationKeyPlainArgs $) { + this.exactMatch = $.exactMatch; this.id = $.id; this.name = $.name; } @@ -69,6 +86,17 @@ public Builder(GetApplicationKeyPlainArgs defaults) { $ = new GetApplicationKeyPlainArgs(Objects.requireNonNull(defaults)); } + /** + * @param exactMatch Whether to use exact match when searching by name. + * + * @return builder + * + */ + public Builder exactMatch(@Nullable Boolean exactMatch) { + $.exactMatch = exactMatch; + return this; + } + /** * @param id Id for Application Key. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexDailyLimitResetArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexDailyLimitResetArgs.java new file mode 100644 index 000000000..f84699afd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexDailyLimitResetArgs.java @@ -0,0 +1,125 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class LogsIndexDailyLimitResetArgs extends com.pulumi.resources.ResourceArgs { + + public static final LogsIndexDailyLimitResetArgs Empty = new LogsIndexDailyLimitResetArgs(); + + /** + * String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + * + */ + @Import(name="resetTime", required=true) + private Output resetTime; + + /** + * @return String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + * + */ + public Output resetTime() { + return this.resetTime; + } + + /** + * String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + * + */ + @Import(name="resetUtcOffset", required=true) + private Output resetUtcOffset; + + /** + * @return String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + * + */ + public Output resetUtcOffset() { + return this.resetUtcOffset; + } + + private LogsIndexDailyLimitResetArgs() {} + + private LogsIndexDailyLimitResetArgs(LogsIndexDailyLimitResetArgs $) { + this.resetTime = $.resetTime; + this.resetUtcOffset = $.resetUtcOffset; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(LogsIndexDailyLimitResetArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private LogsIndexDailyLimitResetArgs $; + + public Builder() { + $ = new LogsIndexDailyLimitResetArgs(); + } + + public Builder(LogsIndexDailyLimitResetArgs defaults) { + $ = new LogsIndexDailyLimitResetArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param resetTime String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + * + * @return builder + * + */ + public Builder resetTime(Output resetTime) { + $.resetTime = resetTime; + return this; + } + + /** + * @param resetTime String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + * + * @return builder + * + */ + public Builder resetTime(String resetTime) { + return resetTime(Output.of(resetTime)); + } + + /** + * @param resetUtcOffset String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + * + * @return builder + * + */ + public Builder resetUtcOffset(Output resetUtcOffset) { + $.resetUtcOffset = resetUtcOffset; + return this; + } + + /** + * @param resetUtcOffset String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + * + * @return builder + * + */ + public Builder resetUtcOffset(String resetUtcOffset) { + return resetUtcOffset(Output.of(resetUtcOffset)); + } + + public LogsIndexDailyLimitResetArgs build() { + if ($.resetTime == null) { + throw new MissingRequiredPropertyException("LogsIndexDailyLimitResetArgs", "resetTime"); + } + if ($.resetUtcOffset == null) { + throw new MissingRequiredPropertyException("LogsIndexDailyLimitResetArgs", "resetUtcOffset"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexState.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexState.java index f906b2a68..b51b78634 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexState.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/LogsIndexState.java @@ -5,9 +5,11 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.LogsIndexDailyLimitResetArgs; import com.pulumi.datadog.inputs.LogsIndexExclusionFilterArgs; import com.pulumi.datadog.inputs.LogsIndexFilterArgs; import java.lang.Boolean; +import java.lang.Double; import java.lang.Integer; import java.lang.String; import java.util.List; @@ -35,6 +37,36 @@ public Optional> dailyLimit() { return Optional.ofNullable(this.dailyLimit); } + /** + * Object containing options to override the default daily limit reset time. + * + */ + @Import(name="dailyLimitReset") + private @Nullable Output dailyLimitReset; + + /** + * @return Object containing options to override the default daily limit reset time. + * + */ + public Optional> dailyLimitReset() { + return Optional.ofNullable(this.dailyLimitReset); + } + + /** + * A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + @Import(name="dailyLimitWarningThresholdPercentage") + private @Nullable Output dailyLimitWarningThresholdPercentage; + + /** + * @return A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + public Optional> dailyLimitWarningThresholdPercentage() { + return Optional.ofNullable(this.dailyLimitWarningThresholdPercentage); + } + /** * If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. * @@ -114,6 +146,8 @@ private LogsIndexState() {} private LogsIndexState(LogsIndexState $) { this.dailyLimit = $.dailyLimit; + this.dailyLimitReset = $.dailyLimitReset; + this.dailyLimitWarningThresholdPercentage = $.dailyLimitWarningThresholdPercentage; this.disableDailyLimit = $.disableDailyLimit; this.exclusionFilters = $.exclusionFilters; this.filters = $.filters; @@ -160,6 +194,48 @@ public Builder dailyLimit(Integer dailyLimit) { return dailyLimit(Output.of(dailyLimit)); } + /** + * @param dailyLimitReset Object containing options to override the default daily limit reset time. + * + * @return builder + * + */ + public Builder dailyLimitReset(@Nullable Output dailyLimitReset) { + $.dailyLimitReset = dailyLimitReset; + return this; + } + + /** + * @param dailyLimitReset Object containing options to override the default daily limit reset time. + * + * @return builder + * + */ + public Builder dailyLimitReset(LogsIndexDailyLimitResetArgs dailyLimitReset) { + return dailyLimitReset(Output.of(dailyLimitReset)); + } + + /** + * @param dailyLimitWarningThresholdPercentage A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + * @return builder + * + */ + public Builder dailyLimitWarningThresholdPercentage(@Nullable Output dailyLimitWarningThresholdPercentage) { + $.dailyLimitWarningThresholdPercentage = dailyLimitWarningThresholdPercentage; + return this; + } + + /** + * @param dailyLimitWarningThresholdPercentage A percentage threshold of the daily quota at which a Datadog warning event is generated. + * + * @return builder + * + */ + public Builder dailyLimitWarningThresholdPercentage(Double dailyLimitWarningThresholdPercentage) { + return dailyLimitWarningThresholdPercentage(Output.of(dailyLimitWarningThresholdPercentage)); + } + /** * @param disableDailyLimit If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/OpenapiApiState.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/OpenapiApiState.java new file mode 100644 index 000000000..cfe526d8b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/OpenapiApiState.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class OpenapiApiState extends com.pulumi.resources.ResourceArgs { + + public static final OpenapiApiState Empty = new OpenapiApiState(); + + /** + * The OpenAPI spec. + * + */ + @Import(name="spec") + private @Nullable Output spec; + + /** + * @return The OpenAPI spec. + * + */ + public Optional> spec() { + return Optional.ofNullable(this.spec); + } + + private OpenapiApiState() {} + + private OpenapiApiState(OpenapiApiState $) { + this.spec = $.spec; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(OpenapiApiState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private OpenapiApiState $; + + public Builder() { + $ = new OpenapiApiState(); + } + + public Builder(OpenapiApiState defaults) { + $ = new OpenapiApiState(Objects.requireNonNull(defaults)); + } + + /** + * @param spec The OpenAPI spec. + * + * @return builder + * + */ + public Builder spec(@Nullable Output spec) { + $.spec = spec; + return this; + } + + /** + * @param spec The OpenAPI spec. + * + * @return builder + * + */ + public Builder spec(String spec) { + return spec(Output.of(spec)); + } + + public OpenapiApiState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsArgs.java index 9667f74b6..c3437a562 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsArgs.java @@ -7,7 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.datadog.inputs.SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs; import com.pulumi.datadog.inputs.SecurityMonitoringRuleOptionsNewValueOptionsArgs; -import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.datadog.inputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs; import java.lang.Boolean; import java.lang.Integer; import java.lang.String; @@ -84,30 +84,30 @@ public Optional * Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. * */ - @Import(name="keepAlive", required=true) - private Output keepAlive; + @Import(name="keepAlive") + private @Nullable Output keepAlive; /** * @return Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. * */ - public Output keepAlive() { - return this.keepAlive; + public Optional> keepAlive() { + return Optional.ofNullable(this.keepAlive); } /** * A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. * */ - @Import(name="maxSignalDuration", required=true) - private Output maxSignalDuration; + @Import(name="maxSignalDuration") + private @Nullable Output maxSignalDuration; /** * @return A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. * */ - public Output maxSignalDuration() { - return this.maxSignalDuration; + public Optional> maxSignalDuration() { + return Optional.ofNullable(this.maxSignalDuration); } /** @@ -125,6 +125,21 @@ public Optional> newVal return Optional.ofNullable(this.newValueOptions); } + /** + * Options for rules using the third-party detection method. + * + */ + @Import(name="thirdPartyRuleOptions") + private @Nullable Output thirdPartyRuleOptions; + + /** + * @return Options for rules using the third-party detection method. + * + */ + public Optional> thirdPartyRuleOptions() { + return Optional.ofNullable(this.thirdPartyRuleOptions); + } + private SecurityMonitoringRuleOptionsArgs() {} private SecurityMonitoringRuleOptionsArgs(SecurityMonitoringRuleOptionsArgs $) { @@ -135,6 +150,7 @@ private SecurityMonitoringRuleOptionsArgs(SecurityMonitoringRuleOptionsArgs $) { this.keepAlive = $.keepAlive; this.maxSignalDuration = $.maxSignalDuration; this.newValueOptions = $.newValueOptions; + this.thirdPartyRuleOptions = $.thirdPartyRuleOptions; } public static Builder builder() { @@ -245,7 +261,7 @@ public Builder impossibleTravelOptions(SecurityMonitoringRuleOptionsImpossibleTr * @return builder * */ - public Builder keepAlive(Output keepAlive) { + public Builder keepAlive(@Nullable Output keepAlive) { $.keepAlive = keepAlive; return this; } @@ -266,7 +282,7 @@ public Builder keepAlive(Integer keepAlive) { * @return builder * */ - public Builder maxSignalDuration(Output maxSignalDuration) { + public Builder maxSignalDuration(@Nullable Output maxSignalDuration) { $.maxSignalDuration = maxSignalDuration; return this; } @@ -302,13 +318,28 @@ public Builder newValueOptions(SecurityMonitoringRuleOptionsNewValueOptionsArgs return newValueOptions(Output.of(newValueOptions)); } + /** + * @param thirdPartyRuleOptions Options for rules using the third-party detection method. + * + * @return builder + * + */ + public Builder thirdPartyRuleOptions(@Nullable Output thirdPartyRuleOptions) { + $.thirdPartyRuleOptions = thirdPartyRuleOptions; + return this; + } + + /** + * @param thirdPartyRuleOptions Options for rules using the third-party detection method. + * + * @return builder + * + */ + public Builder thirdPartyRuleOptions(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs thirdPartyRuleOptions) { + return thirdPartyRuleOptions(Output.of(thirdPartyRuleOptions)); + } + public SecurityMonitoringRuleOptionsArgs build() { - if ($.keepAlive == null) { - throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsArgs", "keepAlive"); - } - if ($.maxSignalDuration == null) { - throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsArgs", "maxSignalDuration"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.java new file mode 100644 index 000000000..1cba3a070 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs.java @@ -0,0 +1,223 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs extends com.pulumi.resources.ResourceArgs { + + public static final SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs Empty = new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs(); + + /** + * Notification targets for the default rule case, when none of the third-party cases match. + * + */ + @Import(name="defaultNotifications") + private @Nullable Output> defaultNotifications; + + /** + * @return Notification targets for the default rule case, when none of the third-party cases match. + * + */ + public Optional>> defaultNotifications() { + return Optional.ofNullable(this.defaultNotifications); + } + + /** + * Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + @Import(name="defaultStatus", required=true) + private Output defaultStatus; + + /** + * @return Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + public Output defaultStatus() { + return this.defaultStatus; + } + + /** + * Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + */ + @Import(name="rootQueries", required=true) + private Output> rootQueries; + + /** + * @return Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + */ + public Output> rootQueries() { + return this.rootQueries; + } + + /** + * A template for the signal title; if omitted, the title is generated based on the case name. + * + */ + @Import(name="signalTitleTemplate") + private @Nullable Output signalTitleTemplate; + + /** + * @return A template for the signal title; if omitted, the title is generated based on the case name. + * + */ + public Optional> signalTitleTemplate() { + return Optional.ofNullable(this.signalTitleTemplate); + } + + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs() {} + + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs $) { + this.defaultNotifications = $.defaultNotifications; + this.defaultStatus = $.defaultStatus; + this.rootQueries = $.rootQueries; + this.signalTitleTemplate = $.signalTitleTemplate; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs $; + + public Builder() { + $ = new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs(); + } + + public Builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs defaults) { + $ = new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param defaultNotifications Notification targets for the default rule case, when none of the third-party cases match. + * + * @return builder + * + */ + public Builder defaultNotifications(@Nullable Output> defaultNotifications) { + $.defaultNotifications = defaultNotifications; + return this; + } + + /** + * @param defaultNotifications Notification targets for the default rule case, when none of the third-party cases match. + * + * @return builder + * + */ + public Builder defaultNotifications(List defaultNotifications) { + return defaultNotifications(Output.of(defaultNotifications)); + } + + /** + * @param defaultNotifications Notification targets for the default rule case, when none of the third-party cases match. + * + * @return builder + * + */ + public Builder defaultNotifications(String... defaultNotifications) { + return defaultNotifications(List.of(defaultNotifications)); + } + + /** + * @param defaultStatus Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + * @return builder + * + */ + public Builder defaultStatus(Output defaultStatus) { + $.defaultStatus = defaultStatus; + return this; + } + + /** + * @param defaultStatus Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + * @return builder + * + */ + public Builder defaultStatus(String defaultStatus) { + return defaultStatus(Output.of(defaultStatus)); + } + + /** + * @param rootQueries Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + * @return builder + * + */ + public Builder rootQueries(Output> rootQueries) { + $.rootQueries = rootQueries; + return this; + } + + /** + * @param rootQueries Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + * @return builder + * + */ + public Builder rootQueries(List rootQueries) { + return rootQueries(Output.of(rootQueries)); + } + + /** + * @param rootQueries Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + * @return builder + * + */ + public Builder rootQueries(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs... rootQueries) { + return rootQueries(List.of(rootQueries)); + } + + /** + * @param signalTitleTemplate A template for the signal title; if omitted, the title is generated based on the case name. + * + * @return builder + * + */ + public Builder signalTitleTemplate(@Nullable Output signalTitleTemplate) { + $.signalTitleTemplate = signalTitleTemplate; + return this; + } + + /** + * @param signalTitleTemplate A template for the signal title; if omitted, the title is generated based on the case name. + * + * @return builder + * + */ + public Builder signalTitleTemplate(String signalTitleTemplate) { + return signalTitleTemplate(Output.of(signalTitleTemplate)); + } + + public SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs build() { + if ($.defaultStatus == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs", "defaultStatus"); + } + if ($.rootQueries == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs", "rootQueries"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.java new file mode 100644 index 000000000..a6af95b0f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs.java @@ -0,0 +1,135 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs extends com.pulumi.resources.ResourceArgs { + + public static final SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs Empty = new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs(); + + /** + * Fields to group by. If empty, each log triggers a signal. + * + */ + @Import(name="groupByFields") + private @Nullable Output> groupByFields; + + /** + * @return Fields to group by. If empty, each log triggers a signal. + * + */ + public Optional>> groupByFields() { + return Optional.ofNullable(this.groupByFields); + } + + /** + * Query for selecting logs to apply the filtering action. + * + */ + @Import(name="query", required=true) + private Output query; + + /** + * @return Query for selecting logs to apply the filtering action. + * + */ + public Output query() { + return this.query; + } + + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs() {} + + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs $) { + this.groupByFields = $.groupByFields; + this.query = $.query; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs $; + + public Builder() { + $ = new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs(); + } + + public Builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs defaults) { + $ = new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param groupByFields Fields to group by. If empty, each log triggers a signal. + * + * @return builder + * + */ + public Builder groupByFields(@Nullable Output> groupByFields) { + $.groupByFields = groupByFields; + return this; + } + + /** + * @param groupByFields Fields to group by. If empty, each log triggers a signal. + * + * @return builder + * + */ + public Builder groupByFields(List groupByFields) { + return groupByFields(Output.of(groupByFields)); + } + + /** + * @param groupByFields Fields to group by. If empty, each log triggers a signal. + * + * @return builder + * + */ + public Builder groupByFields(String... groupByFields) { + return groupByFields(List.of(groupByFields)); + } + + /** + * @param query Query for selecting logs to apply the filtering action. + * + * @return builder + * + */ + public Builder query(Output query) { + $.query = query; + return this; + } + + /** + * @param query Query for selecting logs to apply the filtering action. + * + * @return builder + * + */ + public Builder query(String query) { + return query(Output.of(query)); + } + + public SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs build() { + if ($.query == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs", "query"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleState.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleState.java index 461a2433f..70869b20f 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleState.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleState.java @@ -10,6 +10,7 @@ import com.pulumi.datadog.inputs.SecurityMonitoringRuleOptionsArgs; import com.pulumi.datadog.inputs.SecurityMonitoringRuleQueryArgs; import com.pulumi.datadog.inputs.SecurityMonitoringRuleSignalQueryArgs; +import com.pulumi.datadog.inputs.SecurityMonitoringRuleThirdPartyCaseArgs; import java.lang.Boolean; import java.lang.String; import java.util.List; @@ -172,6 +173,21 @@ public Optional>> tags() { return Optional.ofNullable(this.tags); } + /** + * Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + @Import(name="thirdPartyCases") + private @Nullable Output> thirdPartyCases; + + /** + * @return Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + public Optional>> thirdPartyCases() { + return Optional.ofNullable(this.thirdPartyCases); + } + /** * The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. * @@ -200,6 +216,7 @@ private SecurityMonitoringRuleState(SecurityMonitoringRuleState $) { this.queries = $.queries; this.signalQueries = $.signalQueries; this.tags = $.tags; + this.thirdPartyCases = $.thirdPartyCases; this.type = $.type; } @@ -481,6 +498,37 @@ public Builder tags(String... tags) { return tags(List.of(tags)); } + /** + * @param thirdPartyCases Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + * @return builder + * + */ + public Builder thirdPartyCases(@Nullable Output> thirdPartyCases) { + $.thirdPartyCases = thirdPartyCases; + return this; + } + + /** + * @param thirdPartyCases Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + * @return builder + * + */ + public Builder thirdPartyCases(List thirdPartyCases) { + return thirdPartyCases(Output.of(thirdPartyCases)); + } + + /** + * @param thirdPartyCases Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + * @return builder + * + */ + public Builder thirdPartyCases(SecurityMonitoringRuleThirdPartyCaseArgs... thirdPartyCases) { + return thirdPartyCases(List.of(thirdPartyCases)); + } + /** * @param type The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleThirdPartyCaseArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleThirdPartyCaseArgs.java new file mode 100644 index 000000000..f78f11487 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringRuleThirdPartyCaseArgs.java @@ -0,0 +1,209 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityMonitoringRuleThirdPartyCaseArgs extends com.pulumi.resources.ResourceArgs { + + public static final SecurityMonitoringRuleThirdPartyCaseArgs Empty = new SecurityMonitoringRuleThirdPartyCaseArgs(); + + /** + * Name of the case. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of the case. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Notification targets for each rule case. + * + */ + @Import(name="notifications") + private @Nullable Output> notifications; + + /** + * @return Notification targets for each rule case. + * + */ + public Optional>> notifications() { + return Optional.ofNullable(this.notifications); + } + + /** + * A query to associate a third-party event to this case. + * + */ + @Import(name="query") + private @Nullable Output query; + + /** + * @return A query to associate a third-party event to this case. + * + */ + public Optional> query() { + return Optional.ofNullable(this.query); + } + + /** + * Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + @Import(name="status", required=true) + private Output status; + + /** + * @return Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + public Output status() { + return this.status; + } + + private SecurityMonitoringRuleThirdPartyCaseArgs() {} + + private SecurityMonitoringRuleThirdPartyCaseArgs(SecurityMonitoringRuleThirdPartyCaseArgs $) { + this.name = $.name; + this.notifications = $.notifications; + this.query = $.query; + this.status = $.status; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityMonitoringRuleThirdPartyCaseArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityMonitoringRuleThirdPartyCaseArgs $; + + public Builder() { + $ = new SecurityMonitoringRuleThirdPartyCaseArgs(); + } + + public Builder(SecurityMonitoringRuleThirdPartyCaseArgs defaults) { + $ = new SecurityMonitoringRuleThirdPartyCaseArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param name Name of the case. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of the case. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param notifications Notification targets for each rule case. + * + * @return builder + * + */ + public Builder notifications(@Nullable Output> notifications) { + $.notifications = notifications; + return this; + } + + /** + * @param notifications Notification targets for each rule case. + * + * @return builder + * + */ + public Builder notifications(List notifications) { + return notifications(Output.of(notifications)); + } + + /** + * @param notifications Notification targets for each rule case. + * + * @return builder + * + */ + public Builder notifications(String... notifications) { + return notifications(List.of(notifications)); + } + + /** + * @param query A query to associate a third-party event to this case. + * + * @return builder + * + */ + public Builder query(@Nullable Output query) { + $.query = query; + return this; + } + + /** + * @param query A query to associate a third-party event to this case. + * + * @return builder + * + */ + public Builder query(String query) { + return query(Output.of(query)); + } + + /** + * @param status Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + * @return builder + * + */ + public Builder status(Output status) { + $.status = status; + return this; + } + + /** + * @param status Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + * @return builder + * + */ + public Builder status(String status) { + return status(Output.of(status)); + } + + public SecurityMonitoringRuleThirdPartyCaseArgs build() { + if ($.status == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleThirdPartyCaseArgs", "status"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringSuppressionState.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringSuppressionState.java new file mode 100644 index 000000000..8ec754960 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SecurityMonitoringSuppressionState.java @@ -0,0 +1,269 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityMonitoringSuppressionState extends com.pulumi.resources.ResourceArgs { + + public static final SecurityMonitoringSuppressionState Empty = new SecurityMonitoringSuppressionState(); + + /** + * A description for the suppression rule. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return A description for the suppression rule. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Whether the suppression rule is enabled. + * + */ + @Import(name="enabled") + private @Nullable Output enabled; + + /** + * @return Whether the suppression rule is enabled. + * + */ + public Optional> enabled() { + return Optional.ofNullable(this.enabled); + } + + /** + * A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + */ + @Import(name="expirationDate") + private @Nullable Output expirationDate; + + /** + * @return A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + */ + public Optional> expirationDate() { + return Optional.ofNullable(this.expirationDate); + } + + /** + * The name of the suppression rule. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the suppression rule. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + */ + @Import(name="ruleQuery") + private @Nullable Output ruleQuery; + + /** + * @return The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + */ + public Optional> ruleQuery() { + return Optional.ofNullable(this.ruleQuery); + } + + /** + * The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + */ + @Import(name="suppressionQuery") + private @Nullable Output suppressionQuery; + + /** + * @return The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + */ + public Optional> suppressionQuery() { + return Optional.ofNullable(this.suppressionQuery); + } + + private SecurityMonitoringSuppressionState() {} + + private SecurityMonitoringSuppressionState(SecurityMonitoringSuppressionState $) { + this.description = $.description; + this.enabled = $.enabled; + this.expirationDate = $.expirationDate; + this.name = $.name; + this.ruleQuery = $.ruleQuery; + this.suppressionQuery = $.suppressionQuery; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityMonitoringSuppressionState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityMonitoringSuppressionState $; + + public Builder() { + $ = new SecurityMonitoringSuppressionState(); + } + + public Builder(SecurityMonitoringSuppressionState defaults) { + $ = new SecurityMonitoringSuppressionState(Objects.requireNonNull(defaults)); + } + + /** + * @param description A description for the suppression rule. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description A description for the suppression rule. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param enabled Whether the suppression rule is enabled. + * + * @return builder + * + */ + public Builder enabled(@Nullable Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled Whether the suppression rule is enabled. + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + /** + * @param expirationDate A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + * @return builder + * + */ + public Builder expirationDate(@Nullable Output expirationDate) { + $.expirationDate = expirationDate; + return this; + } + + /** + * @param expirationDate A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + * + * @return builder + * + */ + public Builder expirationDate(String expirationDate) { + return expirationDate(Output.of(expirationDate)); + } + + /** + * @param name The name of the suppression rule. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the suppression rule. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param ruleQuery The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + * @return builder + * + */ + public Builder ruleQuery(@Nullable Output ruleQuery) { + $.ruleQuery = ruleQuery; + return this; + } + + /** + * @param ruleQuery The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + * + * @return builder + * + */ + public Builder ruleQuery(String ruleQuery) { + return ruleQuery(Output.of(ruleQuery)); + } + + /** + * @param suppressionQuery The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + * @return builder + * + */ + public Builder suppressionQuery(@Nullable Output suppressionQuery) { + $.suppressionQuery = suppressionQuery; + return this; + } + + /** + * @param suppressionQuery The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + * + * @return builder + * + */ + public Builder suppressionQuery(String suppressionQuery) { + return suppressionQuery(Output.of(suppressionQuery)); + } + + public SecurityMonitoringSuppressionState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.java new file mode 100644 index 000000000..096a597d7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleIncludedKeywordConfigurationArgs.java @@ -0,0 +1,137 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Objects; + + +public final class SensitiveDataScannerRuleIncludedKeywordConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final SensitiveDataScannerRuleIncludedKeywordConfigurationArgs Empty = new SensitiveDataScannerRuleIncludedKeywordConfigurationArgs(); + + /** + * Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + * + */ + @Import(name="characterCount", required=true) + private Output characterCount; + + /** + * @return Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + * + */ + public Output characterCount() { + return this.characterCount; + } + + /** + * Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + * + */ + @Import(name="keywords", required=true) + private Output> keywords; + + /** + * @return Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + * + */ + public Output> keywords() { + return this.keywords; + } + + private SensitiveDataScannerRuleIncludedKeywordConfigurationArgs() {} + + private SensitiveDataScannerRuleIncludedKeywordConfigurationArgs(SensitiveDataScannerRuleIncludedKeywordConfigurationArgs $) { + this.characterCount = $.characterCount; + this.keywords = $.keywords; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SensitiveDataScannerRuleIncludedKeywordConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SensitiveDataScannerRuleIncludedKeywordConfigurationArgs $; + + public Builder() { + $ = new SensitiveDataScannerRuleIncludedKeywordConfigurationArgs(); + } + + public Builder(SensitiveDataScannerRuleIncludedKeywordConfigurationArgs defaults) { + $ = new SensitiveDataScannerRuleIncludedKeywordConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param characterCount Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + * + * @return builder + * + */ + public Builder characterCount(Output characterCount) { + $.characterCount = characterCount; + return this; + } + + /** + * @param characterCount Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + * + * @return builder + * + */ + public Builder characterCount(Integer characterCount) { + return characterCount(Output.of(characterCount)); + } + + /** + * @param keywords Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + * + * @return builder + * + */ + public Builder keywords(Output> keywords) { + $.keywords = keywords; + return this; + } + + /** + * @param keywords Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + * + * @return builder + * + */ + public Builder keywords(List keywords) { + return keywords(Output.of(keywords)); + } + + /** + * @param keywords Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + * + * @return builder + * + */ + public Builder keywords(String... keywords) { + return keywords(List.of(keywords)); + } + + public SensitiveDataScannerRuleIncludedKeywordConfigurationArgs build() { + if ($.characterCount == null) { + throw new MissingRequiredPropertyException("SensitiveDataScannerRuleIncludedKeywordConfigurationArgs", "characterCount"); + } + if ($.keywords == null) { + throw new MissingRequiredPropertyException("SensitiveDataScannerRuleIncludedKeywordConfigurationArgs", "keywords"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleState.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleState.java index 337a7801f..65922f355 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleState.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/SensitiveDataScannerRuleState.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs; import com.pulumi.datadog.inputs.SensitiveDataScannerRuleTextReplacementArgs; import java.lang.Boolean; import java.lang.String; @@ -63,6 +64,21 @@ public Optional> groupId() { return Optional.ofNullable(this.groupId); } + /** + * Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + */ + @Import(name="includedKeywordConfiguration") + private @Nullable Output includedKeywordConfiguration; + + /** + * @return Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + */ + public Optional> includedKeywordConfiguration() { + return Optional.ofNullable(this.includedKeywordConfiguration); + } + /** * Whether or not the rule is enabled. * @@ -174,6 +190,7 @@ private SensitiveDataScannerRuleState(SensitiveDataScannerRuleState $) { this.description = $.description; this.excludedNamespaces = $.excludedNamespaces; this.groupId = $.groupId; + this.includedKeywordConfiguration = $.includedKeywordConfiguration; this.isEnabled = $.isEnabled; this.name = $.name; this.namespaces = $.namespaces; @@ -274,6 +291,27 @@ public Builder groupId(String groupId) { return groupId(Output.of(groupId)); } + /** + * @param includedKeywordConfiguration Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + * @return builder + * + */ + public Builder includedKeywordConfiguration(@Nullable Output includedKeywordConfiguration) { + $.includedKeywordConfiguration = includedKeywordConfiguration; + return this; + } + + /** + * @param includedKeywordConfiguration Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + * + * @return builder + * + */ + public Builder includedKeywordConfiguration(SensitiveDataScannerRuleIncludedKeywordConfigurationArgs includedKeywordConfiguration) { + return includedKeywordConfiguration(Output.of(includedKeywordConfiguration)); + } + /** * @param isEnabled Whether or not the rule is enabled. * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationArgs.java new file mode 100644 index 000000000..8cecbf4be --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceArgs; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.util.Objects; + + +public final class ServiceLevelObjectiveSliSpecificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final ServiceLevelObjectiveSliSpecificationArgs Empty = new ServiceLevelObjectiveSliSpecificationArgs(); + + /** + * The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + * + */ + @Import(name="timeSlice", required=true) + private Output timeSlice; + + /** + * @return The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + * + */ + public Output timeSlice() { + return this.timeSlice; + } + + private ServiceLevelObjectiveSliSpecificationArgs() {} + + private ServiceLevelObjectiveSliSpecificationArgs(ServiceLevelObjectiveSliSpecificationArgs $) { + this.timeSlice = $.timeSlice; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceLevelObjectiveSliSpecificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationArgs $; + + public Builder() { + $ = new ServiceLevelObjectiveSliSpecificationArgs(); + } + + public Builder(ServiceLevelObjectiveSliSpecificationArgs defaults) { + $ = new ServiceLevelObjectiveSliSpecificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param timeSlice The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + * + * @return builder + * + */ + public Builder timeSlice(Output timeSlice) { + $.timeSlice = timeSlice; + return this; + } + + /** + * @param timeSlice The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + * + * @return builder + * + */ + public Builder timeSlice(ServiceLevelObjectiveSliSpecificationTimeSliceArgs timeSlice) { + return timeSlice(Output.of(timeSlice)); + } + + public ServiceLevelObjectiveSliSpecificationArgs build() { + if ($.timeSlice == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationArgs", "timeSlice"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.java new file mode 100644 index 000000000..a618ebdee --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceArgs.java @@ -0,0 +1,167 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Double; +import java.lang.String; +import java.util.Objects; + + +public final class ServiceLevelObjectiveSliSpecificationTimeSliceArgs extends com.pulumi.resources.ResourceArgs { + + public static final ServiceLevelObjectiveSliSpecificationTimeSliceArgs Empty = new ServiceLevelObjectiveSliSpecificationTimeSliceArgs(); + + /** + * The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + * + */ + @Import(name="comparator", required=true) + private Output comparator; + + /** + * @return The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + * + */ + public Output comparator() { + return this.comparator; + } + + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + @Import(name="query", required=true) + private Output query; + + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + public Output query() { + return this.query; + } + + /** + * The threshold value to which each SLI value will be compared. + * + */ + @Import(name="threshold", required=true) + private Output threshold; + + /** + * @return The threshold value to which each SLI value will be compared. + * + */ + public Output threshold() { + return this.threshold; + } + + private ServiceLevelObjectiveSliSpecificationTimeSliceArgs() {} + + private ServiceLevelObjectiveSliSpecificationTimeSliceArgs(ServiceLevelObjectiveSliSpecificationTimeSliceArgs $) { + this.comparator = $.comparator; + this.query = $.query; + this.threshold = $.threshold; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationTimeSliceArgs $; + + public Builder() { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceArgs(); + } + + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceArgs defaults) { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param comparator The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + * + * @return builder + * + */ + public Builder comparator(Output comparator) { + $.comparator = comparator; + return this; + } + + /** + * @param comparator The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + * + * @return builder + * + */ + public Builder comparator(String comparator) { + return comparator(Output.of(comparator)); + } + + /** + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + * @return builder + * + */ + public Builder query(Output query) { + $.query = query; + return this; + } + + /** + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + * @return builder + * + */ + public Builder query(ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs query) { + return query(Output.of(query)); + } + + /** + * @param threshold The threshold value to which each SLI value will be compared. + * + * @return builder + * + */ + public Builder threshold(Output threshold) { + $.threshold = threshold; + return this; + } + + /** + * @param threshold The threshold value to which each SLI value will be compared. + * + * @return builder + * + */ + public Builder threshold(Double threshold) { + return threshold(Output.of(threshold)); + } + + public ServiceLevelObjectiveSliSpecificationTimeSliceArgs build() { + if ($.comparator == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceArgs", "comparator"); + } + if ($.query == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceArgs", "query"); + } + if ($.threshold == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceArgs", "threshold"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.java new file mode 100644 index 000000000..c8eef022e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs.java @@ -0,0 +1,137 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs; +import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.util.List; +import java.util.Objects; + + +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs extends com.pulumi.resources.ResourceArgs { + + public static final ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs Empty = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs(); + + /** + * A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + * + */ + @Import(name="formula", required=true) + private Output formula; + + /** + * @return A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + * + */ + public Output formula() { + return this.formula; + } + + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + @Import(name="queries", required=true) + private Output> queries; + + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + public Output> queries() { + return this.queries; + } + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs() {} + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs(ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs $) { + this.formula = $.formula; + this.queries = $.queries; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs $; + + public Builder() { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs(); + } + + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs defaults) { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param formula A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + * + * @return builder + * + */ + public Builder formula(Output formula) { + $.formula = formula; + return this; + } + + /** + * @param formula A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + * + * @return builder + * + */ + public Builder formula(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs formula) { + return formula(Output.of(formula)); + } + + /** + * @param queries A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + * @return builder + * + */ + public Builder queries(Output> queries) { + $.queries = queries; + return this; + } + + /** + * @param queries A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + * @return builder + * + */ + public Builder queries(List queries) { + return queries(Output.of(queries)); + } + + /** + * @param queries A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + * @return builder + * + */ + public Builder queries(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs... queries) { + return queries(List.of(queries)); + } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs build() { + if ($.formula == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs", "formula"); + } + if ($.queries == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs", "queries"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.java new file mode 100644 index 000000000..dd56a5235 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs extends com.pulumi.resources.ResourceArgs { + + public static final ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs Empty = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs(); + + /** + * The formula string, which is an expression involving named queries. + * + */ + @Import(name="formulaExpression", required=true) + private Output formulaExpression; + + /** + * @return The formula string, which is an expression involving named queries. + * + */ + public Output formulaExpression() { + return this.formulaExpression; + } + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs() {} + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs $) { + this.formulaExpression = $.formulaExpression; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs $; + + public Builder() { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs(); + } + + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs defaults) { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param formulaExpression The formula string, which is an expression involving named queries. + * + * @return builder + * + */ + public Builder formulaExpression(Output formulaExpression) { + $.formulaExpression = formulaExpression; + return this; + } + + /** + * @param formulaExpression The formula string, which is an expression involving named queries. + * + * @return builder + * + */ + public Builder formulaExpression(String formulaExpression) { + return formulaExpression(Output.of(formulaExpression)); + } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs build() { + if ($.formulaExpression == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs", "formulaExpression"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.java new file mode 100644 index 000000000..7be9d806d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs extends com.pulumi.resources.ResourceArgs { + + public static final ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs Empty = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs(); + + /** + * A timeseries formula and functions metrics query. + * + */ + @Import(name="metricQuery") + private @Nullable Output metricQuery; + + /** + * @return A timeseries formula and functions metrics query. + * + */ + public Optional> metricQuery() { + return Optional.ofNullable(this.metricQuery); + } + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs() {} + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs $) { + this.metricQuery = $.metricQuery; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs $; + + public Builder() { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs(); + } + + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs defaults) { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param metricQuery A timeseries formula and functions metrics query. + * + * @return builder + * + */ + public Builder metricQuery(@Nullable Output metricQuery) { + $.metricQuery = metricQuery; + return this; + } + + /** + * @param metricQuery A timeseries formula and functions metrics query. + * + * @return builder + * + */ + public Builder metricQuery(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs metricQuery) { + return metricQuery(Output.of(metricQuery)); + } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.java new file mode 100644 index 000000000..85db5d5dd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs.java @@ -0,0 +1,164 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs extends com.pulumi.resources.ResourceArgs { + + public static final ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs Empty = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs(); + + /** + * The data source for metrics queries. Defaults to `"metrics"`. + * + */ + @Import(name="dataSource") + private @Nullable Output dataSource; + + /** + * @return The data source for metrics queries. Defaults to `"metrics"`. + * + */ + public Optional> dataSource() { + return Optional.ofNullable(this.dataSource); + } + + /** + * The name of the query for use in formulas. + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The name of the query for use in formulas. + * + */ + public Output name() { + return this.name; + } + + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + @Import(name="query", required=true) + private Output query; + + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + public Output query() { + return this.query; + } + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs() {} + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs $) { + this.dataSource = $.dataSource; + this.name = $.name; + this.query = $.query; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs $; + + public Builder() { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs(); + } + + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs defaults) { + $ = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dataSource The data source for metrics queries. Defaults to `"metrics"`. + * + * @return builder + * + */ + public Builder dataSource(@Nullable Output dataSource) { + $.dataSource = dataSource; + return this; + } + + /** + * @param dataSource The data source for metrics queries. Defaults to `"metrics"`. + * + * @return builder + * + */ + public Builder dataSource(String dataSource) { + return dataSource(Output.of(dataSource)); + } + + /** + * @param name The name of the query for use in formulas. + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the query for use in formulas. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + * @return builder + * + */ + public Builder query(Output query) { + $.query = query; + return this; + } + + /** + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + * @return builder + * + */ + public Builder query(String query) { + return query(Output.of(query)); + } + + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs build() { + if ($.name == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs", "name"); + } + if ($.query == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs", "query"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveState.java b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveState.java index cd776b5fd..a3b9e4ed6 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveState.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/inputs/ServiceLevelObjectiveState.java @@ -6,6 +6,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.datadog.inputs.ServiceLevelObjectiveQueryArgs; +import com.pulumi.datadog.inputs.ServiceLevelObjectiveSliSpecificationArgs; import com.pulumi.datadog.inputs.ServiceLevelObjectiveThresholdArgs; import java.lang.Boolean; import java.lang.Double; @@ -82,14 +83,14 @@ public Optional>> monitorIds() { } /** - * Name of Datadog service level objective + * The name of the query for use in formulas. * */ @Import(name="name") private @Nullable Output name; /** - * @return Name of Datadog service level objective + * @return The name of the query for use in formulas. * */ public Optional> name() { @@ -97,20 +98,35 @@ public Optional> name() { } /** - * The metric query of good / total events + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * */ @Import(name="query") private @Nullable Output query; /** - * @return The metric query of good / total events + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * */ public Optional> query() { return Optional.ofNullable(this.query); } + /** + * A map of SLI specifications to use as part of the SLO. + * + */ + @Import(name="sliSpecification") + private @Nullable Output sliSpecification; + + /** + * @return A map of SLI specifications to use as part of the SLO. + * + */ + public Optional> sliSpecification() { + return Optional.ofNullable(this.sliSpecification); + } + /** * A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API * @@ -225,6 +241,7 @@ private ServiceLevelObjectiveState(ServiceLevelObjectiveState $) { this.monitorIds = $.monitorIds; this.name = $.name; this.query = $.query; + this.sliSpecification = $.sliSpecification; this.tags = $.tags; this.targetThreshold = $.targetThreshold; this.thresholds = $.thresholds; @@ -357,7 +374,7 @@ public Builder monitorIds(Integer... monitorIds) { } /** - * @param name Name of Datadog service level objective + * @param name The name of the query for use in formulas. * * @return builder * @@ -368,7 +385,7 @@ public Builder name(@Nullable Output name) { } /** - * @param name Name of Datadog service level objective + * @param name The name of the query for use in formulas. * * @return builder * @@ -378,7 +395,7 @@ public Builder name(String name) { } /** - * @param query The metric query of good / total events + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * * @return builder * @@ -389,7 +406,7 @@ public Builder query(@Nullable Output query) { } /** - * @param query The metric query of good / total events + * @param query A timeseries query, containing named data-source-specific queries and a formula involving the named queries. * * @return builder * @@ -398,6 +415,27 @@ public Builder query(ServiceLevelObjectiveQueryArgs query) { return query(Output.of(query)); } + /** + * @param sliSpecification A map of SLI specifications to use as part of the SLO. + * + * @return builder + * + */ + public Builder sliSpecification(@Nullable Output sliSpecification) { + $.sliSpecification = sliSpecification; + return this; + } + + /** + * @param sliSpecification A map of SLI specifications to use as part of the SLO. + * + * @return builder + * + */ + public Builder sliSpecification(ServiceLevelObjectiveSliSpecificationArgs sliSpecification) { + return sliSpecification(Output.of(sliSpecification)); + } + /** * @param tags A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API * diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApiKeyResult.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApiKeyResult.java index 0e2df9e8f..3b783a07e 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApiKeyResult.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApiKeyResult.java @@ -5,6 +5,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -12,6 +13,11 @@ @CustomType public final class GetApiKeyResult { + /** + * @return Whether to use exact match when searching by name. + * + */ + private @Nullable Boolean exactMatch; /** * @return The ID of this resource. * @@ -29,6 +35,13 @@ public final class GetApiKeyResult { private @Nullable String name; private GetApiKeyResult() {} + /** + * @return Whether to use exact match when searching by name. + * + */ + public Optional exactMatch() { + return Optional.ofNullable(this.exactMatch); + } /** * @return The ID of this resource. * @@ -60,17 +73,25 @@ public static Builder builder(GetApiKeyResult defaults) { } @CustomType.Builder public static final class Builder { + private @Nullable Boolean exactMatch; private @Nullable String id; private String key; private @Nullable String name; public Builder() {} public Builder(GetApiKeyResult defaults) { Objects.requireNonNull(defaults); + this.exactMatch = defaults.exactMatch; this.id = defaults.id; this.key = defaults.key; this.name = defaults.name; } + @CustomType.Setter + public Builder exactMatch(@Nullable Boolean exactMatch) { + + this.exactMatch = exactMatch; + return this; + } @CustomType.Setter public Builder id(@Nullable String id) { @@ -93,6 +114,7 @@ public Builder name(@Nullable String name) { } public GetApiKeyResult build() { final var _resultValue = new GetApiKeyResult(); + _resultValue.exactMatch = exactMatch; _resultValue.id = id; _resultValue.key = key; _resultValue.name = name; diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApplicationKeyResult.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApplicationKeyResult.java index 3e9287567..5f8463594 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApplicationKeyResult.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetApplicationKeyResult.java @@ -5,6 +5,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -12,6 +13,11 @@ @CustomType public final class GetApplicationKeyResult { + /** + * @return Whether to use exact match when searching by name. + * + */ + private @Nullable Boolean exactMatch; /** * @return Id for Application Key. * @@ -29,6 +35,13 @@ public final class GetApplicationKeyResult { private @Nullable String name; private GetApplicationKeyResult() {} + /** + * @return Whether to use exact match when searching by name. + * + */ + public Optional exactMatch() { + return Optional.ofNullable(this.exactMatch); + } /** * @return Id for Application Key. * @@ -60,17 +73,25 @@ public static Builder builder(GetApplicationKeyResult defaults) { } @CustomType.Builder public static final class Builder { + private @Nullable Boolean exactMatch; private @Nullable String id; private String key; private @Nullable String name; public Builder() {} public Builder(GetApplicationKeyResult defaults) { Objects.requireNonNull(defaults); + this.exactMatch = defaults.exactMatch; this.id = defaults.id; this.key = defaults.key; this.name = defaults.name; } + @CustomType.Setter + public Builder exactMatch(@Nullable Boolean exactMatch) { + + this.exactMatch = exactMatch; + return this; + } @CustomType.Setter public Builder id(@Nullable String id) { @@ -93,6 +114,7 @@ public Builder name(@Nullable String name) { } public GetApplicationKeyResult build() { final var _resultValue = new GetApplicationKeyResult(); + _resultValue.exactMatch = exactMatch; _resultValue.id = id; _resultValue.key = key; _resultValue.name = name; diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndex.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndex.java index 4898a9974..c373aed22 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndex.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndex.java @@ -4,9 +4,11 @@ package com.pulumi.datadog.outputs; import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.GetLogsIndexesLogsIndexDailyLimitReset; import com.pulumi.datadog.outputs.GetLogsIndexesLogsIndexExclusionFilter; import com.pulumi.datadog.outputs.GetLogsIndexesLogsIndexFilter; import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Double; import java.lang.Integer; import java.lang.String; import java.util.List; @@ -19,6 +21,16 @@ public final class GetLogsIndexesLogsIndex { * */ private Integer dailyLimit; + /** + * @return Object containing options to override the default daily limit reset time. + * + */ + private List dailyLimitResets; + /** + * @return The percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + private Double dailyLimitWarningThresholdPercentage; /** * @return List of exclusion filters. * @@ -48,6 +60,20 @@ private GetLogsIndexesLogsIndex() {} public Integer dailyLimit() { return this.dailyLimit; } + /** + * @return Object containing options to override the default daily limit reset time. + * + */ + public List dailyLimitResets() { + return this.dailyLimitResets; + } + /** + * @return The percentage threshold of the daily quota at which a Datadog warning event is generated. + * + */ + public Double dailyLimitWarningThresholdPercentage() { + return this.dailyLimitWarningThresholdPercentage; + } /** * @return List of exclusion filters. * @@ -87,6 +113,8 @@ public static Builder builder(GetLogsIndexesLogsIndex defaults) { @CustomType.Builder public static final class Builder { private Integer dailyLimit; + private List dailyLimitResets; + private Double dailyLimitWarningThresholdPercentage; private List exclusionFilters; private List filters; private String name; @@ -95,6 +123,8 @@ public Builder() {} public Builder(GetLogsIndexesLogsIndex defaults) { Objects.requireNonNull(defaults); this.dailyLimit = defaults.dailyLimit; + this.dailyLimitResets = defaults.dailyLimitResets; + this.dailyLimitWarningThresholdPercentage = defaults.dailyLimitWarningThresholdPercentage; this.exclusionFilters = defaults.exclusionFilters; this.filters = defaults.filters; this.name = defaults.name; @@ -110,6 +140,25 @@ public Builder dailyLimit(Integer dailyLimit) { return this; } @CustomType.Setter + public Builder dailyLimitResets(List dailyLimitResets) { + if (dailyLimitResets == null) { + throw new MissingRequiredPropertyException("GetLogsIndexesLogsIndex", "dailyLimitResets"); + } + this.dailyLimitResets = dailyLimitResets; + return this; + } + public Builder dailyLimitResets(GetLogsIndexesLogsIndexDailyLimitReset... dailyLimitResets) { + return dailyLimitResets(List.of(dailyLimitResets)); + } + @CustomType.Setter + public Builder dailyLimitWarningThresholdPercentage(Double dailyLimitWarningThresholdPercentage) { + if (dailyLimitWarningThresholdPercentage == null) { + throw new MissingRequiredPropertyException("GetLogsIndexesLogsIndex", "dailyLimitWarningThresholdPercentage"); + } + this.dailyLimitWarningThresholdPercentage = dailyLimitWarningThresholdPercentage; + return this; + } + @CustomType.Setter public Builder exclusionFilters(List exclusionFilters) { if (exclusionFilters == null) { throw new MissingRequiredPropertyException("GetLogsIndexesLogsIndex", "exclusionFilters"); @@ -150,6 +199,8 @@ public Builder retentionDays(Integer retentionDays) { public GetLogsIndexesLogsIndex build() { final var _resultValue = new GetLogsIndexesLogsIndex(); _resultValue.dailyLimit = dailyLimit; + _resultValue.dailyLimitResets = dailyLimitResets; + _resultValue.dailyLimitWarningThresholdPercentage = dailyLimitWarningThresholdPercentage; _resultValue.exclusionFilters = exclusionFilters; _resultValue.filters = filters; _resultValue.name = name; diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndexDailyLimitReset.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndexDailyLimitReset.java new file mode 100644 index 000000000..ec1a9e677 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetLogsIndexesLogsIndexDailyLimitReset.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetLogsIndexesLogsIndexDailyLimitReset { + /** + * @return String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + * + */ + private String resetTime; + /** + * @return String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + * + */ + private String resetUtcOffset; + + private GetLogsIndexesLogsIndexDailyLimitReset() {} + /** + * @return String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + * + */ + public String resetTime() { + return this.resetTime; + } + /** + * @return String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + * + */ + public String resetUtcOffset() { + return this.resetUtcOffset; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetLogsIndexesLogsIndexDailyLimitReset defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String resetTime; + private String resetUtcOffset; + public Builder() {} + public Builder(GetLogsIndexesLogsIndexDailyLimitReset defaults) { + Objects.requireNonNull(defaults); + this.resetTime = defaults.resetTime; + this.resetUtcOffset = defaults.resetUtcOffset; + } + + @CustomType.Setter + public Builder resetTime(String resetTime) { + if (resetTime == null) { + throw new MissingRequiredPropertyException("GetLogsIndexesLogsIndexDailyLimitReset", "resetTime"); + } + this.resetTime = resetTime; + return this; + } + @CustomType.Setter + public Builder resetUtcOffset(String resetUtcOffset) { + if (resetUtcOffset == null) { + throw new MissingRequiredPropertyException("GetLogsIndexesLogsIndexDailyLimitReset", "resetUtcOffset"); + } + this.resetUtcOffset = resetUtcOffset; + return this; + } + public GetLogsIndexesLogsIndexDailyLimitReset build() { + final var _resultValue = new GetLogsIndexesLogsIndexDailyLimitReset(); + _resultValue.resetTime = resetTime; + _resultValue.resetUtcOffset = resetUtcOffset; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRule.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRule.java index a28e56ecc..207571abe 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRule.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRule.java @@ -9,6 +9,7 @@ import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleOptions; import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleQuery; import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleSignalQuery; +import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleThirdPartyCase; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; import java.lang.String; @@ -23,7 +24,7 @@ public final class GetSecurityMonitoringRulesRule { * @return Cases for generating signals. * */ - private List cases; + private @Nullable List cases; /** * @return Whether the rule is enabled. * @@ -69,6 +70,11 @@ public final class GetSecurityMonitoringRulesRule { * */ private @Nullable List tags; + /** + * @return Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + private @Nullable List thirdPartyCases; /** * @return The rule type. * @@ -81,7 +87,7 @@ private GetSecurityMonitoringRulesRule() {} * */ public List cases() { - return this.cases; + return this.cases == null ? List.of() : this.cases; } /** * @return Whether the rule is enabled. @@ -146,6 +152,13 @@ public List signalQueries() { public List tags() { return this.tags == null ? List.of() : this.tags; } + /** + * @return Cases for generating signals for third-party rules. Only required and accepted for third-party rules + * + */ + public List thirdPartyCases() { + return this.thirdPartyCases == null ? List.of() : this.thirdPartyCases; + } /** * @return The rule type. * @@ -163,7 +176,7 @@ public static Builder builder(GetSecurityMonitoringRulesRule defaults) { } @CustomType.Builder public static final class Builder { - private List cases; + private @Nullable List cases; private @Nullable Boolean enabled; private @Nullable List filters; private @Nullable Boolean hasExtendedTitle; @@ -173,6 +186,7 @@ public static final class Builder { private @Nullable List queries; private @Nullable List signalQueries; private @Nullable List tags; + private @Nullable List thirdPartyCases; private @Nullable String type; public Builder() {} public Builder(GetSecurityMonitoringRulesRule defaults) { @@ -187,14 +201,13 @@ public Builder(GetSecurityMonitoringRulesRule defaults) { this.queries = defaults.queries; this.signalQueries = defaults.signalQueries; this.tags = defaults.tags; + this.thirdPartyCases = defaults.thirdPartyCases; this.type = defaults.type; } @CustomType.Setter - public Builder cases(List cases) { - if (cases == null) { - throw new MissingRequiredPropertyException("GetSecurityMonitoringRulesRule", "cases"); - } + public Builder cases(@Nullable List cases) { + this.cases = cases; return this; } @@ -272,6 +285,15 @@ public Builder tags(String... tags) { return tags(List.of(tags)); } @CustomType.Setter + public Builder thirdPartyCases(@Nullable List thirdPartyCases) { + + this.thirdPartyCases = thirdPartyCases; + return this; + } + public Builder thirdPartyCases(GetSecurityMonitoringRulesRuleThirdPartyCase... thirdPartyCases) { + return thirdPartyCases(List.of(thirdPartyCases)); + } + @CustomType.Setter public Builder type(@Nullable String type) { this.type = type; @@ -289,6 +311,7 @@ public GetSecurityMonitoringRulesRule build() { _resultValue.queries = queries; _resultValue.signalQueries = signalQueries; _resultValue.tags = tags; + _resultValue.thirdPartyCases = thirdPartyCases; _resultValue.type = type; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptions.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptions.java index 979898674..2db5f1b92 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptions.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptions.java @@ -6,7 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions; import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptions; -import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions; import java.lang.Boolean; import java.lang.Integer; import java.lang.String; @@ -40,17 +40,22 @@ public final class GetSecurityMonitoringRulesRuleOptions { * @return Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). * */ - private Integer keepAlive; + private @Nullable Integer keepAlive; /** * @return A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. * */ - private Integer maxSignalDuration; + private @Nullable Integer maxSignalDuration; /** * @return New value rules specific options. * */ private @Nullable GetSecurityMonitoringRulesRuleOptionsNewValueOptions newValueOptions; + /** + * @return Options for rules using the third-party detection method. + * + */ + private @Nullable GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions thirdPartyRuleOptions; private GetSecurityMonitoringRulesRuleOptions() {} /** @@ -85,15 +90,15 @@ public Optional im * @return Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). * */ - public Integer keepAlive() { - return this.keepAlive; + public Optional keepAlive() { + return Optional.ofNullable(this.keepAlive); } /** * @return A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. * */ - public Integer maxSignalDuration() { - return this.maxSignalDuration; + public Optional maxSignalDuration() { + return Optional.ofNullable(this.maxSignalDuration); } /** * @return New value rules specific options. @@ -102,6 +107,13 @@ public Integer maxSignalDuration() { public Optional newValueOptions() { return Optional.ofNullable(this.newValueOptions); } + /** + * @return Options for rules using the third-party detection method. + * + */ + public Optional thirdPartyRuleOptions() { + return Optional.ofNullable(this.thirdPartyRuleOptions); + } public static Builder builder() { return new Builder(); @@ -116,9 +128,10 @@ public static final class Builder { private @Nullable String detectionMethod; private @Nullable Integer evaluationWindow; private @Nullable GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions impossibleTravelOptions; - private Integer keepAlive; - private Integer maxSignalDuration; + private @Nullable Integer keepAlive; + private @Nullable Integer maxSignalDuration; private @Nullable GetSecurityMonitoringRulesRuleOptionsNewValueOptions newValueOptions; + private @Nullable GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions thirdPartyRuleOptions; public Builder() {} public Builder(GetSecurityMonitoringRulesRuleOptions defaults) { Objects.requireNonNull(defaults); @@ -129,6 +142,7 @@ public Builder(GetSecurityMonitoringRulesRuleOptions defaults) { this.keepAlive = defaults.keepAlive; this.maxSignalDuration = defaults.maxSignalDuration; this.newValueOptions = defaults.newValueOptions; + this.thirdPartyRuleOptions = defaults.thirdPartyRuleOptions; } @CustomType.Setter @@ -156,18 +170,14 @@ public Builder impossibleTravelOptions(@Nullable GetSecurityMonitoringRulesRuleO return this; } @CustomType.Setter - public Builder keepAlive(Integer keepAlive) { - if (keepAlive == null) { - throw new MissingRequiredPropertyException("GetSecurityMonitoringRulesRuleOptions", "keepAlive"); - } + public Builder keepAlive(@Nullable Integer keepAlive) { + this.keepAlive = keepAlive; return this; } @CustomType.Setter - public Builder maxSignalDuration(Integer maxSignalDuration) { - if (maxSignalDuration == null) { - throw new MissingRequiredPropertyException("GetSecurityMonitoringRulesRuleOptions", "maxSignalDuration"); - } + public Builder maxSignalDuration(@Nullable Integer maxSignalDuration) { + this.maxSignalDuration = maxSignalDuration; return this; } @@ -177,6 +187,12 @@ public Builder newValueOptions(@Nullable GetSecurityMonitoringRulesRuleOptionsNe this.newValueOptions = newValueOptions; return this; } + @CustomType.Setter + public Builder thirdPartyRuleOptions(@Nullable GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions thirdPartyRuleOptions) { + + this.thirdPartyRuleOptions = thirdPartyRuleOptions; + return this; + } public GetSecurityMonitoringRulesRuleOptions build() { final var _resultValue = new GetSecurityMonitoringRulesRuleOptions(); _resultValue.decreaseCriticalityBasedOnEnv = decreaseCriticalityBasedOnEnv; @@ -186,6 +202,7 @@ public GetSecurityMonitoringRulesRuleOptions build() { _resultValue.keepAlive = keepAlive; _resultValue.maxSignalDuration = maxSignalDuration; _resultValue.newValueOptions = newValueOptions; + _resultValue.thirdPartyRuleOptions = thirdPartyRuleOptions; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions.java new file mode 100644 index 000000000..fd48e061f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions.java @@ -0,0 +1,133 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions { + /** + * @return Notification targets for the default rule case, when none of the third-party cases match. + * + */ + private @Nullable List defaultNotifications; + /** + * @return Severity of the default rule case, when none of the third-party cases match. + * + */ + private String defaultStatus; + /** + * @return Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + */ + private List rootQueries; + /** + * @return A template for the signal title; if omitted, the title is generated based on the case name. + * + */ + private @Nullable String signalTitleTemplate; + + private GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions() {} + /** + * @return Notification targets for the default rule case, when none of the third-party cases match. + * + */ + public List defaultNotifications() { + return this.defaultNotifications == null ? List.of() : this.defaultNotifications; + } + /** + * @return Severity of the default rule case, when none of the third-party cases match. + * + */ + public String defaultStatus() { + return this.defaultStatus; + } + /** + * @return Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + */ + public List rootQueries() { + return this.rootQueries; + } + /** + * @return A template for the signal title; if omitted, the title is generated based on the case name. + * + */ + public Optional signalTitleTemplate() { + return Optional.ofNullable(this.signalTitleTemplate); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List defaultNotifications; + private String defaultStatus; + private List rootQueries; + private @Nullable String signalTitleTemplate; + public Builder() {} + public Builder(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions defaults) { + Objects.requireNonNull(defaults); + this.defaultNotifications = defaults.defaultNotifications; + this.defaultStatus = defaults.defaultStatus; + this.rootQueries = defaults.rootQueries; + this.signalTitleTemplate = defaults.signalTitleTemplate; + } + + @CustomType.Setter + public Builder defaultNotifications(@Nullable List defaultNotifications) { + + this.defaultNotifications = defaultNotifications; + return this; + } + public Builder defaultNotifications(String... defaultNotifications) { + return defaultNotifications(List.of(defaultNotifications)); + } + @CustomType.Setter + public Builder defaultStatus(String defaultStatus) { + if (defaultStatus == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions", "defaultStatus"); + } + this.defaultStatus = defaultStatus; + return this; + } + @CustomType.Setter + public Builder rootQueries(List rootQueries) { + if (rootQueries == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions", "rootQueries"); + } + this.rootQueries = rootQueries; + return this; + } + public Builder rootQueries(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery... rootQueries) { + return rootQueries(List.of(rootQueries)); + } + @CustomType.Setter + public Builder signalTitleTemplate(@Nullable String signalTitleTemplate) { + + this.signalTitleTemplate = signalTitleTemplate; + return this; + } + public GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions build() { + final var _resultValue = new GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions(); + _resultValue.defaultNotifications = defaultNotifications; + _resultValue.defaultStatus = defaultStatus; + _resultValue.rootQueries = rootQueries; + _resultValue.signalTitleTemplate = signalTitleTemplate; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery.java new file mode 100644 index 000000000..ec66d86bc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery.java @@ -0,0 +1,84 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery { + /** + * @return Fields to group by. If empty, each log triggers a signal. + * + */ + private @Nullable List groupByFields; + /** + * @return Query to filter logs. + * + */ + private String query; + + private GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery() {} + /** + * @return Fields to group by. If empty, each log triggers a signal. + * + */ + public List groupByFields() { + return this.groupByFields == null ? List.of() : this.groupByFields; + } + /** + * @return Query to filter logs. + * + */ + public String query() { + return this.query; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List groupByFields; + private String query; + public Builder() {} + public Builder(GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery defaults) { + Objects.requireNonNull(defaults); + this.groupByFields = defaults.groupByFields; + this.query = defaults.query; + } + + @CustomType.Setter + public Builder groupByFields(@Nullable List groupByFields) { + + this.groupByFields = groupByFields; + return this; + } + public Builder groupByFields(String... groupByFields) { + return groupByFields(List.of(groupByFields)); + } + @CustomType.Setter + public Builder query(String query) { + if (query == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery", "query"); + } + this.query = query; + return this; + } + public GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery build() { + final var _resultValue = new GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery(); + _resultValue.groupByFields = groupByFields; + _resultValue.query = query; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleThirdPartyCase.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleThirdPartyCase.java new file mode 100644 index 000000000..0a19319bb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringRulesRuleThirdPartyCase.java @@ -0,0 +1,127 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class GetSecurityMonitoringRulesRuleThirdPartyCase { + /** + * @return Name of the case. + * + */ + private @Nullable String name; + /** + * @return Notification targets for each rule case. + * + */ + private @Nullable List notifications; + /** + * @return A query to associate a third-party event to this case. + * + */ + private @Nullable String query; + /** + * @return Severity of the Security Signal. + * + */ + private String status; + + private GetSecurityMonitoringRulesRuleThirdPartyCase() {} + /** + * @return Name of the case. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return Notification targets for each rule case. + * + */ + public List notifications() { + return this.notifications == null ? List.of() : this.notifications; + } + /** + * @return A query to associate a third-party event to this case. + * + */ + public Optional query() { + return Optional.ofNullable(this.query); + } + /** + * @return Severity of the Security Signal. + * + */ + public String status() { + return this.status; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetSecurityMonitoringRulesRuleThirdPartyCase defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String name; + private @Nullable List notifications; + private @Nullable String query; + private String status; + public Builder() {} + public Builder(GetSecurityMonitoringRulesRuleThirdPartyCase defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + this.notifications = defaults.notifications; + this.query = defaults.query; + this.status = defaults.status; + } + + @CustomType.Setter + public Builder name(@Nullable String name) { + + this.name = name; + return this; + } + @CustomType.Setter + public Builder notifications(@Nullable List notifications) { + + this.notifications = notifications; + return this; + } + public Builder notifications(String... notifications) { + return notifications(List.of(notifications)); + } + @CustomType.Setter + public Builder query(@Nullable String query) { + + this.query = query; + return this; + } + @CustomType.Setter + public Builder status(String status) { + if (status == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringRulesRuleThirdPartyCase", "status"); + } + this.status = status; + return this; + } + public GetSecurityMonitoringRulesRuleThirdPartyCase build() { + final var _resultValue = new GetSecurityMonitoringRulesRuleThirdPartyCase(); + _resultValue.name = name; + _resultValue.notifications = notifications; + _resultValue.query = query; + _resultValue.status = status; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsResult.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsResult.java new file mode 100644 index 000000000..89f65bd4f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsResult.java @@ -0,0 +1,112 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.GetSecurityMonitoringSuppressionsSuppression; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetSecurityMonitoringSuppressionsResult { + /** + * @return The ID of this resource. + * + */ + private String id; + /** + * @return List of IDs of suppressions + * + */ + private List suppressionIds; + /** + * @return List of suppressions + * + */ + private List suppressions; + + private GetSecurityMonitoringSuppressionsResult() {} + /** + * @return The ID of this resource. + * + */ + public String id() { + return this.id; + } + /** + * @return List of IDs of suppressions + * + */ + public List suppressionIds() { + return this.suppressionIds; + } + /** + * @return List of suppressions + * + */ + public List suppressions() { + return this.suppressions; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetSecurityMonitoringSuppressionsResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String id; + private List suppressionIds; + private List suppressions; + public Builder() {} + public Builder(GetSecurityMonitoringSuppressionsResult defaults) { + Objects.requireNonNull(defaults); + this.id = defaults.id; + this.suppressionIds = defaults.suppressionIds; + this.suppressions = defaults.suppressions; + } + + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsResult", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder suppressionIds(List suppressionIds) { + if (suppressionIds == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsResult", "suppressionIds"); + } + this.suppressionIds = suppressionIds; + return this; + } + public Builder suppressionIds(String... suppressionIds) { + return suppressionIds(List.of(suppressionIds)); + } + @CustomType.Setter + public Builder suppressions(List suppressions) { + if (suppressions == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsResult", "suppressions"); + } + this.suppressions = suppressions; + return this; + } + public Builder suppressions(GetSecurityMonitoringSuppressionsSuppression... suppressions) { + return suppressions(List.of(suppressions)); + } + public GetSecurityMonitoringSuppressionsResult build() { + final var _resultValue = new GetSecurityMonitoringSuppressionsResult(); + _resultValue.id = id; + _resultValue.suppressionIds = suppressionIds; + _resultValue.suppressions = suppressions; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsSuppression.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsSuppression.java new file mode 100644 index 000000000..bc4724887 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSecurityMonitoringSuppressionsSuppression.java @@ -0,0 +1,141 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetSecurityMonitoringSuppressionsSuppression { + private String description; + private Boolean enabled; + private String expirationDate; + private String id; + private String name; + private String ruleQuery; + private String suppressionQuery; + + private GetSecurityMonitoringSuppressionsSuppression() {} + public String description() { + return this.description; + } + public Boolean enabled() { + return this.enabled; + } + public String expirationDate() { + return this.expirationDate; + } + public String id() { + return this.id; + } + public String name() { + return this.name; + } + public String ruleQuery() { + return this.ruleQuery; + } + public String suppressionQuery() { + return this.suppressionQuery; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetSecurityMonitoringSuppressionsSuppression defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String description; + private Boolean enabled; + private String expirationDate; + private String id; + private String name; + private String ruleQuery; + private String suppressionQuery; + public Builder() {} + public Builder(GetSecurityMonitoringSuppressionsSuppression defaults) { + Objects.requireNonNull(defaults); + this.description = defaults.description; + this.enabled = defaults.enabled; + this.expirationDate = defaults.expirationDate; + this.id = defaults.id; + this.name = defaults.name; + this.ruleQuery = defaults.ruleQuery; + this.suppressionQuery = defaults.suppressionQuery; + } + + @CustomType.Setter + public Builder description(String description) { + if (description == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsSuppression", "description"); + } + this.description = description; + return this; + } + @CustomType.Setter + public Builder enabled(Boolean enabled) { + if (enabled == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsSuppression", "enabled"); + } + this.enabled = enabled; + return this; + } + @CustomType.Setter + public Builder expirationDate(String expirationDate) { + if (expirationDate == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsSuppression", "expirationDate"); + } + this.expirationDate = expirationDate; + return this; + } + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsSuppression", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsSuppression", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder ruleQuery(String ruleQuery) { + if (ruleQuery == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsSuppression", "ruleQuery"); + } + this.ruleQuery = ruleQuery; + return this; + } + @CustomType.Setter + public Builder suppressionQuery(String suppressionQuery) { + if (suppressionQuery == null) { + throw new MissingRequiredPropertyException("GetSecurityMonitoringSuppressionsSuppression", "suppressionQuery"); + } + this.suppressionQuery = suppressionQuery; + return this; + } + public GetSecurityMonitoringSuppressionsSuppression build() { + final var _resultValue = new GetSecurityMonitoringSuppressionsSuppression(); + _resultValue.description = description; + _resultValue.enabled = enabled; + _resultValue.expirationDate = expirationDate; + _resultValue.id = id; + _resultValue.name = name; + _resultValue.ruleQuery = ruleQuery; + _resultValue.suppressionQuery = suppressionQuery; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSensitiveDataScannerStandardPatternResult.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSensitiveDataScannerStandardPatternResult.java index 1d5a4314b..fd316f782 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSensitiveDataScannerStandardPatternResult.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/GetSensitiveDataScannerStandardPatternResult.java @@ -21,6 +21,11 @@ public final class GetSensitiveDataScannerStandardPatternResult { * */ private String id; + /** + * @return List of recommended keywords to improve rule accuracy. + * + */ + private List includedKeywords; /** * @return Name of the standard pattern. * @@ -52,6 +57,13 @@ public String filter() { public String id() { return this.id; } + /** + * @return List of recommended keywords to improve rule accuracy. + * + */ + public List includedKeywords() { + return this.includedKeywords; + } /** * @return Name of the standard pattern. * @@ -85,6 +97,7 @@ public static Builder builder(GetSensitiveDataScannerStandardPatternResult defau public static final class Builder { private String filter; private String id; + private List includedKeywords; private String name; private String pattern; private List tags; @@ -93,6 +106,7 @@ public Builder(GetSensitiveDataScannerStandardPatternResult defaults) { Objects.requireNonNull(defaults); this.filter = defaults.filter; this.id = defaults.id; + this.includedKeywords = defaults.includedKeywords; this.name = defaults.name; this.pattern = defaults.pattern; this.tags = defaults.tags; @@ -115,6 +129,17 @@ public Builder id(String id) { return this; } @CustomType.Setter + public Builder includedKeywords(List includedKeywords) { + if (includedKeywords == null) { + throw new MissingRequiredPropertyException("GetSensitiveDataScannerStandardPatternResult", "includedKeywords"); + } + this.includedKeywords = includedKeywords; + return this; + } + public Builder includedKeywords(String... includedKeywords) { + return includedKeywords(List.of(includedKeywords)); + } + @CustomType.Setter public Builder name(String name) { if (name == null) { throw new MissingRequiredPropertyException("GetSensitiveDataScannerStandardPatternResult", "name"); @@ -145,6 +170,7 @@ public GetSensitiveDataScannerStandardPatternResult build() { final var _resultValue = new GetSensitiveDataScannerStandardPatternResult(); _resultValue.filter = filter; _resultValue.id = id; + _resultValue.includedKeywords = includedKeywords; _resultValue.name = name; _resultValue.pattern = pattern; _resultValue.tags = tags; diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/LogsIndexDailyLimitReset.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/LogsIndexDailyLimitReset.java new file mode 100644 index 000000000..c6db618c5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/LogsIndexDailyLimitReset.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class LogsIndexDailyLimitReset { + /** + * @return String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + * + */ + private String resetTime; + /** + * @return String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + * + */ + private String resetUtcOffset; + + private LogsIndexDailyLimitReset() {} + /** + * @return String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + * + */ + public String resetTime() { + return this.resetTime; + } + /** + * @return String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + * + */ + public String resetUtcOffset() { + return this.resetUtcOffset; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(LogsIndexDailyLimitReset defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String resetTime; + private String resetUtcOffset; + public Builder() {} + public Builder(LogsIndexDailyLimitReset defaults) { + Objects.requireNonNull(defaults); + this.resetTime = defaults.resetTime; + this.resetUtcOffset = defaults.resetUtcOffset; + } + + @CustomType.Setter + public Builder resetTime(String resetTime) { + if (resetTime == null) { + throw new MissingRequiredPropertyException("LogsIndexDailyLimitReset", "resetTime"); + } + this.resetTime = resetTime; + return this; + } + @CustomType.Setter + public Builder resetUtcOffset(String resetUtcOffset) { + if (resetUtcOffset == null) { + throw new MissingRequiredPropertyException("LogsIndexDailyLimitReset", "resetUtcOffset"); + } + this.resetUtcOffset = resetUtcOffset; + return this; + } + public LogsIndexDailyLimitReset build() { + final var _resultValue = new LogsIndexDailyLimitReset(); + _resultValue.resetTime = resetTime; + _resultValue.resetUtcOffset = resetUtcOffset; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptions.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptions.java index 09f0e1e48..01fc6572d 100644 --- a/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptions.java +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptions.java @@ -6,7 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.datadog.outputs.SecurityMonitoringRuleOptionsImpossibleTravelOptions; import com.pulumi.datadog.outputs.SecurityMonitoringRuleOptionsNewValueOptions; -import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.datadog.outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptions; import java.lang.Boolean; import java.lang.Integer; import java.lang.String; @@ -40,17 +40,22 @@ public final class SecurityMonitoringRuleOptions { * @return Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. * */ - private Integer keepAlive; + private @Nullable Integer keepAlive; /** * @return A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. * */ - private Integer maxSignalDuration; + private @Nullable Integer maxSignalDuration; /** * @return New value rules specific options. * */ private @Nullable SecurityMonitoringRuleOptionsNewValueOptions newValueOptions; + /** + * @return Options for rules using the third-party detection method. + * + */ + private @Nullable SecurityMonitoringRuleOptionsThirdPartyRuleOptions thirdPartyRuleOptions; private SecurityMonitoringRuleOptions() {} /** @@ -85,15 +90,15 @@ public Optional impossible * @return Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. * */ - public Integer keepAlive() { - return this.keepAlive; + public Optional keepAlive() { + return Optional.ofNullable(this.keepAlive); } /** * @return A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. * */ - public Integer maxSignalDuration() { - return this.maxSignalDuration; + public Optional maxSignalDuration() { + return Optional.ofNullable(this.maxSignalDuration); } /** * @return New value rules specific options. @@ -102,6 +107,13 @@ public Integer maxSignalDuration() { public Optional newValueOptions() { return Optional.ofNullable(this.newValueOptions); } + /** + * @return Options for rules using the third-party detection method. + * + */ + public Optional thirdPartyRuleOptions() { + return Optional.ofNullable(this.thirdPartyRuleOptions); + } public static Builder builder() { return new Builder(); @@ -116,9 +128,10 @@ public static final class Builder { private @Nullable String detectionMethod; private @Nullable Integer evaluationWindow; private @Nullable SecurityMonitoringRuleOptionsImpossibleTravelOptions impossibleTravelOptions; - private Integer keepAlive; - private Integer maxSignalDuration; + private @Nullable Integer keepAlive; + private @Nullable Integer maxSignalDuration; private @Nullable SecurityMonitoringRuleOptionsNewValueOptions newValueOptions; + private @Nullable SecurityMonitoringRuleOptionsThirdPartyRuleOptions thirdPartyRuleOptions; public Builder() {} public Builder(SecurityMonitoringRuleOptions defaults) { Objects.requireNonNull(defaults); @@ -129,6 +142,7 @@ public Builder(SecurityMonitoringRuleOptions defaults) { this.keepAlive = defaults.keepAlive; this.maxSignalDuration = defaults.maxSignalDuration; this.newValueOptions = defaults.newValueOptions; + this.thirdPartyRuleOptions = defaults.thirdPartyRuleOptions; } @CustomType.Setter @@ -156,18 +170,14 @@ public Builder impossibleTravelOptions(@Nullable SecurityMonitoringRuleOptionsIm return this; } @CustomType.Setter - public Builder keepAlive(Integer keepAlive) { - if (keepAlive == null) { - throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptions", "keepAlive"); - } + public Builder keepAlive(@Nullable Integer keepAlive) { + this.keepAlive = keepAlive; return this; } @CustomType.Setter - public Builder maxSignalDuration(Integer maxSignalDuration) { - if (maxSignalDuration == null) { - throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptions", "maxSignalDuration"); - } + public Builder maxSignalDuration(@Nullable Integer maxSignalDuration) { + this.maxSignalDuration = maxSignalDuration; return this; } @@ -177,6 +187,12 @@ public Builder newValueOptions(@Nullable SecurityMonitoringRuleOptionsNewValueOp this.newValueOptions = newValueOptions; return this; } + @CustomType.Setter + public Builder thirdPartyRuleOptions(@Nullable SecurityMonitoringRuleOptionsThirdPartyRuleOptions thirdPartyRuleOptions) { + + this.thirdPartyRuleOptions = thirdPartyRuleOptions; + return this; + } public SecurityMonitoringRuleOptions build() { final var _resultValue = new SecurityMonitoringRuleOptions(); _resultValue.decreaseCriticalityBasedOnEnv = decreaseCriticalityBasedOnEnv; @@ -186,6 +202,7 @@ public SecurityMonitoringRuleOptions build() { _resultValue.keepAlive = keepAlive; _resultValue.maxSignalDuration = maxSignalDuration; _resultValue.newValueOptions = newValueOptions; + _resultValue.thirdPartyRuleOptions = thirdPartyRuleOptions; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.java new file mode 100644 index 000000000..70cb354ba --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptions.java @@ -0,0 +1,133 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class SecurityMonitoringRuleOptionsThirdPartyRuleOptions { + /** + * @return Notification targets for the default rule case, when none of the third-party cases match. + * + */ + private @Nullable List defaultNotifications; + /** + * @return Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + private String defaultStatus; + /** + * @return Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + */ + private List rootQueries; + /** + * @return A template for the signal title; if omitted, the title is generated based on the case name. + * + */ + private @Nullable String signalTitleTemplate; + + private SecurityMonitoringRuleOptionsThirdPartyRuleOptions() {} + /** + * @return Notification targets for the default rule case, when none of the third-party cases match. + * + */ + public List defaultNotifications() { + return this.defaultNotifications == null ? List.of() : this.defaultNotifications; + } + /** + * @return Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + public String defaultStatus() { + return this.defaultStatus; + } + /** + * @return Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + * + */ + public List rootQueries() { + return this.rootQueries; + } + /** + * @return A template for the signal title; if omitted, the title is generated based on the case name. + * + */ + public Optional signalTitleTemplate() { + return Optional.ofNullable(this.signalTitleTemplate); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptions defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List defaultNotifications; + private String defaultStatus; + private List rootQueries; + private @Nullable String signalTitleTemplate; + public Builder() {} + public Builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptions defaults) { + Objects.requireNonNull(defaults); + this.defaultNotifications = defaults.defaultNotifications; + this.defaultStatus = defaults.defaultStatus; + this.rootQueries = defaults.rootQueries; + this.signalTitleTemplate = defaults.signalTitleTemplate; + } + + @CustomType.Setter + public Builder defaultNotifications(@Nullable List defaultNotifications) { + + this.defaultNotifications = defaultNotifications; + return this; + } + public Builder defaultNotifications(String... defaultNotifications) { + return defaultNotifications(List.of(defaultNotifications)); + } + @CustomType.Setter + public Builder defaultStatus(String defaultStatus) { + if (defaultStatus == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsThirdPartyRuleOptions", "defaultStatus"); + } + this.defaultStatus = defaultStatus; + return this; + } + @CustomType.Setter + public Builder rootQueries(List rootQueries) { + if (rootQueries == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsThirdPartyRuleOptions", "rootQueries"); + } + this.rootQueries = rootQueries; + return this; + } + public Builder rootQueries(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery... rootQueries) { + return rootQueries(List.of(rootQueries)); + } + @CustomType.Setter + public Builder signalTitleTemplate(@Nullable String signalTitleTemplate) { + + this.signalTitleTemplate = signalTitleTemplate; + return this; + } + public SecurityMonitoringRuleOptionsThirdPartyRuleOptions build() { + final var _resultValue = new SecurityMonitoringRuleOptionsThirdPartyRuleOptions(); + _resultValue.defaultNotifications = defaultNotifications; + _resultValue.defaultStatus = defaultStatus; + _resultValue.rootQueries = rootQueries; + _resultValue.signalTitleTemplate = signalTitleTemplate; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.java new file mode 100644 index 000000000..417bf0893 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.java @@ -0,0 +1,84 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery { + /** + * @return Fields to group by. If empty, each log triggers a signal. + * + */ + private @Nullable List groupByFields; + /** + * @return Query for selecting logs to apply the filtering action. + * + */ + private String query; + + private SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery() {} + /** + * @return Fields to group by. If empty, each log triggers a signal. + * + */ + public List groupByFields() { + return this.groupByFields == null ? List.of() : this.groupByFields; + } + /** + * @return Query for selecting logs to apply the filtering action. + * + */ + public String query() { + return this.query; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List groupByFields; + private String query; + public Builder() {} + public Builder(SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery defaults) { + Objects.requireNonNull(defaults); + this.groupByFields = defaults.groupByFields; + this.query = defaults.query; + } + + @CustomType.Setter + public Builder groupByFields(@Nullable List groupByFields) { + + this.groupByFields = groupByFields; + return this; + } + public Builder groupByFields(String... groupByFields) { + return groupByFields(List.of(groupByFields)); + } + @CustomType.Setter + public Builder query(String query) { + if (query == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery", "query"); + } + this.query = query; + return this; + } + public SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery build() { + final var _resultValue = new SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery(); + _resultValue.groupByFields = groupByFields; + _resultValue.query = query; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleThirdPartyCase.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleThirdPartyCase.java new file mode 100644 index 000000000..30579f337 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SecurityMonitoringRuleThirdPartyCase.java @@ -0,0 +1,127 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class SecurityMonitoringRuleThirdPartyCase { + /** + * @return Name of the case. + * + */ + private @Nullable String name; + /** + * @return Notification targets for each rule case. + * + */ + private @Nullable List notifications; + /** + * @return A query to associate a third-party event to this case. + * + */ + private @Nullable String query; + /** + * @return Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + private String status; + + private SecurityMonitoringRuleThirdPartyCase() {} + /** + * @return Name of the case. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return Notification targets for each rule case. + * + */ + public List notifications() { + return this.notifications == null ? List.of() : this.notifications; + } + /** + * @return A query to associate a third-party event to this case. + * + */ + public Optional query() { + return Optional.ofNullable(this.query); + } + /** + * @return Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + * + */ + public String status() { + return this.status; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SecurityMonitoringRuleThirdPartyCase defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String name; + private @Nullable List notifications; + private @Nullable String query; + private String status; + public Builder() {} + public Builder(SecurityMonitoringRuleThirdPartyCase defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + this.notifications = defaults.notifications; + this.query = defaults.query; + this.status = defaults.status; + } + + @CustomType.Setter + public Builder name(@Nullable String name) { + + this.name = name; + return this; + } + @CustomType.Setter + public Builder notifications(@Nullable List notifications) { + + this.notifications = notifications; + return this; + } + public Builder notifications(String... notifications) { + return notifications(List.of(notifications)); + } + @CustomType.Setter + public Builder query(@Nullable String query) { + + this.query = query; + return this; + } + @CustomType.Setter + public Builder status(String status) { + if (status == null) { + throw new MissingRequiredPropertyException("SecurityMonitoringRuleThirdPartyCase", "status"); + } + this.status = status; + return this; + } + public SecurityMonitoringRuleThirdPartyCase build() { + final var _resultValue = new SecurityMonitoringRuleThirdPartyCase(); + _resultValue.name = name; + _resultValue.notifications = notifications; + _resultValue.query = query; + _resultValue.status = status; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.java new file mode 100644 index 000000000..da27aa3e2 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/SensitiveDataScannerRuleIncludedKeywordConfiguration.java @@ -0,0 +1,86 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class SensitiveDataScannerRuleIncludedKeywordConfiguration { + /** + * @return Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + * + */ + private Integer characterCount; + /** + * @return Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + * + */ + private List keywords; + + private SensitiveDataScannerRuleIncludedKeywordConfiguration() {} + /** + * @return Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + * + */ + public Integer characterCount() { + return this.characterCount; + } + /** + * @return Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + * + */ + public List keywords() { + return this.keywords; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SensitiveDataScannerRuleIncludedKeywordConfiguration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Integer characterCount; + private List keywords; + public Builder() {} + public Builder(SensitiveDataScannerRuleIncludedKeywordConfiguration defaults) { + Objects.requireNonNull(defaults); + this.characterCount = defaults.characterCount; + this.keywords = defaults.keywords; + } + + @CustomType.Setter + public Builder characterCount(Integer characterCount) { + if (characterCount == null) { + throw new MissingRequiredPropertyException("SensitiveDataScannerRuleIncludedKeywordConfiguration", "characterCount"); + } + this.characterCount = characterCount; + return this; + } + @CustomType.Setter + public Builder keywords(List keywords) { + if (keywords == null) { + throw new MissingRequiredPropertyException("SensitiveDataScannerRuleIncludedKeywordConfiguration", "keywords"); + } + this.keywords = keywords; + return this; + } + public Builder keywords(String... keywords) { + return keywords(List.of(keywords)); + } + public SensitiveDataScannerRuleIncludedKeywordConfiguration build() { + final var _resultValue = new SensitiveDataScannerRuleIncludedKeywordConfiguration(); + _resultValue.characterCount = characterCount; + _resultValue.keywords = keywords; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecification.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecification.java new file mode 100644 index 000000000..e003f6227 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecification.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.ServiceLevelObjectiveSliSpecificationTimeSlice; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.util.Objects; + +@CustomType +public final class ServiceLevelObjectiveSliSpecification { + /** + * @return The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + * + */ + private ServiceLevelObjectiveSliSpecificationTimeSlice timeSlice; + + private ServiceLevelObjectiveSliSpecification() {} + /** + * @return The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + * + */ + public ServiceLevelObjectiveSliSpecificationTimeSlice timeSlice() { + return this.timeSlice; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ServiceLevelObjectiveSliSpecification defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationTimeSlice timeSlice; + public Builder() {} + public Builder(ServiceLevelObjectiveSliSpecification defaults) { + Objects.requireNonNull(defaults); + this.timeSlice = defaults.timeSlice; + } + + @CustomType.Setter + public Builder timeSlice(ServiceLevelObjectiveSliSpecificationTimeSlice timeSlice) { + if (timeSlice == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecification", "timeSlice"); + } + this.timeSlice = timeSlice; + return this; + } + public ServiceLevelObjectiveSliSpecification build() { + final var _resultValue = new ServiceLevelObjectiveSliSpecification(); + _resultValue.timeSlice = timeSlice; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.java new file mode 100644 index 000000000..4ddca686c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSlice.java @@ -0,0 +1,106 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQuery; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Double; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ServiceLevelObjectiveSliSpecificationTimeSlice { + /** + * @return The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + * + */ + private String comparator; + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + private ServiceLevelObjectiveSliSpecificationTimeSliceQuery query; + /** + * @return The threshold value to which each SLI value will be compared. + * + */ + private Double threshold; + + private ServiceLevelObjectiveSliSpecificationTimeSlice() {} + /** + * @return The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + * + */ + public String comparator() { + return this.comparator; + } + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + public ServiceLevelObjectiveSliSpecificationTimeSliceQuery query() { + return this.query; + } + /** + * @return The threshold value to which each SLI value will be compared. + * + */ + public Double threshold() { + return this.threshold; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSlice defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String comparator; + private ServiceLevelObjectiveSliSpecificationTimeSliceQuery query; + private Double threshold; + public Builder() {} + public Builder(ServiceLevelObjectiveSliSpecificationTimeSlice defaults) { + Objects.requireNonNull(defaults); + this.comparator = defaults.comparator; + this.query = defaults.query; + this.threshold = defaults.threshold; + } + + @CustomType.Setter + public Builder comparator(String comparator) { + if (comparator == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSlice", "comparator"); + } + this.comparator = comparator; + return this; + } + @CustomType.Setter + public Builder query(ServiceLevelObjectiveSliSpecificationTimeSliceQuery query) { + if (query == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSlice", "query"); + } + this.query = query; + return this; + } + @CustomType.Setter + public Builder threshold(Double threshold) { + if (threshold == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSlice", "threshold"); + } + this.threshold = threshold; + return this; + } + public ServiceLevelObjectiveSliSpecificationTimeSlice build() { + final var _resultValue = new ServiceLevelObjectiveSliSpecificationTimeSlice(); + _resultValue.comparator = comparator; + _resultValue.query = query; + _resultValue.threshold = threshold; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.java new file mode 100644 index 000000000..c9920f701 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQuery.java @@ -0,0 +1,86 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula; +import com.pulumi.datadog.outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQuery { + /** + * @return A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + * + */ + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula formula; + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + private List queries; + + private ServiceLevelObjectiveSliSpecificationTimeSliceQuery() {} + /** + * @return A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + * + */ + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula formula() { + return this.formula; + } + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + public List queries() { + return this.queries; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQuery defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula formula; + private List queries; + public Builder() {} + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQuery defaults) { + Objects.requireNonNull(defaults); + this.formula = defaults.formula; + this.queries = defaults.queries; + } + + @CustomType.Setter + public Builder formula(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula formula) { + if (formula == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQuery", "formula"); + } + this.formula = formula; + return this; + } + @CustomType.Setter + public Builder queries(List queries) { + if (queries == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQuery", "queries"); + } + this.queries = queries; + return this; + } + public Builder queries(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery... queries) { + return queries(List.of(queries)); + } + public ServiceLevelObjectiveSliSpecificationTimeSliceQuery build() { + final var _resultValue = new ServiceLevelObjectiveSliSpecificationTimeSliceQuery(); + _resultValue.formula = formula; + _resultValue.queries = queries; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.java new file mode 100644 index 000000000..b67d34b8d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula { + /** + * @return The formula string, which is an expression involving named queries. + * + */ + private String formulaExpression; + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula() {} + /** + * @return The formula string, which is an expression involving named queries. + * + */ + public String formulaExpression() { + return this.formulaExpression; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String formulaExpression; + public Builder() {} + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula defaults) { + Objects.requireNonNull(defaults); + this.formulaExpression = defaults.formulaExpression; + } + + @CustomType.Setter + public Builder formulaExpression(String formulaExpression) { + if (formulaExpression == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula", "formulaExpression"); + } + this.formulaExpression = formulaExpression; + return this; + } + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula build() { + final var _resultValue = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula(); + _resultValue.formulaExpression = formulaExpression; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.java new file mode 100644 index 000000000..bf297781f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.datadog.outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery { + /** + * @return A timeseries formula and functions metrics query. + * + */ + private @Nullable ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery metricQuery; + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery() {} + /** + * @return A timeseries formula and functions metrics query. + * + */ + public Optional metricQuery() { + return Optional.ofNullable(this.metricQuery); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery metricQuery; + public Builder() {} + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery defaults) { + Objects.requireNonNull(defaults); + this.metricQuery = defaults.metricQuery; + } + + @CustomType.Setter + public Builder metricQuery(@Nullable ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery metricQuery) { + + this.metricQuery = metricQuery; + return this; + } + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery build() { + final var _resultValue = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery(); + _resultValue.metricQuery = metricQuery; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.java b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.java new file mode 100644 index 000000000..514afdfdd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/datadog/outputs/ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.datadog.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery { + /** + * @return The data source for metrics queries. Defaults to `"metrics"`. + * + */ + private @Nullable String dataSource; + /** + * @return The name of the query for use in formulas. + * + */ + private String name; + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + private String query; + + private ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery() {} + /** + * @return The data source for metrics queries. Defaults to `"metrics"`. + * + */ + public Optional dataSource() { + return Optional.ofNullable(this.dataSource); + } + /** + * @return The name of the query for use in formulas. + * + */ + public String name() { + return this.name; + } + /** + * @return A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + * + */ + public String query() { + return this.query; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String dataSource; + private String name; + private String query; + public Builder() {} + public Builder(ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery defaults) { + Objects.requireNonNull(defaults); + this.dataSource = defaults.dataSource; + this.name = defaults.name; + this.query = defaults.query; + } + + @CustomType.Setter + public Builder dataSource(@Nullable String dataSource) { + + this.dataSource = dataSource; + return this; + } + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder query(String query) { + if (query == null) { + throw new MissingRequiredPropertyException("ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery", "query"); + } + this.query = query; + return this; + } + public ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery build() { + final var _resultValue = new ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery(); + _resultValue.dataSource = dataSource; + _resultValue.name = name; + _resultValue.query = query; + return _resultValue; + } + } +} diff --git a/sdk/nodejs/getApiKey.ts b/sdk/nodejs/getApiKey.ts index 675df56a6..c4420a931 100644 --- a/sdk/nodejs/getApiKey.ts +++ b/sdk/nodejs/getApiKey.ts @@ -23,6 +23,7 @@ export function getApiKey(args?: GetApiKeyArgs, opts?: pulumi.InvokeOptions): Pr opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("datadog:index/getApiKey:getApiKey", { + "exactMatch": args.exactMatch, "id": args.id, "name": args.name, }, opts); @@ -32,6 +33,10 @@ export function getApiKey(args?: GetApiKeyArgs, opts?: pulumi.InvokeOptions): Pr * A collection of arguments for invoking getApiKey. */ export interface GetApiKeyArgs { + /** + * Whether to use exact match when searching by name. + */ + exactMatch?: boolean; /** * The ID of this resource. */ @@ -46,6 +51,10 @@ export interface GetApiKeyArgs { * A collection of values returned by getApiKey. */ export interface GetApiKeyResult { + /** + * Whether to use exact match when searching by name. + */ + readonly exactMatch?: boolean; /** * The ID of this resource. */ @@ -81,6 +90,10 @@ export function getApiKeyOutput(args?: GetApiKeyOutputArgs, opts?: pulumi.Invoke * A collection of arguments for invoking getApiKey. */ export interface GetApiKeyOutputArgs { + /** + * Whether to use exact match when searching by name. + */ + exactMatch?: pulumi.Input; /** * The ID of this resource. */ diff --git a/sdk/nodejs/getApplicationKey.ts b/sdk/nodejs/getApplicationKey.ts index dad034921..41188ed4c 100644 --- a/sdk/nodejs/getApplicationKey.ts +++ b/sdk/nodejs/getApplicationKey.ts @@ -23,6 +23,7 @@ export function getApplicationKey(args?: GetApplicationKeyArgs, opts?: pulumi.In opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("datadog:index/getApplicationKey:getApplicationKey", { + "exactMatch": args.exactMatch, "id": args.id, "name": args.name, }, opts); @@ -32,6 +33,10 @@ export function getApplicationKey(args?: GetApplicationKeyArgs, opts?: pulumi.In * A collection of arguments for invoking getApplicationKey. */ export interface GetApplicationKeyArgs { + /** + * Whether to use exact match when searching by name. + */ + exactMatch?: boolean; /** * Id for Application Key. */ @@ -46,6 +51,10 @@ export interface GetApplicationKeyArgs { * A collection of values returned by getApplicationKey. */ export interface GetApplicationKeyResult { + /** + * Whether to use exact match when searching by name. + */ + readonly exactMatch?: boolean; /** * Id for Application Key. */ @@ -81,6 +90,10 @@ export function getApplicationKeyOutput(args?: GetApplicationKeyOutputArgs, opts * A collection of arguments for invoking getApplicationKey. */ export interface GetApplicationKeyOutputArgs { + /** + * Whether to use exact match when searching by name. + */ + exactMatch?: pulumi.Input; /** * Id for Application Key. */ diff --git a/sdk/nodejs/getSecurityMonitoringSuppressions.ts b/sdk/nodejs/getSecurityMonitoringSuppressions.ts new file mode 100644 index 000000000..038ac6f60 --- /dev/null +++ b/sdk/nodejs/getSecurityMonitoringSuppressions.ts @@ -0,0 +1,41 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "./types/input"; +import * as outputs from "./types/output"; +import * as utilities from "./utilities"; + +/** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + */ +export function getSecurityMonitoringSuppressions(opts?: pulumi.InvokeOptions): Promise { + + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invoke("datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions", { + }, opts); +} + +/** + * A collection of values returned by getSecurityMonitoringSuppressions. + */ +export interface GetSecurityMonitoringSuppressionsResult { + /** + * The ID of this resource. + */ + readonly id: string; + /** + * List of IDs of suppressions + */ + readonly suppressionIds: string[]; + /** + * List of suppressions + */ + readonly suppressions: outputs.GetSecurityMonitoringSuppressionsSuppression[]; +} +/** + * Use this data source to retrieve information about existing suppression rules, and use them in other resources. + */ +export function getSecurityMonitoringSuppressionsOutput(opts?: pulumi.InvokeOptions): pulumi.Output { + return pulumi.output(getSecurityMonitoringSuppressions(opts)) +} diff --git a/sdk/nodejs/getSensitiveDataScannerStandardPattern.ts b/sdk/nodejs/getSensitiveDataScannerStandardPattern.ts index 0acf38c10..9403592f0 100644 --- a/sdk/nodejs/getSensitiveDataScannerStandardPattern.ts +++ b/sdk/nodejs/getSensitiveDataScannerStandardPattern.ts @@ -37,6 +37,10 @@ export interface GetSensitiveDataScannerStandardPatternResult { * The provider-assigned unique ID for this managed resource. */ readonly id: string; + /** + * List of recommended keywords to improve rule accuracy. + */ + readonly includedKeywords: string[]; /** * Name of the standard pattern. */ diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index 9eb8337e8..d78fee8b1 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -175,6 +175,11 @@ export const getSecurityMonitoringRules: typeof import("./getSecurityMonitoringR export const getSecurityMonitoringRulesOutput: typeof import("./getSecurityMonitoringRules").getSecurityMonitoringRulesOutput = null as any; utilities.lazyLoad(exports, ["getSecurityMonitoringRules","getSecurityMonitoringRulesOutput"], () => require("./getSecurityMonitoringRules")); +export { GetSecurityMonitoringSuppressionsResult } from "./getSecurityMonitoringSuppressions"; +export const getSecurityMonitoringSuppressions: typeof import("./getSecurityMonitoringSuppressions").getSecurityMonitoringSuppressions = null as any; +export const getSecurityMonitoringSuppressionsOutput: typeof import("./getSecurityMonitoringSuppressions").getSecurityMonitoringSuppressionsOutput = null as any; +utilities.lazyLoad(exports, ["getSecurityMonitoringSuppressions","getSecurityMonitoringSuppressionsOutput"], () => require("./getSecurityMonitoringSuppressions")); + export { GetSensitiveDataScannerGroupOrderResult } from "./getSensitiveDataScannerGroupOrder"; export const getSensitiveDataScannerGroupOrder: typeof import("./getSensitiveDataScannerGroupOrder").getSensitiveDataScannerGroupOrder = null as any; export const getSensitiveDataScannerGroupOrderOutput: typeof import("./getSensitiveDataScannerGroupOrder").getSensitiveDataScannerGroupOrderOutput = null as any; @@ -305,6 +310,11 @@ export type MonitorJson = import("./monitorJson").MonitorJson; export const MonitorJson: typeof import("./monitorJson").MonitorJson = null as any; utilities.lazyLoad(exports, ["MonitorJson"], () => require("./monitorJson")); +export { OpenapiApiArgs, OpenapiApiState } from "./openapiApi"; +export type OpenapiApi = import("./openapiApi").OpenapiApi; +export const OpenapiApi: typeof import("./openapiApi").OpenapiApi = null as any; +utilities.lazyLoad(exports, ["OpenapiApi"], () => require("./openapiApi")); + export { OrganizationSettingsArgs, OrganizationSettingsState } from "./organizationSettings"; export type OrganizationSettings = import("./organizationSettings").OrganizationSettings; export const OrganizationSettings: typeof import("./organizationSettings").OrganizationSettings = null as any; @@ -350,6 +360,11 @@ export type SecurityMonitoringRule = import("./securityMonitoringRule").Security export const SecurityMonitoringRule: typeof import("./securityMonitoringRule").SecurityMonitoringRule = null as any; utilities.lazyLoad(exports, ["SecurityMonitoringRule"], () => require("./securityMonitoringRule")); +export { SecurityMonitoringSuppressionArgs, SecurityMonitoringSuppressionState } from "./securityMonitoringSuppression"; +export type SecurityMonitoringSuppression = import("./securityMonitoringSuppression").SecurityMonitoringSuppression; +export const SecurityMonitoringSuppression: typeof import("./securityMonitoringSuppression").SecurityMonitoringSuppression = null as any; +utilities.lazyLoad(exports, ["SecurityMonitoringSuppression"], () => require("./securityMonitoringSuppression")); + export { SensitiveDataScannerGroupArgs, SensitiveDataScannerGroupState } from "./sensitiveDataScannerGroup"; export type SensitiveDataScannerGroup = import("./sensitiveDataScannerGroup").SensitiveDataScannerGroup; export const SensitiveDataScannerGroup: typeof import("./sensitiveDataScannerGroup").SensitiveDataScannerGroup = null as any; @@ -536,6 +551,8 @@ const _module = { return new MonitorConfigPolicy(name, undefined, { urn }) case "datadog:index/monitorJson:MonitorJson": return new MonitorJson(name, undefined, { urn }) + case "datadog:index/openapiApi:OpenapiApi": + return new OpenapiApi(name, undefined, { urn }) case "datadog:index/organizationSettings:OrganizationSettings": return new OrganizationSettings(name, undefined, { urn }) case "datadog:index/powerpack:Powerpack": @@ -552,6 +569,8 @@ const _module = { return new SecurityMonitoringFilter(name, undefined, { urn }) case "datadog:index/securityMonitoringRule:SecurityMonitoringRule": return new SecurityMonitoringRule(name, undefined, { urn }) + case "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression": + return new SecurityMonitoringSuppression(name, undefined, { urn }) case "datadog:index/sensitiveDataScannerGroup:SensitiveDataScannerGroup": return new SensitiveDataScannerGroup(name, undefined, { urn }) case "datadog:index/sensitiveDataScannerGroupOrder:SensitiveDataScannerGroupOrder": @@ -624,6 +643,7 @@ pulumi.runtime.registerResourceModule("datadog", "index/metricTagConfiguration", pulumi.runtime.registerResourceModule("datadog", "index/monitor", _module) pulumi.runtime.registerResourceModule("datadog", "index/monitorConfigPolicy", _module) pulumi.runtime.registerResourceModule("datadog", "index/monitorJson", _module) +pulumi.runtime.registerResourceModule("datadog", "index/openapiApi", _module) pulumi.runtime.registerResourceModule("datadog", "index/organizationSettings", _module) pulumi.runtime.registerResourceModule("datadog", "index/powerpack", _module) pulumi.runtime.registerResourceModule("datadog", "index/restrictionPolicy", _module) @@ -632,6 +652,7 @@ pulumi.runtime.registerResourceModule("datadog", "index/rumApplication", _module pulumi.runtime.registerResourceModule("datadog", "index/securityMonitoringDefaultRule", _module) pulumi.runtime.registerResourceModule("datadog", "index/securityMonitoringFilter", _module) pulumi.runtime.registerResourceModule("datadog", "index/securityMonitoringRule", _module) +pulumi.runtime.registerResourceModule("datadog", "index/securityMonitoringSuppression", _module) pulumi.runtime.registerResourceModule("datadog", "index/sensitiveDataScannerGroup", _module) pulumi.runtime.registerResourceModule("datadog", "index/sensitiveDataScannerGroupOrder", _module) pulumi.runtime.registerResourceModule("datadog", "index/sensitiveDataScannerRule", _module) diff --git a/sdk/nodejs/logsIndex.ts b/sdk/nodejs/logsIndex.ts index 7621bab14..713cf292e 100644 --- a/sdk/nodejs/logsIndex.ts +++ b/sdk/nodejs/logsIndex.ts @@ -15,6 +15,11 @@ import * as utilities from "./utilities"; * * const sampleIndex = new datadog.LogsIndex("sampleIndex", { * dailyLimit: 200000, + * dailyLimitReset: { + * resetTime: "14:00", + * resetUtcOffset: "+02:00", + * }, + * dailyLimitWarningThresholdPercentage: 50, * exclusionFilters: [ * { * filters: [{ @@ -79,6 +84,14 @@ export class LogsIndex extends pulumi.CustomResource { * The number of log events you can send in this index per day before you are rate-limited. */ public readonly dailyLimit!: pulumi.Output; + /** + * Object containing options to override the default daily limit reset time. + */ + public readonly dailyLimitReset!: pulumi.Output; + /** + * A percentage threshold of the daily quota at which a Datadog warning event is generated. + */ + public readonly dailyLimitWarningThresholdPercentage!: pulumi.Output; /** * If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. */ @@ -114,6 +127,8 @@ export class LogsIndex extends pulumi.CustomResource { if (opts.id) { const state = argsOrState as LogsIndexState | undefined; resourceInputs["dailyLimit"] = state ? state.dailyLimit : undefined; + resourceInputs["dailyLimitReset"] = state ? state.dailyLimitReset : undefined; + resourceInputs["dailyLimitWarningThresholdPercentage"] = state ? state.dailyLimitWarningThresholdPercentage : undefined; resourceInputs["disableDailyLimit"] = state ? state.disableDailyLimit : undefined; resourceInputs["exclusionFilters"] = state ? state.exclusionFilters : undefined; resourceInputs["filters"] = state ? state.filters : undefined; @@ -128,6 +143,8 @@ export class LogsIndex extends pulumi.CustomResource { throw new Error("Missing required property 'name'"); } resourceInputs["dailyLimit"] = args ? args.dailyLimit : undefined; + resourceInputs["dailyLimitReset"] = args ? args.dailyLimitReset : undefined; + resourceInputs["dailyLimitWarningThresholdPercentage"] = args ? args.dailyLimitWarningThresholdPercentage : undefined; resourceInputs["disableDailyLimit"] = args ? args.disableDailyLimit : undefined; resourceInputs["exclusionFilters"] = args ? args.exclusionFilters : undefined; resourceInputs["filters"] = args ? args.filters : undefined; @@ -147,6 +164,14 @@ export interface LogsIndexState { * The number of log events you can send in this index per day before you are rate-limited. */ dailyLimit?: pulumi.Input; + /** + * Object containing options to override the default daily limit reset time. + */ + dailyLimitReset?: pulumi.Input; + /** + * A percentage threshold of the daily quota at which a Datadog warning event is generated. + */ + dailyLimitWarningThresholdPercentage?: pulumi.Input; /** * If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. */ @@ -177,6 +202,14 @@ export interface LogsIndexArgs { * The number of log events you can send in this index per day before you are rate-limited. */ dailyLimit?: pulumi.Input; + /** + * Object containing options to override the default daily limit reset time. + */ + dailyLimitReset?: pulumi.Input; + /** + * A percentage threshold of the daily quota at which a Datadog warning event is generated. + */ + dailyLimitWarningThresholdPercentage?: pulumi.Input; /** * If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current dailyLimit is maintained. */ diff --git a/sdk/nodejs/openapiApi.ts b/sdk/nodejs/openapiApi.ts new file mode 100644 index 000000000..d74cca5b6 --- /dev/null +++ b/sdk/nodejs/openapiApi.ts @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as datadog from "@pulumi/datadog"; + * import * as fs from "fs"; + * + * // Create new openapi_api resource + * const my_api = new datadog.OpenapiApi("my-api", {spec: fs.readFileSync("./path/my-api.yaml", "utf8")}); + * ``` + * + * ## Import + * + * ```sh + * $ pulumi import datadog:index/openapiApi:OpenapiApi new_list "90646597-5fdb-4a17-a240-647003f8c028" + * ``` + */ +export class OpenapiApi extends pulumi.CustomResource { + /** + * Get an existing OpenapiApi resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: OpenapiApiState, opts?: pulumi.CustomResourceOptions): OpenapiApi { + return new OpenapiApi(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'datadog:index/openapiApi:OpenapiApi'; + + /** + * Returns true if the given object is an instance of OpenapiApi. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is OpenapiApi { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === OpenapiApi.__pulumiType; + } + + /** + * The OpenAPI spec. + */ + public readonly spec!: pulumi.Output; + + /** + * Create a OpenapiApi resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: OpenapiApiArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: OpenapiApiArgs | OpenapiApiState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as OpenapiApiState | undefined; + resourceInputs["spec"] = state ? state.spec : undefined; + } else { + const args = argsOrState as OpenapiApiArgs | undefined; + if ((!args || args.spec === undefined) && !opts.urn) { + throw new Error("Missing required property 'spec'"); + } + resourceInputs["spec"] = args ? args.spec : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(OpenapiApi.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering OpenapiApi resources. + */ +export interface OpenapiApiState { + /** + * The OpenAPI spec. + */ + spec?: pulumi.Input; +} + +/** + * The set of arguments for constructing a OpenapiApi resource. + */ +export interface OpenapiApiArgs { + /** + * The OpenAPI spec. + */ + spec: pulumi.Input; +} diff --git a/sdk/nodejs/securityMonitoringRule.ts b/sdk/nodejs/securityMonitoringRule.ts index 99a1f03d6..efd5b6aa7 100644 --- a/sdk/nodejs/securityMonitoringRule.ts +++ b/sdk/nodejs/securityMonitoringRule.ts @@ -86,7 +86,7 @@ export class SecurityMonitoringRule extends pulumi.CustomResource { /** * Cases for generating signals. */ - public readonly cases!: pulumi.Output; + public readonly cases!: pulumi.Output; /** * Whether the rule is enabled. Defaults to `true`. */ @@ -123,6 +123,10 @@ export class SecurityMonitoringRule extends pulumi.CustomResource { * Tags for generated signals. */ public readonly tags!: pulumi.Output; + /** + * Cases for generating signals for third-party rules. Only required and accepted for third-party rules + */ + public readonly thirdPartyCases!: pulumi.Output; /** * The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. */ @@ -151,12 +155,10 @@ export class SecurityMonitoringRule extends pulumi.CustomResource { resourceInputs["queries"] = state ? state.queries : undefined; resourceInputs["signalQueries"] = state ? state.signalQueries : undefined; resourceInputs["tags"] = state ? state.tags : undefined; + resourceInputs["thirdPartyCases"] = state ? state.thirdPartyCases : undefined; resourceInputs["type"] = state ? state.type : undefined; } else { const args = argsOrState as SecurityMonitoringRuleArgs | undefined; - if ((!args || args.cases === undefined) && !opts.urn) { - throw new Error("Missing required property 'cases'"); - } if ((!args || args.message === undefined) && !opts.urn) { throw new Error("Missing required property 'message'"); } @@ -173,6 +175,7 @@ export class SecurityMonitoringRule extends pulumi.CustomResource { resourceInputs["queries"] = args ? args.queries : undefined; resourceInputs["signalQueries"] = args ? args.signalQueries : undefined; resourceInputs["tags"] = args ? args.tags : undefined; + resourceInputs["thirdPartyCases"] = args ? args.thirdPartyCases : undefined; resourceInputs["type"] = args ? args.type : undefined; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); @@ -224,6 +227,10 @@ export interface SecurityMonitoringRuleState { * Tags for generated signals. */ tags?: pulumi.Input[]>; + /** + * Cases for generating signals for third-party rules. Only required and accepted for third-party rules + */ + thirdPartyCases?: pulumi.Input[]>; /** * The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. */ @@ -237,7 +244,7 @@ export interface SecurityMonitoringRuleArgs { /** * Cases for generating signals. */ - cases: pulumi.Input[]>; + cases?: pulumi.Input[]>; /** * Whether the rule is enabled. Defaults to `true`. */ @@ -274,6 +281,10 @@ export interface SecurityMonitoringRuleArgs { * Tags for generated signals. */ tags?: pulumi.Input[]>; + /** + * Cases for generating signals for third-party rules. Only required and accepted for third-party rules + */ + thirdPartyCases?: pulumi.Input[]>; /** * The rule type. Valid values are `applicationSecurity`, `logDetection`, `workloadSecurity`, `signalCorrelation`. Defaults to `"logDetection"`. */ diff --git a/sdk/nodejs/securityMonitoringSuppression.ts b/sdk/nodejs/securityMonitoringSuppression.ts new file mode 100644 index 000000000..f971499ca --- /dev/null +++ b/sdk/nodejs/securityMonitoringSuppression.ts @@ -0,0 +1,166 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules. + */ +export class SecurityMonitoringSuppression extends pulumi.CustomResource { + /** + * Get an existing SecurityMonitoringSuppression resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: SecurityMonitoringSuppressionState, opts?: pulumi.CustomResourceOptions): SecurityMonitoringSuppression { + return new SecurityMonitoringSuppression(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression'; + + /** + * Returns true if the given object is an instance of SecurityMonitoringSuppression. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is SecurityMonitoringSuppression { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === SecurityMonitoringSuppression.__pulumiType; + } + + /** + * A description for the suppression rule. + */ + public readonly description!: pulumi.Output; + /** + * Whether the suppression rule is enabled. + */ + public readonly enabled!: pulumi.Output; + /** + * A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + */ + public readonly expirationDate!: pulumi.Output; + /** + * The name of the suppression rule. + */ + public readonly name!: pulumi.Output; + /** + * The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + */ + public readonly ruleQuery!: pulumi.Output; + /** + * The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + */ + public readonly suppressionQuery!: pulumi.Output; + + /** + * Create a SecurityMonitoringSuppression resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: SecurityMonitoringSuppressionArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: SecurityMonitoringSuppressionArgs | SecurityMonitoringSuppressionState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as SecurityMonitoringSuppressionState | undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["enabled"] = state ? state.enabled : undefined; + resourceInputs["expirationDate"] = state ? state.expirationDate : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["ruleQuery"] = state ? state.ruleQuery : undefined; + resourceInputs["suppressionQuery"] = state ? state.suppressionQuery : undefined; + } else { + const args = argsOrState as SecurityMonitoringSuppressionArgs | undefined; + if ((!args || args.enabled === undefined) && !opts.urn) { + throw new Error("Missing required property 'enabled'"); + } + if ((!args || args.name === undefined) && !opts.urn) { + throw new Error("Missing required property 'name'"); + } + if ((!args || args.ruleQuery === undefined) && !opts.urn) { + throw new Error("Missing required property 'ruleQuery'"); + } + if ((!args || args.suppressionQuery === undefined) && !opts.urn) { + throw new Error("Missing required property 'suppressionQuery'"); + } + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["enabled"] = args ? args.enabled : undefined; + resourceInputs["expirationDate"] = args ? args.expirationDate : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["ruleQuery"] = args ? args.ruleQuery : undefined; + resourceInputs["suppressionQuery"] = args ? args.suppressionQuery : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(SecurityMonitoringSuppression.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering SecurityMonitoringSuppression resources. + */ +export interface SecurityMonitoringSuppressionState { + /** + * A description for the suppression rule. + */ + description?: pulumi.Input; + /** + * Whether the suppression rule is enabled. + */ + enabled?: pulumi.Input; + /** + * A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + */ + expirationDate?: pulumi.Input; + /** + * The name of the suppression rule. + */ + name?: pulumi.Input; + /** + * The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + */ + ruleQuery?: pulumi.Input; + /** + * The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + */ + suppressionQuery?: pulumi.Input; +} + +/** + * The set of arguments for constructing a SecurityMonitoringSuppression resource. + */ +export interface SecurityMonitoringSuppressionArgs { + /** + * A description for the suppression rule. + */ + description?: pulumi.Input; + /** + * Whether the suppression rule is enabled. + */ + enabled: pulumi.Input; + /** + * A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + */ + expirationDate?: pulumi.Input; + /** + * The name of the suppression rule. + */ + name: pulumi.Input; + /** + * The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + */ + ruleQuery: pulumi.Input; + /** + * The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + */ + suppressionQuery: pulumi.Input; +} diff --git a/sdk/nodejs/sensitiveDataScannerRule.ts b/sdk/nodejs/sensitiveDataScannerRule.ts index a4f732f82..60b417d72 100644 --- a/sdk/nodejs/sensitiveDataScannerRule.ts +++ b/sdk/nodejs/sensitiveDataScannerRule.ts @@ -7,7 +7,7 @@ import * as outputs from "./types/output"; import * as utilities from "./utilities"; /** - * Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. + * Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `includedKeywordConfiguration` field to avoid unexpectedly disabling Sensitive Data Scanner groups. * * ## Example Usage * @@ -38,6 +38,13 @@ import * as utilities from "./utilities"; * replacementString: "", * type: "hash", * }, + * includedKeywordConfiguration: { + * keywords: [ + * "cc", + * "credit card", + * ], + * characterCount: 30, + * }, * }); * const awsSp = datadog.getSensitiveDataScannerStandardPattern({ * filter: "AWS Access Key ID Scanner", @@ -99,6 +106,10 @@ export class SensitiveDataScannerRule extends pulumi.CustomResource { * Id of the scanning group the rule belongs to. */ public readonly groupId!: pulumi.Output; + /** + * Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + */ + public readonly includedKeywordConfiguration!: pulumi.Output; /** * Whether or not the rule is enabled. */ @@ -144,6 +155,7 @@ export class SensitiveDataScannerRule extends pulumi.CustomResource { resourceInputs["description"] = state ? state.description : undefined; resourceInputs["excludedNamespaces"] = state ? state.excludedNamespaces : undefined; resourceInputs["groupId"] = state ? state.groupId : undefined; + resourceInputs["includedKeywordConfiguration"] = state ? state.includedKeywordConfiguration : undefined; resourceInputs["isEnabled"] = state ? state.isEnabled : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["namespaces"] = state ? state.namespaces : undefined; @@ -159,6 +171,7 @@ export class SensitiveDataScannerRule extends pulumi.CustomResource { resourceInputs["description"] = args ? args.description : undefined; resourceInputs["excludedNamespaces"] = args ? args.excludedNamespaces : undefined; resourceInputs["groupId"] = args ? args.groupId : undefined; + resourceInputs["includedKeywordConfiguration"] = args ? args.includedKeywordConfiguration : undefined; resourceInputs["isEnabled"] = args ? args.isEnabled : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["namespaces"] = args ? args.namespaces : undefined; @@ -188,6 +201,10 @@ export interface SensitiveDataScannerRuleState { * Id of the scanning group the rule belongs to. */ groupId?: pulumi.Input; + /** + * Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + */ + includedKeywordConfiguration?: pulumi.Input; /** * Whether or not the rule is enabled. */ @@ -234,6 +251,10 @@ export interface SensitiveDataScannerRuleArgs { * Id of the scanning group the rule belongs to. */ groupId: pulumi.Input; + /** + * Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `createBeforeDestroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + */ + includedKeywordConfiguration?: pulumi.Input; /** * Whether or not the rule is enabled. */ diff --git a/sdk/nodejs/serviceLevelObjective.ts b/sdk/nodejs/serviceLevelObjective.ts index 505b74b92..fe5372c87 100644 --- a/sdk/nodejs/serviceLevelObjective.ts +++ b/sdk/nodejs/serviceLevelObjective.ts @@ -9,75 +9,6 @@ import * as utilities from "./utilities"; /** * Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. * - * ## Example Usage - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as datadog from "@pulumi/datadog"; - * - * // Metric-Based SLO - * // Create a new Datadog service level objective - * const foo = new datadog.ServiceLevelObjective("foo", { - * description: "My custom metric SLO", - * name: "Example Metric SLO", - * query: { - * denominator: "sum:my.custom.count.metric{*}.as_count()", - * numerator: "sum:my.custom.count.metric{type:good_events}.as_count()", - * }, - * tags: [ - * "foo:bar", - * "baz", - * ], - * targetThreshold: 99.9, - * thresholds: [ - * { - * target: 99.9, - * timeframe: "7d", - * warning: 99.99, - * }, - * { - * target: 99.9, - * timeframe: "30d", - * warning: 99.99, - * }, - * ], - * timeframe: "30d", - * type: "metric", - * warningThreshold: 99.99, - * }); - * // Monitor-Based SLO - * // Create a new Datadog service level objective - * const bar = new datadog.ServiceLevelObjective("bar", { - * description: "My custom monitor SLO", - * monitorIds: [ - * 1, - * 2, - * 3, - * ], - * name: "Example Monitor SLO", - * tags: [ - * "foo:bar", - * "baz", - * ], - * targetThreshold: 99.9, - * thresholds: [ - * { - * target: 99.9, - * timeframe: "7d", - * warning: 99.99, - * }, - * { - * target: 99.9, - * timeframe: "30d", - * warning: 99.99, - * }, - * ], - * timeframe: "30d", - * type: "monitor", - * warningThreshold: 99.99, - * }); - * ``` - * * ## Import * * Service Level Objectives can be imported using their string ID, e.g. @@ -131,13 +62,17 @@ export class ServiceLevelObjective extends pulumi.CustomResource { */ public readonly monitorIds!: pulumi.Output; /** - * Name of Datadog service level objective + * The name of the query for use in formulas. */ public readonly name!: pulumi.Output; /** - * The metric query of good / total events + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. */ public readonly query!: pulumi.Output; + /** + * A map of SLI specifications to use as part of the SLO. + */ + public readonly sliSpecification!: pulumi.Output; /** * A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API */ @@ -186,6 +121,7 @@ export class ServiceLevelObjective extends pulumi.CustomResource { resourceInputs["monitorIds"] = state ? state.monitorIds : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["query"] = state ? state.query : undefined; + resourceInputs["sliSpecification"] = state ? state.sliSpecification : undefined; resourceInputs["tags"] = state ? state.tags : undefined; resourceInputs["targetThreshold"] = state ? state.targetThreshold : undefined; resourceInputs["thresholds"] = state ? state.thresholds : undefined; @@ -210,6 +146,7 @@ export class ServiceLevelObjective extends pulumi.CustomResource { resourceInputs["monitorIds"] = args ? args.monitorIds : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["query"] = args ? args.query : undefined; + resourceInputs["sliSpecification"] = args ? args.sliSpecification : undefined; resourceInputs["tags"] = args ? args.tags : undefined; resourceInputs["targetThreshold"] = args ? args.targetThreshold : undefined; resourceInputs["thresholds"] = args ? args.thresholds : undefined; @@ -244,13 +181,17 @@ export interface ServiceLevelObjectiveState { */ monitorIds?: pulumi.Input[]>; /** - * Name of Datadog service level objective + * The name of the query for use in formulas. */ name?: pulumi.Input; /** - * The metric query of good / total events + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. */ query?: pulumi.Input; + /** + * A map of SLI specifications to use as part of the SLO. + */ + sliSpecification?: pulumi.Input; /** * A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API */ @@ -302,13 +243,17 @@ export interface ServiceLevelObjectiveArgs { */ monitorIds?: pulumi.Input[]>; /** - * Name of Datadog service level objective + * The name of the query for use in formulas. */ name: pulumi.Input; /** - * The metric query of good / total events + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. */ query?: pulumi.Input; + /** + * A map of SLI specifications to use as part of the SLO. + */ + sliSpecification?: pulumi.Input; /** * A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API */ diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 40ec085bf..78b8f8723 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -70,6 +70,7 @@ "getRumApplication.ts", "getSecurityMonitoringFilters.ts", "getSecurityMonitoringRules.ts", + "getSecurityMonitoringSuppressions.ts", "getSensitiveDataScannerGroupOrder.ts", "getSensitiveDataScannerStandardPattern.ts", "getServiceAccount.ts", @@ -97,6 +98,7 @@ "monitor.ts", "monitorConfigPolicy.ts", "monitorJson.ts", + "openapiApi.ts", "opsgenie/index.ts", "opsgenie/serviceObject.ts", "organizationSettings.ts", @@ -111,6 +113,7 @@ "securityMonitoringDefaultRule.ts", "securityMonitoringFilter.ts", "securityMonitoringRule.ts", + "securityMonitoringSuppression.ts", "sensitiveDataScannerGroup.ts", "sensitiveDataScannerGroupOrder.ts", "sensitiveDataScannerRule.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 635a54c54..4fa18db1e 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -40760,6 +40760,17 @@ export interface LogsCustomPipelineProcessorUserAgentParser { target: pulumi.Input; } +export interface LogsIndexDailyLimitReset { + /** + * String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + */ + resetTime: pulumi.Input; + /** + * String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + */ + resetUtcOffset: pulumi.Input; +} + export interface LogsIndexExclusionFilter { filters?: pulumi.Input[]>; /** @@ -52594,15 +52605,19 @@ export interface SecurityMonitoringRuleOptions { /** * Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. */ - keepAlive: pulumi.Input; + keepAlive?: pulumi.Input; /** * A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. */ - maxSignalDuration: pulumi.Input; + maxSignalDuration?: pulumi.Input; /** * New value rules specific options. */ newValueOptions?: pulumi.Input; + /** + * Options for rules using the third-party detection method. + */ + thirdPartyRuleOptions?: pulumi.Input; } export interface SecurityMonitoringRuleOptionsImpossibleTravelOptions { @@ -52631,6 +52646,36 @@ export interface SecurityMonitoringRuleOptionsNewValueOptions { learningThreshold?: pulumi.Input; } +export interface SecurityMonitoringRuleOptionsThirdPartyRuleOptions { + /** + * Notification targets for the default rule case, when none of the third-party cases match. + */ + defaultNotifications?: pulumi.Input[]>; + /** + * Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + */ + defaultStatus: pulumi.Input; + /** + * Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + */ + rootQueries: pulumi.Input[]>; + /** + * A template for the signal title; if omitted, the title is generated based on the case name. + */ + signalTitleTemplate?: pulumi.Input; +} + +export interface SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery { + /** + * Fields to group by. If empty, each log triggers a signal. + */ + groupByFields?: pulumi.Input[]>; + /** + * Query for selecting logs to apply the filtering action. + */ + query: pulumi.Input; +} + export interface SecurityMonitoringRuleQuery { /** * **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. @@ -52708,6 +52753,25 @@ export interface SecurityMonitoringRuleSignalQuery { ruleId: pulumi.Input; } +export interface SecurityMonitoringRuleThirdPartyCase { + /** + * Name of the case. + */ + name?: pulumi.Input; + /** + * Notification targets for each rule case. + */ + notifications?: pulumi.Input[]>; + /** + * A query to associate a third-party event to this case. + */ + query?: pulumi.Input; + /** + * Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + */ + status: pulumi.Input; +} + export interface SensitiveDataScannerGroupFilter { /** * Query to filter the events. @@ -52715,6 +52779,17 @@ export interface SensitiveDataScannerGroupFilter { query: pulumi.Input; } +export interface SensitiveDataScannerRuleIncludedKeywordConfiguration { + /** + * Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + */ + characterCount: pulumi.Input; + /** + * Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + */ + keywords: pulumi.Input[]>; +} + export interface SensitiveDataScannerRuleTextReplacement { /** * Required if type == 'partial*replacement*from*beginning' or 'partial*replacement*from*end'. It must be > 0. @@ -52741,6 +52816,68 @@ export interface ServiceLevelObjectiveQuery { numerator: pulumi.Input; } +export interface ServiceLevelObjectiveSliSpecification { + /** + * The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + */ + timeSlice: pulumi.Input; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSlice { + /** + * The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + */ + comparator: pulumi.Input; + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + */ + query: pulumi.Input; + /** + * The threshold value to which each SLI value will be compared. + */ + threshold: pulumi.Input; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQuery { + /** + * A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + */ + formula: pulumi.Input; + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + */ + queries: pulumi.Input[]>; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula { + /** + * The formula string, which is an expression involving named queries. + */ + formulaExpression: pulumi.Input; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery { + /** + * A timeseries formula and functions metrics query. + */ + metricQuery?: pulumi.Input; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery { + /** + * The data source for metrics queries. Defaults to `"metrics"`. + */ + dataSource?: pulumi.Input; + /** + * The name of the query for use in formulas. + */ + name: pulumi.Input; + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + */ + query: pulumi.Input; +} + export interface ServiceLevelObjectiveThreshold { /** * The objective's target in `(0,100)`. diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 894e16c6b..6874b8205 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -39916,6 +39916,14 @@ export interface GetLogsIndexesLogsIndex { * The number of log events you can send in this index per day before you are rate-limited. */ dailyLimit: number; + /** + * Object containing options to override the default daily limit reset time. + */ + dailyLimitResets: outputs.GetLogsIndexesLogsIndexDailyLimitReset[]; + /** + * The percentage threshold of the daily quota at which a Datadog warning event is generated. + */ + dailyLimitWarningThresholdPercentage: number; /** * List of exclusion filters. */ @@ -39934,6 +39942,17 @@ export interface GetLogsIndexesLogsIndex { retentionDays: number; } +export interface GetLogsIndexesLogsIndexDailyLimitReset { + /** + * String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + */ + resetTime: string; + /** + * String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + */ + resetUtcOffset: string; +} + export interface GetLogsIndexesLogsIndexExclusionFilter { filters?: outputs.GetLogsIndexesLogsIndexExclusionFilterFilter[]; /** @@ -40162,7 +40181,7 @@ export interface GetSecurityMonitoringRulesRule { /** * Cases for generating signals. */ - cases: outputs.GetSecurityMonitoringRulesRuleCase[]; + cases?: outputs.GetSecurityMonitoringRulesRuleCase[]; /** * Whether the rule is enabled. */ @@ -40199,6 +40218,10 @@ export interface GetSecurityMonitoringRulesRule { * Tags for generated signals. */ tags?: string[]; + /** + * Cases for generating signals for third-party rules. Only required and accepted for third-party rules + */ + thirdPartyCases?: outputs.GetSecurityMonitoringRulesRuleThirdPartyCase[]; /** * The rule type. */ @@ -40255,15 +40278,19 @@ export interface GetSecurityMonitoringRulesRuleOptions { /** * Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). */ - keepAlive: number; + keepAlive?: number; /** * A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. */ - maxSignalDuration: number; + maxSignalDuration?: number; /** * New value rules specific options. */ newValueOptions?: outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptions; + /** + * Options for rules using the third-party detection method. + */ + thirdPartyRuleOptions?: outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions; } export interface GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptions { @@ -40292,6 +40319,36 @@ export interface GetSecurityMonitoringRulesRuleOptionsNewValueOptions { learningThreshold?: number; } +export interface GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptions { + /** + * Notification targets for the default rule case, when none of the third-party cases match. + */ + defaultNotifications?: string[]; + /** + * Severity of the default rule case, when none of the third-party cases match. + */ + defaultStatus: string; + /** + * Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + */ + rootQueries: outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery[]; + /** + * A template for the signal title; if omitted, the title is generated based on the case name. + */ + signalTitleTemplate?: string; +} + +export interface GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQuery { + /** + * Fields to group by. If empty, each log triggers a signal. + */ + groupByFields?: string[]; + /** + * Query to filter logs. + */ + query: string; +} + export interface GetSecurityMonitoringRulesRuleQuery { /** * **Deprecated**. It won't be applied anymore. @@ -40369,6 +40426,35 @@ export interface GetSecurityMonitoringRulesRuleSignalQuery { ruleId: string; } +export interface GetSecurityMonitoringRulesRuleThirdPartyCase { + /** + * Name of the case. + */ + name?: string; + /** + * Notification targets for each rule case. + */ + notifications?: string[]; + /** + * A query to associate a third-party event to this case. + */ + query?: string; + /** + * Severity of the Security Signal. + */ + status: string; +} + +export interface GetSecurityMonitoringSuppressionsSuppression { + description: string; + enabled: boolean; + expirationDate: string; + id: string; + name: string; + ruleQuery: string; + suppressionQuery: string; +} + export interface GetServiceLevelObjectiveQuery { /** * The sum of the `total` events. @@ -41314,6 +41400,17 @@ export interface LogsCustomPipelineProcessorUserAgentParser { target: string; } +export interface LogsIndexDailyLimitReset { + /** + * String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + */ + resetTime: string; + /** + * String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + */ + resetUtcOffset: string; +} + export interface LogsIndexExclusionFilter { filters?: outputs.LogsIndexExclusionFilterFilter[]; /** @@ -53148,15 +53245,19 @@ export interface SecurityMonitoringRuleOptions { /** * Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. */ - keepAlive: number; + keepAlive?: number; /** * A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. */ - maxSignalDuration: number; + maxSignalDuration?: number; /** * New value rules specific options. */ newValueOptions?: outputs.SecurityMonitoringRuleOptionsNewValueOptions; + /** + * Options for rules using the third-party detection method. + */ + thirdPartyRuleOptions?: outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptions; } export interface SecurityMonitoringRuleOptionsImpossibleTravelOptions { @@ -53185,6 +53286,36 @@ export interface SecurityMonitoringRuleOptionsNewValueOptions { learningThreshold?: number; } +export interface SecurityMonitoringRuleOptionsThirdPartyRuleOptions { + /** + * Notification targets for the default rule case, when none of the third-party cases match. + */ + defaultNotifications?: string[]; + /** + * Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + */ + defaultStatus: string; + /** + * Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + */ + rootQueries: outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery[]; + /** + * A template for the signal title; if omitted, the title is generated based on the case name. + */ + signalTitleTemplate?: string; +} + +export interface SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery { + /** + * Fields to group by. If empty, each log triggers a signal. + */ + groupByFields?: string[]; + /** + * Query for selecting logs to apply the filtering action. + */ + query: string; +} + export interface SecurityMonitoringRuleQuery { /** * **Deprecated**. It won't be applied anymore. **Deprecated.** `agentRule` has been deprecated in favor of new Agent Rule resource. @@ -53262,6 +53393,25 @@ export interface SecurityMonitoringRuleSignalQuery { ruleId: string; } +export interface SecurityMonitoringRuleThirdPartyCase { + /** + * Name of the case. + */ + name?: string; + /** + * Notification targets for each rule case. + */ + notifications?: string[]; + /** + * A query to associate a third-party event to this case. + */ + query?: string; + /** + * Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + */ + status: string; +} + export interface SensitiveDataScannerGroupFilter { /** * Query to filter the events. @@ -53269,6 +53419,17 @@ export interface SensitiveDataScannerGroupFilter { query: string; } +export interface SensitiveDataScannerRuleIncludedKeywordConfiguration { + /** + * Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + */ + characterCount: number; + /** + * Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + */ + keywords: string[]; +} + export interface SensitiveDataScannerRuleTextReplacement { /** * Required if type == 'partial*replacement*from*beginning' or 'partial*replacement*from*end'. It must be > 0. @@ -53295,6 +53456,68 @@ export interface ServiceLevelObjectiveQuery { numerator: string; } +export interface ServiceLevelObjectiveSliSpecification { + /** + * The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + */ + timeSlice: outputs.ServiceLevelObjectiveSliSpecificationTimeSlice; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSlice { + /** + * The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + */ + comparator: string; + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + */ + query: outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQuery; + /** + * The threshold value to which each SLI value will be compared. + */ + threshold: number; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQuery { + /** + * A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + */ + formula: outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula; + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + */ + queries: outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery[]; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula { + /** + * The formula string, which is an expression involving named queries. + */ + formulaExpression: string; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery { + /** + * A timeseries formula and functions metrics query. + */ + metricQuery?: outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery; +} + +export interface ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery { + /** + * The data source for metrics queries. Defaults to `"metrics"`. + */ + dataSource?: string; + /** + * The name of the query for use in formulas. + */ + name: string; + /** + * A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + */ + query: string; +} + export interface ServiceLevelObjectiveThreshold { /** * The objective's target in `(0,100)`. diff --git a/sdk/python/pulumi_datadog/__init__.py b/sdk/python/pulumi_datadog/__init__.py index 9822aee9c..3821afbdb 100644 --- a/sdk/python/pulumi_datadog/__init__.py +++ b/sdk/python/pulumi_datadog/__init__.py @@ -39,6 +39,7 @@ from .get_rum_application import * from .get_security_monitoring_filters import * from .get_security_monitoring_rules import * +from .get_security_monitoring_suppressions import * from .get_sensitive_data_scanner_group_order import * from .get_sensitive_data_scanner_standard_pattern import * from .get_service_account import * @@ -65,6 +66,7 @@ from .monitor import * from .monitor_config_policy import * from .monitor_json import * +from .openapi_api import * from .organization_settings import * from .powerpack import * from .provider import * @@ -74,6 +76,7 @@ from .security_monitoring_default_rule import * from .security_monitoring_filter import * from .security_monitoring_rule import * +from .security_monitoring_suppression import * from .sensitive_data_scanner_group import * from .sensitive_data_scanner_group_order import * from .sensitive_data_scanner_rule import * @@ -454,6 +457,14 @@ "datadog:index/monitorJson:MonitorJson": "MonitorJson" } }, + { + "pkg": "datadog", + "mod": "index/openapiApi", + "fqn": "pulumi_datadog", + "classes": { + "datadog:index/openapiApi:OpenapiApi": "OpenapiApi" + } + }, { "pkg": "datadog", "mod": "index/organizationSettings", @@ -518,6 +529,14 @@ "datadog:index/securityMonitoringRule:SecurityMonitoringRule": "SecurityMonitoringRule" } }, + { + "pkg": "datadog", + "mod": "index/securityMonitoringSuppression", + "fqn": "pulumi_datadog", + "classes": { + "datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression": "SecurityMonitoringSuppression" + } + }, { "pkg": "datadog", "mod": "index/sensitiveDataScannerGroup", diff --git a/sdk/python/pulumi_datadog/_inputs.py b/sdk/python/pulumi_datadog/_inputs.py index 79ceceb9a..c303da61e 100644 --- a/sdk/python/pulumi_datadog/_inputs.py +++ b/sdk/python/pulumi_datadog/_inputs.py @@ -1997,6 +1997,7 @@ 'LogsCustomPipelineProcessorTraceIdRemapperArgs', 'LogsCustomPipelineProcessorUrlParserArgs', 'LogsCustomPipelineProcessorUserAgentParserArgs', + 'LogsIndexDailyLimitResetArgs', 'LogsIndexExclusionFilterArgs', 'LogsIndexExclusionFilterFilterArgs', 'LogsIndexFilterArgs', @@ -2585,12 +2586,22 @@ 'SecurityMonitoringRuleOptionsArgs', 'SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs', 'SecurityMonitoringRuleOptionsNewValueOptionsArgs', + 'SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs', + 'SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs', 'SecurityMonitoringRuleQueryArgs', 'SecurityMonitoringRuleQueryAgentRuleArgs', 'SecurityMonitoringRuleSignalQueryArgs', + 'SecurityMonitoringRuleThirdPartyCaseArgs', 'SensitiveDataScannerGroupFilterArgs', + 'SensitiveDataScannerRuleIncludedKeywordConfigurationArgs', 'SensitiveDataScannerRuleTextReplacementArgs', 'ServiceLevelObjectiveQueryArgs', + 'ServiceLevelObjectiveSliSpecificationArgs', + 'ServiceLevelObjectiveSliSpecificationTimeSliceArgs', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs', 'ServiceLevelObjectiveThresholdArgs', 'SpansMetricComputeArgs', 'SpansMetricFilterArgs', @@ -153829,6 +153840,43 @@ def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) +@pulumi.input_type +class LogsIndexDailyLimitResetArgs: + def __init__(__self__, *, + reset_time: pulumi.Input[str], + reset_utc_offset: pulumi.Input[str]): + """ + :param pulumi.Input[str] reset_time: String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + :param pulumi.Input[str] reset_utc_offset: String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + """ + pulumi.set(__self__, "reset_time", reset_time) + pulumi.set(__self__, "reset_utc_offset", reset_utc_offset) + + @property + @pulumi.getter(name="resetTime") + def reset_time(self) -> pulumi.Input[str]: + """ + String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + """ + return pulumi.get(self, "reset_time") + + @reset_time.setter + def reset_time(self, value: pulumi.Input[str]): + pulumi.set(self, "reset_time", value) + + @property + @pulumi.getter(name="resetUtcOffset") + def reset_utc_offset(self) -> pulumi.Input[str]: + """ + String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + """ + return pulumi.get(self, "reset_utc_offset") + + @reset_utc_offset.setter + def reset_utc_offset(self, value: pulumi.Input[str]): + pulumi.set(self, "reset_utc_offset", value) + + @pulumi.input_type class LogsIndexExclusionFilterArgs: def __init__(__self__, *, @@ -197593,24 +197641,24 @@ def query(self, value: pulumi.Input[str]): @pulumi.input_type class SecurityMonitoringRuleOptionsArgs: def __init__(__self__, *, - keep_alive: pulumi.Input[int], - max_signal_duration: pulumi.Input[int], decrease_criticality_based_on_env: Optional[pulumi.Input[bool]] = None, detection_method: Optional[pulumi.Input[str]] = None, evaluation_window: Optional[pulumi.Input[int]] = None, impossible_travel_options: Optional[pulumi.Input['SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs']] = None, - new_value_options: Optional[pulumi.Input['SecurityMonitoringRuleOptionsNewValueOptionsArgs']] = None): + keep_alive: Optional[pulumi.Input[int]] = None, + max_signal_duration: Optional[pulumi.Input[int]] = None, + new_value_options: Optional[pulumi.Input['SecurityMonitoringRuleOptionsNewValueOptionsArgs']] = None, + third_party_rule_options: Optional[pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs']] = None): """ - :param pulumi.Input[int] keep_alive: Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. - :param pulumi.Input[int] max_signal_duration: A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. :param pulumi.Input[bool] decrease_criticality_based_on_env: If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. :param pulumi.Input[str] detection_method: The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `"threshold"`. :param pulumi.Input[int] evaluation_window: A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`. :param pulumi.Input['SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs'] impossible_travel_options: Options for rules using the impossible travel detection method. + :param pulumi.Input[int] keep_alive: Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + :param pulumi.Input[int] max_signal_duration: A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. :param pulumi.Input['SecurityMonitoringRuleOptionsNewValueOptionsArgs'] new_value_options: New value rules specific options. + :param pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs'] third_party_rule_options: Options for rules using the third-party detection method. """ - pulumi.set(__self__, "keep_alive", keep_alive) - pulumi.set(__self__, "max_signal_duration", max_signal_duration) if decrease_criticality_based_on_env is not None: pulumi.set(__self__, "decrease_criticality_based_on_env", decrease_criticality_based_on_env) if detection_method is not None: @@ -197619,32 +197667,14 @@ def __init__(__self__, *, pulumi.set(__self__, "evaluation_window", evaluation_window) if impossible_travel_options is not None: pulumi.set(__self__, "impossible_travel_options", impossible_travel_options) + if keep_alive is not None: + pulumi.set(__self__, "keep_alive", keep_alive) + if max_signal_duration is not None: + pulumi.set(__self__, "max_signal_duration", max_signal_duration) if new_value_options is not None: pulumi.set(__self__, "new_value_options", new_value_options) - - @property - @pulumi.getter(name="keepAlive") - def keep_alive(self) -> pulumi.Input[int]: - """ - Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. - """ - return pulumi.get(self, "keep_alive") - - @keep_alive.setter - def keep_alive(self, value: pulumi.Input[int]): - pulumi.set(self, "keep_alive", value) - - @property - @pulumi.getter(name="maxSignalDuration") - def max_signal_duration(self) -> pulumi.Input[int]: - """ - A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. - """ - return pulumi.get(self, "max_signal_duration") - - @max_signal_duration.setter - def max_signal_duration(self, value: pulumi.Input[int]): - pulumi.set(self, "max_signal_duration", value) + if third_party_rule_options is not None: + pulumi.set(__self__, "third_party_rule_options", third_party_rule_options) @property @pulumi.getter(name="decreaseCriticalityBasedOnEnv") @@ -197694,6 +197724,30 @@ def impossible_travel_options(self) -> Optional[pulumi.Input['SecurityMonitoring def impossible_travel_options(self, value: Optional[pulumi.Input['SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs']]): pulumi.set(self, "impossible_travel_options", value) + @property + @pulumi.getter(name="keepAlive") + def keep_alive(self) -> Optional[pulumi.Input[int]]: + """ + Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + """ + return pulumi.get(self, "keep_alive") + + @keep_alive.setter + def keep_alive(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "keep_alive", value) + + @property + @pulumi.getter(name="maxSignalDuration") + def max_signal_duration(self) -> Optional[pulumi.Input[int]]: + """ + A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. + """ + return pulumi.get(self, "max_signal_duration") + + @max_signal_duration.setter + def max_signal_duration(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "max_signal_duration", value) + @property @pulumi.getter(name="newValueOptions") def new_value_options(self) -> Optional[pulumi.Input['SecurityMonitoringRuleOptionsNewValueOptionsArgs']]: @@ -197706,6 +197760,18 @@ def new_value_options(self) -> Optional[pulumi.Input['SecurityMonitoringRuleOpti def new_value_options(self, value: Optional[pulumi.Input['SecurityMonitoringRuleOptionsNewValueOptionsArgs']]): pulumi.set(self, "new_value_options", value) + @property + @pulumi.getter(name="thirdPartyRuleOptions") + def third_party_rule_options(self) -> Optional[pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs']]: + """ + Options for rules using the third-party detection method. + """ + return pulumi.get(self, "third_party_rule_options") + + @third_party_rule_options.setter + def third_party_rule_options(self, value: Optional[pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs']]): + pulumi.set(self, "third_party_rule_options", value) + @pulumi.input_type class SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs: @@ -197800,6 +197866,113 @@ def learning_threshold(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "learning_threshold", value) +@pulumi.input_type +class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs: + def __init__(__self__, *, + default_status: pulumi.Input[str], + root_queries: pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs']]], + default_notifications: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + signal_title_template: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] default_status: Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs']]] root_queries: Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + :param pulumi.Input[Sequence[pulumi.Input[str]]] default_notifications: Notification targets for the default rule case, when none of the third-party cases match. + :param pulumi.Input[str] signal_title_template: A template for the signal title; if omitted, the title is generated based on the case name. + """ + pulumi.set(__self__, "default_status", default_status) + pulumi.set(__self__, "root_queries", root_queries) + if default_notifications is not None: + pulumi.set(__self__, "default_notifications", default_notifications) + if signal_title_template is not None: + pulumi.set(__self__, "signal_title_template", signal_title_template) + + @property + @pulumi.getter(name="defaultStatus") + def default_status(self) -> pulumi.Input[str]: + """ + Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + """ + return pulumi.get(self, "default_status") + + @default_status.setter + def default_status(self, value: pulumi.Input[str]): + pulumi.set(self, "default_status", value) + + @property + @pulumi.getter(name="rootQueries") + def root_queries(self) -> pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs']]]: + """ + Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + """ + return pulumi.get(self, "root_queries") + + @root_queries.setter + def root_queries(self, value: pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs']]]): + pulumi.set(self, "root_queries", value) + + @property + @pulumi.getter(name="defaultNotifications") + def default_notifications(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Notification targets for the default rule case, when none of the third-party cases match. + """ + return pulumi.get(self, "default_notifications") + + @default_notifications.setter + def default_notifications(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "default_notifications", value) + + @property + @pulumi.getter(name="signalTitleTemplate") + def signal_title_template(self) -> Optional[pulumi.Input[str]]: + """ + A template for the signal title; if omitted, the title is generated based on the case name. + """ + return pulumi.get(self, "signal_title_template") + + @signal_title_template.setter + def signal_title_template(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "signal_title_template", value) + + +@pulumi.input_type +class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs: + def __init__(__self__, *, + query: pulumi.Input[str], + group_by_fields: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + :param pulumi.Input[str] query: Query for selecting logs to apply the filtering action. + :param pulumi.Input[Sequence[pulumi.Input[str]]] group_by_fields: Fields to group by. If empty, each log triggers a signal. + """ + pulumi.set(__self__, "query", query) + if group_by_fields is not None: + pulumi.set(__self__, "group_by_fields", group_by_fields) + + @property + @pulumi.getter + def query(self) -> pulumi.Input[str]: + """ + Query for selecting logs to apply the filtering action. + """ + return pulumi.get(self, "query") + + @query.setter + def query(self, value: pulumi.Input[str]): + pulumi.set(self, "query", value) + + @property + @pulumi.getter(name="groupByFields") + def group_by_fields(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Fields to group by. If empty, each log triggers a signal. + """ + return pulumi.get(self, "group_by_fields") + + @group_by_fields.setter + def group_by_fields(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "group_by_fields", value) + + @pulumi.input_type class SecurityMonitoringRuleQueryArgs: def __init__(__self__, *, @@ -198085,6 +198258,76 @@ def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) +@pulumi.input_type +class SecurityMonitoringRuleThirdPartyCaseArgs: + def __init__(__self__, *, + status: pulumi.Input[str], + name: Optional[pulumi.Input[str]] = None, + notifications: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + query: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] status: Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + :param pulumi.Input[str] name: Name of the case. + :param pulumi.Input[Sequence[pulumi.Input[str]]] notifications: Notification targets for each rule case. + :param pulumi.Input[str] query: A query to associate a third-party event to this case. + """ + pulumi.set(__self__, "status", status) + if name is not None: + pulumi.set(__self__, "name", name) + if notifications is not None: + pulumi.set(__self__, "notifications", notifications) + if query is not None: + pulumi.set(__self__, "query", query) + + @property + @pulumi.getter + def status(self) -> pulumi.Input[str]: + """ + Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + """ + return pulumi.get(self, "status") + + @status.setter + def status(self, value: pulumi.Input[str]): + pulumi.set(self, "status", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the case. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def notifications(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Notification targets for each rule case. + """ + return pulumi.get(self, "notifications") + + @notifications.setter + def notifications(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "notifications", value) + + @property + @pulumi.getter + def query(self) -> Optional[pulumi.Input[str]]: + """ + A query to associate a third-party event to this case. + """ + return pulumi.get(self, "query") + + @query.setter + def query(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "query", value) + + @pulumi.input_type class SensitiveDataScannerGroupFilterArgs: def __init__(__self__, *, @@ -198107,6 +198350,43 @@ def query(self, value: pulumi.Input[str]): pulumi.set(self, "query", value) +@pulumi.input_type +class SensitiveDataScannerRuleIncludedKeywordConfigurationArgs: + def __init__(__self__, *, + character_count: pulumi.Input[int], + keywords: pulumi.Input[Sequence[pulumi.Input[str]]]): + """ + :param pulumi.Input[int] character_count: Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + :param pulumi.Input[Sequence[pulumi.Input[str]]] keywords: Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + """ + pulumi.set(__self__, "character_count", character_count) + pulumi.set(__self__, "keywords", keywords) + + @property + @pulumi.getter(name="characterCount") + def character_count(self) -> pulumi.Input[int]: + """ + Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + """ + return pulumi.get(self, "character_count") + + @character_count.setter + def character_count(self, value: pulumi.Input[int]): + pulumi.set(self, "character_count", value) + + @property + @pulumi.getter + def keywords(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + """ + Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + """ + return pulumi.get(self, "keywords") + + @keywords.setter + def keywords(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + pulumi.set(self, "keywords", value) + + @pulumi.input_type class SensitiveDataScannerRuleTextReplacementArgs: def __init__(__self__, *, @@ -198198,6 +198478,215 @@ def numerator(self, value: pulumi.Input[str]): pulumi.set(self, "numerator", value) +@pulumi.input_type +class ServiceLevelObjectiveSliSpecificationArgs: + def __init__(__self__, *, + time_slice: pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceArgs']): + """ + :param pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceArgs'] time_slice: The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + """ + pulumi.set(__self__, "time_slice", time_slice) + + @property + @pulumi.getter(name="timeSlice") + def time_slice(self) -> pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceArgs']: + """ + The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + """ + return pulumi.get(self, "time_slice") + + @time_slice.setter + def time_slice(self, value: pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceArgs']): + pulumi.set(self, "time_slice", value) + + +@pulumi.input_type +class ServiceLevelObjectiveSliSpecificationTimeSliceArgs: + def __init__(__self__, *, + comparator: pulumi.Input[str], + query: pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs'], + threshold: pulumi.Input[float]): + """ + :param pulumi.Input[str] comparator: The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + :param pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs'] query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param pulumi.Input[float] threshold: The threshold value to which each SLI value will be compared. + """ + pulumi.set(__self__, "comparator", comparator) + pulumi.set(__self__, "query", query) + pulumi.set(__self__, "threshold", threshold) + + @property + @pulumi.getter + def comparator(self) -> pulumi.Input[str]: + """ + The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + """ + return pulumi.get(self, "comparator") + + @comparator.setter + def comparator(self, value: pulumi.Input[str]): + pulumi.set(self, "comparator", value) + + @property + @pulumi.getter + def query(self) -> pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs']: + """ + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + return pulumi.get(self, "query") + + @query.setter + def query(self, value: pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs']): + pulumi.set(self, "query", value) + + @property + @pulumi.getter + def threshold(self) -> pulumi.Input[float]: + """ + The threshold value to which each SLI value will be compared. + """ + return pulumi.get(self, "threshold") + + @threshold.setter + def threshold(self, value: pulumi.Input[float]): + pulumi.set(self, "threshold", value) + + +@pulumi.input_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs: + def __init__(__self__, *, + formula: pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs'], + queries: pulumi.Input[Sequence[pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs']]]): + """ + :param pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs'] formula: A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + :param pulumi.Input[Sequence[pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs']]] queries: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + pulumi.set(__self__, "formula", formula) + pulumi.set(__self__, "queries", queries) + + @property + @pulumi.getter + def formula(self) -> pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs']: + """ + A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + """ + return pulumi.get(self, "formula") + + @formula.setter + def formula(self, value: pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs']): + pulumi.set(self, "formula", value) + + @property + @pulumi.getter + def queries(self) -> pulumi.Input[Sequence[pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs']]]: + """ + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + return pulumi.get(self, "queries") + + @queries.setter + def queries(self, value: pulumi.Input[Sequence[pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs']]]): + pulumi.set(self, "queries", value) + + +@pulumi.input_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs: + def __init__(__self__, *, + formula_expression: pulumi.Input[str]): + """ + :param pulumi.Input[str] formula_expression: The formula string, which is an expression involving named queries. + """ + pulumi.set(__self__, "formula_expression", formula_expression) + + @property + @pulumi.getter(name="formulaExpression") + def formula_expression(self) -> pulumi.Input[str]: + """ + The formula string, which is an expression involving named queries. + """ + return pulumi.get(self, "formula_expression") + + @formula_expression.setter + def formula_expression(self, value: pulumi.Input[str]): + pulumi.set(self, "formula_expression", value) + + +@pulumi.input_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs: + def __init__(__self__, *, + metric_query: Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs']] = None): + """ + :param pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs'] metric_query: A timeseries formula and functions metrics query. + """ + if metric_query is not None: + pulumi.set(__self__, "metric_query", metric_query) + + @property + @pulumi.getter(name="metricQuery") + def metric_query(self) -> Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs']]: + """ + A timeseries formula and functions metrics query. + """ + return pulumi.get(self, "metric_query") + + @metric_query.setter + def metric_query(self, value: Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs']]): + pulumi.set(self, "metric_query", value) + + +@pulumi.input_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs: + def __init__(__self__, *, + name: pulumi.Input[str], + query: pulumi.Input[str], + data_source: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] name: The name of the query for use in formulas. + :param pulumi.Input[str] query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param pulumi.Input[str] data_source: The data source for metrics queries. Defaults to `"metrics"`. + """ + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "query", query) + if data_source is not None: + pulumi.set(__self__, "data_source", data_source) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + The name of the query for use in formulas. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def query(self) -> pulumi.Input[str]: + """ + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + return pulumi.get(self, "query") + + @query.setter + def query(self, value: pulumi.Input[str]): + pulumi.set(self, "query", value) + + @property + @pulumi.getter(name="dataSource") + def data_source(self) -> Optional[pulumi.Input[str]]: + """ + The data source for metrics queries. Defaults to `"metrics"`. + """ + return pulumi.get(self, "data_source") + + @data_source.setter + def data_source(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "data_source", value) + + @pulumi.input_type class ServiceLevelObjectiveThresholdArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_datadog/get_api_key.py b/sdk/python/pulumi_datadog/get_api_key.py index c0546fb42..48f08679a 100644 --- a/sdk/python/pulumi_datadog/get_api_key.py +++ b/sdk/python/pulumi_datadog/get_api_key.py @@ -21,7 +21,10 @@ class GetApiKeyResult: """ A collection of values returned by getApiKey. """ - def __init__(__self__, id=None, key=None, name=None): + def __init__(__self__, exact_match=None, id=None, key=None, name=None): + if exact_match and not isinstance(exact_match, bool): + raise TypeError("Expected argument 'exact_match' to be a bool") + pulumi.set(__self__, "exact_match", exact_match) if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") pulumi.set(__self__, "id", id) @@ -32,6 +35,14 @@ def __init__(__self__, id=None, key=None, name=None): raise TypeError("Expected argument 'name' to be a str") pulumi.set(__self__, "name", name) + @property + @pulumi.getter(name="exactMatch") + def exact_match(self) -> Optional[bool]: + """ + Whether to use exact match when searching by name. + """ + return pulumi.get(self, "exact_match") + @property @pulumi.getter def id(self) -> Optional[str]: @@ -63,12 +74,14 @@ def __await__(self): if False: yield self return GetApiKeyResult( + exact_match=self.exact_match, id=self.id, key=self.key, name=self.name) -def get_api_key(id: Optional[str] = None, +def get_api_key(exact_match: Optional[bool] = None, + id: Optional[str] = None, name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetApiKeyResult: """ @@ -84,23 +97,27 @@ def get_api_key(id: Optional[str] = None, ``` + :param bool exact_match: Whether to use exact match when searching by name. :param str id: The ID of this resource. :param str name: Name for API Key. """ __args__ = dict() + __args__['exactMatch'] = exact_match __args__['id'] = id __args__['name'] = name opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) __ret__ = pulumi.runtime.invoke('datadog:index/getApiKey:getApiKey', __args__, opts=opts, typ=GetApiKeyResult).value return AwaitableGetApiKeyResult( + exact_match=pulumi.get(__ret__, 'exact_match'), id=pulumi.get(__ret__, 'id'), key=pulumi.get(__ret__, 'key'), name=pulumi.get(__ret__, 'name')) @_utilities.lift_output_func(get_api_key) -def get_api_key_output(id: Optional[pulumi.Input[Optional[str]]] = None, +def get_api_key_output(exact_match: Optional[pulumi.Input[Optional[bool]]] = None, + id: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetApiKeyResult]: """ @@ -116,6 +133,7 @@ def get_api_key_output(id: Optional[pulumi.Input[Optional[str]]] = None, ``` + :param bool exact_match: Whether to use exact match when searching by name. :param str id: The ID of this resource. :param str name: Name for API Key. """ diff --git a/sdk/python/pulumi_datadog/get_application_key.py b/sdk/python/pulumi_datadog/get_application_key.py index a1c0ae176..d2059d61b 100644 --- a/sdk/python/pulumi_datadog/get_application_key.py +++ b/sdk/python/pulumi_datadog/get_application_key.py @@ -21,7 +21,10 @@ class GetApplicationKeyResult: """ A collection of values returned by getApplicationKey. """ - def __init__(__self__, id=None, key=None, name=None): + def __init__(__self__, exact_match=None, id=None, key=None, name=None): + if exact_match and not isinstance(exact_match, bool): + raise TypeError("Expected argument 'exact_match' to be a bool") + pulumi.set(__self__, "exact_match", exact_match) if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") pulumi.set(__self__, "id", id) @@ -32,6 +35,14 @@ def __init__(__self__, id=None, key=None, name=None): raise TypeError("Expected argument 'name' to be a str") pulumi.set(__self__, "name", name) + @property + @pulumi.getter(name="exactMatch") + def exact_match(self) -> Optional[bool]: + """ + Whether to use exact match when searching by name. + """ + return pulumi.get(self, "exact_match") + @property @pulumi.getter def id(self) -> Optional[str]: @@ -63,12 +74,14 @@ def __await__(self): if False: yield self return GetApplicationKeyResult( + exact_match=self.exact_match, id=self.id, key=self.key, name=self.name) -def get_application_key(id: Optional[str] = None, +def get_application_key(exact_match: Optional[bool] = None, + id: Optional[str] = None, name: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetApplicationKeyResult: """ @@ -84,23 +97,27 @@ def get_application_key(id: Optional[str] = None, ``` + :param bool exact_match: Whether to use exact match when searching by name. :param str id: Id for Application Key. :param str name: Name for Application Key. """ __args__ = dict() + __args__['exactMatch'] = exact_match __args__['id'] = id __args__['name'] = name opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) __ret__ = pulumi.runtime.invoke('datadog:index/getApplicationKey:getApplicationKey', __args__, opts=opts, typ=GetApplicationKeyResult).value return AwaitableGetApplicationKeyResult( + exact_match=pulumi.get(__ret__, 'exact_match'), id=pulumi.get(__ret__, 'id'), key=pulumi.get(__ret__, 'key'), name=pulumi.get(__ret__, 'name')) @_utilities.lift_output_func(get_application_key) -def get_application_key_output(id: Optional[pulumi.Input[Optional[str]]] = None, +def get_application_key_output(exact_match: Optional[pulumi.Input[Optional[bool]]] = None, + id: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetApplicationKeyResult]: """ @@ -116,6 +133,7 @@ def get_application_key_output(id: Optional[pulumi.Input[Optional[str]]] = None, ``` + :param bool exact_match: Whether to use exact match when searching by name. :param str id: Id for Application Key. :param str name: Name for Application Key. """ diff --git a/sdk/python/pulumi_datadog/get_security_monitoring_suppressions.py b/sdk/python/pulumi_datadog/get_security_monitoring_suppressions.py new file mode 100644 index 000000000..0ec4f8bc8 --- /dev/null +++ b/sdk/python/pulumi_datadog/get_security_monitoring_suppressions.py @@ -0,0 +1,91 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities +from . import outputs + +__all__ = [ + 'GetSecurityMonitoringSuppressionsResult', + 'AwaitableGetSecurityMonitoringSuppressionsResult', + 'get_security_monitoring_suppressions', + 'get_security_monitoring_suppressions_output', +] + +@pulumi.output_type +class GetSecurityMonitoringSuppressionsResult: + """ + A collection of values returned by getSecurityMonitoringSuppressions. + """ + def __init__(__self__, id=None, suppression_ids=None, suppressions=None): + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if suppression_ids and not isinstance(suppression_ids, list): + raise TypeError("Expected argument 'suppression_ids' to be a list") + pulumi.set(__self__, "suppression_ids", suppression_ids) + if suppressions and not isinstance(suppressions, list): + raise TypeError("Expected argument 'suppressions' to be a list") + pulumi.set(__self__, "suppressions", suppressions) + + @property + @pulumi.getter + def id(self) -> str: + """ + The ID of this resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="suppressionIds") + def suppression_ids(self) -> Sequence[str]: + """ + List of IDs of suppressions + """ + return pulumi.get(self, "suppression_ids") + + @property + @pulumi.getter + def suppressions(self) -> Sequence['outputs.GetSecurityMonitoringSuppressionsSuppressionResult']: + """ + List of suppressions + """ + return pulumi.get(self, "suppressions") + + +class AwaitableGetSecurityMonitoringSuppressionsResult(GetSecurityMonitoringSuppressionsResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetSecurityMonitoringSuppressionsResult( + id=self.id, + suppression_ids=self.suppression_ids, + suppressions=self.suppressions) + + +def get_security_monitoring_suppressions(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSecurityMonitoringSuppressionsResult: + """ + Use this data source to retrieve information about existing suppression rules, and use them in other resources. + """ + __args__ = dict() + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('datadog:index/getSecurityMonitoringSuppressions:getSecurityMonitoringSuppressions', __args__, opts=opts, typ=GetSecurityMonitoringSuppressionsResult).value + + return AwaitableGetSecurityMonitoringSuppressionsResult( + id=pulumi.get(__ret__, 'id'), + suppression_ids=pulumi.get(__ret__, 'suppression_ids'), + suppressions=pulumi.get(__ret__, 'suppressions')) + + +@_utilities.lift_output_func(get_security_monitoring_suppressions) +def get_security_monitoring_suppressions_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSecurityMonitoringSuppressionsResult]: + """ + Use this data source to retrieve information about existing suppression rules, and use them in other resources. + """ + ... diff --git a/sdk/python/pulumi_datadog/get_sensitive_data_scanner_standard_pattern.py b/sdk/python/pulumi_datadog/get_sensitive_data_scanner_standard_pattern.py index 90392ea92..4b719d283 100644 --- a/sdk/python/pulumi_datadog/get_sensitive_data_scanner_standard_pattern.py +++ b/sdk/python/pulumi_datadog/get_sensitive_data_scanner_standard_pattern.py @@ -21,13 +21,16 @@ class GetSensitiveDataScannerStandardPatternResult: """ A collection of values returned by getSensitiveDataScannerStandardPattern. """ - def __init__(__self__, filter=None, id=None, name=None, pattern=None, tags=None): + def __init__(__self__, filter=None, id=None, included_keywords=None, name=None, pattern=None, tags=None): if filter and not isinstance(filter, str): raise TypeError("Expected argument 'filter' to be a str") pulumi.set(__self__, "filter", filter) if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") pulumi.set(__self__, "id", id) + if included_keywords and not isinstance(included_keywords, list): + raise TypeError("Expected argument 'included_keywords' to be a list") + pulumi.set(__self__, "included_keywords", included_keywords) if name and not isinstance(name, str): raise TypeError("Expected argument 'name' to be a str") pulumi.set(__self__, "name", name) @@ -54,6 +57,14 @@ def id(self) -> str: """ return pulumi.get(self, "id") + @property + @pulumi.getter(name="includedKeywords") + def included_keywords(self) -> Sequence[str]: + """ + List of recommended keywords to improve rule accuracy. + """ + return pulumi.get(self, "included_keywords") + @property @pulumi.getter def name(self) -> str: @@ -87,6 +98,7 @@ def __await__(self): return GetSensitiveDataScannerStandardPatternResult( filter=self.filter, id=self.id, + included_keywords=self.included_keywords, name=self.name, pattern=self.pattern, tags=self.tags) @@ -108,6 +120,7 @@ def get_sensitive_data_scanner_standard_pattern(filter: Optional[str] = None, return AwaitableGetSensitiveDataScannerStandardPatternResult( filter=pulumi.get(__ret__, 'filter'), id=pulumi.get(__ret__, 'id'), + included_keywords=pulumi.get(__ret__, 'included_keywords'), name=pulumi.get(__ret__, 'name'), pattern=pulumi.get(__ret__, 'pattern'), tags=pulumi.get(__ret__, 'tags')) diff --git a/sdk/python/pulumi_datadog/logs_index.py b/sdk/python/pulumi_datadog/logs_index.py index d0b9c7273..b57ce3a59 100644 --- a/sdk/python/pulumi_datadog/logs_index.py +++ b/sdk/python/pulumi_datadog/logs_index.py @@ -19,6 +19,8 @@ def __init__(__self__, *, filters: pulumi.Input[Sequence[pulumi.Input['LogsIndexFilterArgs']]], name: pulumi.Input[str], daily_limit: Optional[pulumi.Input[int]] = None, + daily_limit_reset: Optional[pulumi.Input['LogsIndexDailyLimitResetArgs']] = None, + daily_limit_warning_threshold_percentage: Optional[pulumi.Input[float]] = None, disable_daily_limit: Optional[pulumi.Input[bool]] = None, exclusion_filters: Optional[pulumi.Input[Sequence[pulumi.Input['LogsIndexExclusionFilterArgs']]]] = None, retention_days: Optional[pulumi.Input[int]] = None): @@ -27,6 +29,8 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['LogsIndexFilterArgs']]] filters: Logs filter :param pulumi.Input[str] name: The name of the exclusion filter. :param pulumi.Input[int] daily_limit: The number of log events you can send in this index per day before you are rate-limited. + :param pulumi.Input['LogsIndexDailyLimitResetArgs'] daily_limit_reset: Object containing options to override the default daily limit reset time. + :param pulumi.Input[float] daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated. :param pulumi.Input[bool] disable_daily_limit: If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. :param pulumi.Input[Sequence[pulumi.Input['LogsIndexExclusionFilterArgs']]] exclusion_filters: List of exclusion filters. :param pulumi.Input[int] retention_days: The number of days before logs are deleted from this index. @@ -35,6 +39,10 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if daily_limit is not None: pulumi.set(__self__, "daily_limit", daily_limit) + if daily_limit_reset is not None: + pulumi.set(__self__, "daily_limit_reset", daily_limit_reset) + if daily_limit_warning_threshold_percentage is not None: + pulumi.set(__self__, "daily_limit_warning_threshold_percentage", daily_limit_warning_threshold_percentage) if disable_daily_limit is not None: pulumi.set(__self__, "disable_daily_limit", disable_daily_limit) if exclusion_filters is not None: @@ -78,6 +86,30 @@ def daily_limit(self) -> Optional[pulumi.Input[int]]: def daily_limit(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "daily_limit", value) + @property + @pulumi.getter(name="dailyLimitReset") + def daily_limit_reset(self) -> Optional[pulumi.Input['LogsIndexDailyLimitResetArgs']]: + """ + Object containing options to override the default daily limit reset time. + """ + return pulumi.get(self, "daily_limit_reset") + + @daily_limit_reset.setter + def daily_limit_reset(self, value: Optional[pulumi.Input['LogsIndexDailyLimitResetArgs']]): + pulumi.set(self, "daily_limit_reset", value) + + @property + @pulumi.getter(name="dailyLimitWarningThresholdPercentage") + def daily_limit_warning_threshold_percentage(self) -> Optional[pulumi.Input[float]]: + """ + A percentage threshold of the daily quota at which a Datadog warning event is generated. + """ + return pulumi.get(self, "daily_limit_warning_threshold_percentage") + + @daily_limit_warning_threshold_percentage.setter + def daily_limit_warning_threshold_percentage(self, value: Optional[pulumi.Input[float]]): + pulumi.set(self, "daily_limit_warning_threshold_percentage", value) + @property @pulumi.getter(name="disableDailyLimit") def disable_daily_limit(self) -> Optional[pulumi.Input[bool]]: @@ -119,6 +151,8 @@ def retention_days(self, value: Optional[pulumi.Input[int]]): class _LogsIndexState: def __init__(__self__, *, daily_limit: Optional[pulumi.Input[int]] = None, + daily_limit_reset: Optional[pulumi.Input['LogsIndexDailyLimitResetArgs']] = None, + daily_limit_warning_threshold_percentage: Optional[pulumi.Input[float]] = None, disable_daily_limit: Optional[pulumi.Input[bool]] = None, exclusion_filters: Optional[pulumi.Input[Sequence[pulumi.Input['LogsIndexExclusionFilterArgs']]]] = None, filters: Optional[pulumi.Input[Sequence[pulumi.Input['LogsIndexFilterArgs']]]] = None, @@ -127,6 +161,8 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering LogsIndex resources. :param pulumi.Input[int] daily_limit: The number of log events you can send in this index per day before you are rate-limited. + :param pulumi.Input['LogsIndexDailyLimitResetArgs'] daily_limit_reset: Object containing options to override the default daily limit reset time. + :param pulumi.Input[float] daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated. :param pulumi.Input[bool] disable_daily_limit: If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. :param pulumi.Input[Sequence[pulumi.Input['LogsIndexExclusionFilterArgs']]] exclusion_filters: List of exclusion filters. :param pulumi.Input[Sequence[pulumi.Input['LogsIndexFilterArgs']]] filters: Logs filter @@ -135,6 +171,10 @@ def __init__(__self__, *, """ if daily_limit is not None: pulumi.set(__self__, "daily_limit", daily_limit) + if daily_limit_reset is not None: + pulumi.set(__self__, "daily_limit_reset", daily_limit_reset) + if daily_limit_warning_threshold_percentage is not None: + pulumi.set(__self__, "daily_limit_warning_threshold_percentage", daily_limit_warning_threshold_percentage) if disable_daily_limit is not None: pulumi.set(__self__, "disable_daily_limit", disable_daily_limit) if exclusion_filters is not None: @@ -158,6 +198,30 @@ def daily_limit(self) -> Optional[pulumi.Input[int]]: def daily_limit(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "daily_limit", value) + @property + @pulumi.getter(name="dailyLimitReset") + def daily_limit_reset(self) -> Optional[pulumi.Input['LogsIndexDailyLimitResetArgs']]: + """ + Object containing options to override the default daily limit reset time. + """ + return pulumi.get(self, "daily_limit_reset") + + @daily_limit_reset.setter + def daily_limit_reset(self, value: Optional[pulumi.Input['LogsIndexDailyLimitResetArgs']]): + pulumi.set(self, "daily_limit_reset", value) + + @property + @pulumi.getter(name="dailyLimitWarningThresholdPercentage") + def daily_limit_warning_threshold_percentage(self) -> Optional[pulumi.Input[float]]: + """ + A percentage threshold of the daily quota at which a Datadog warning event is generated. + """ + return pulumi.get(self, "daily_limit_warning_threshold_percentage") + + @daily_limit_warning_threshold_percentage.setter + def daily_limit_warning_threshold_percentage(self, value: Optional[pulumi.Input[float]]): + pulumi.set(self, "daily_limit_warning_threshold_percentage", value) + @property @pulumi.getter(name="disableDailyLimit") def disable_daily_limit(self) -> Optional[pulumi.Input[bool]]: @@ -225,6 +289,8 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, daily_limit: Optional[pulumi.Input[int]] = None, + daily_limit_reset: Optional[pulumi.Input[pulumi.InputType['LogsIndexDailyLimitResetArgs']]] = None, + daily_limit_warning_threshold_percentage: Optional[pulumi.Input[float]] = None, disable_daily_limit: Optional[pulumi.Input[bool]] = None, exclusion_filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexExclusionFilterArgs']]]]] = None, filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexFilterArgs']]]]] = None, @@ -240,6 +306,11 @@ def __init__(__self__, sample_index = datadog.LogsIndex("sampleIndex", daily_limit=200000, + daily_limit_reset=datadog.LogsIndexDailyLimitResetArgs( + reset_time="14:00", + reset_utc_offset="+02:00", + ), + daily_limit_warning_threshold_percentage=50, exclusion_filters=[ datadog.LogsIndexExclusionFilterArgs( filters=[datadog.LogsIndexExclusionFilterFilterArgs( @@ -274,6 +345,8 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[int] daily_limit: The number of log events you can send in this index per day before you are rate-limited. + :param pulumi.Input[pulumi.InputType['LogsIndexDailyLimitResetArgs']] daily_limit_reset: Object containing options to override the default daily limit reset time. + :param pulumi.Input[float] daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated. :param pulumi.Input[bool] disable_daily_limit: If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexExclusionFilterArgs']]]] exclusion_filters: List of exclusion filters. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexFilterArgs']]]] filters: Logs filter @@ -295,6 +368,11 @@ def __init__(__self__, sample_index = datadog.LogsIndex("sampleIndex", daily_limit=200000, + daily_limit_reset=datadog.LogsIndexDailyLimitResetArgs( + reset_time="14:00", + reset_utc_offset="+02:00", + ), + daily_limit_warning_threshold_percentage=50, exclusion_filters=[ datadog.LogsIndexExclusionFilterArgs( filters=[datadog.LogsIndexExclusionFilterFilterArgs( @@ -342,6 +420,8 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, daily_limit: Optional[pulumi.Input[int]] = None, + daily_limit_reset: Optional[pulumi.Input[pulumi.InputType['LogsIndexDailyLimitResetArgs']]] = None, + daily_limit_warning_threshold_percentage: Optional[pulumi.Input[float]] = None, disable_daily_limit: Optional[pulumi.Input[bool]] = None, exclusion_filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexExclusionFilterArgs']]]]] = None, filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexFilterArgs']]]]] = None, @@ -357,6 +437,8 @@ def _internal_init(__self__, __props__ = LogsIndexArgs.__new__(LogsIndexArgs) __props__.__dict__["daily_limit"] = daily_limit + __props__.__dict__["daily_limit_reset"] = daily_limit_reset + __props__.__dict__["daily_limit_warning_threshold_percentage"] = daily_limit_warning_threshold_percentage __props__.__dict__["disable_daily_limit"] = disable_daily_limit __props__.__dict__["exclusion_filters"] = exclusion_filters if filters is None and not opts.urn: @@ -377,6 +459,8 @@ def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, daily_limit: Optional[pulumi.Input[int]] = None, + daily_limit_reset: Optional[pulumi.Input[pulumi.InputType['LogsIndexDailyLimitResetArgs']]] = None, + daily_limit_warning_threshold_percentage: Optional[pulumi.Input[float]] = None, disable_daily_limit: Optional[pulumi.Input[bool]] = None, exclusion_filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexExclusionFilterArgs']]]]] = None, filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexFilterArgs']]]]] = None, @@ -390,6 +474,8 @@ def get(resource_name: str, :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[int] daily_limit: The number of log events you can send in this index per day before you are rate-limited. + :param pulumi.Input[pulumi.InputType['LogsIndexDailyLimitResetArgs']] daily_limit_reset: Object containing options to override the default daily limit reset time. + :param pulumi.Input[float] daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated. :param pulumi.Input[bool] disable_daily_limit: If true, sets the daily*limit value to null and the index is not limited on a daily basis (any specified daily*limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexExclusionFilterArgs']]]] exclusion_filters: List of exclusion filters. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LogsIndexFilterArgs']]]] filters: Logs filter @@ -401,6 +487,8 @@ def get(resource_name: str, __props__ = _LogsIndexState.__new__(_LogsIndexState) __props__.__dict__["daily_limit"] = daily_limit + __props__.__dict__["daily_limit_reset"] = daily_limit_reset + __props__.__dict__["daily_limit_warning_threshold_percentage"] = daily_limit_warning_threshold_percentage __props__.__dict__["disable_daily_limit"] = disable_daily_limit __props__.__dict__["exclusion_filters"] = exclusion_filters __props__.__dict__["filters"] = filters @@ -416,6 +504,22 @@ def daily_limit(self) -> pulumi.Output[Optional[int]]: """ return pulumi.get(self, "daily_limit") + @property + @pulumi.getter(name="dailyLimitReset") + def daily_limit_reset(self) -> pulumi.Output[Optional['outputs.LogsIndexDailyLimitReset']]: + """ + Object containing options to override the default daily limit reset time. + """ + return pulumi.get(self, "daily_limit_reset") + + @property + @pulumi.getter(name="dailyLimitWarningThresholdPercentage") + def daily_limit_warning_threshold_percentage(self) -> pulumi.Output[float]: + """ + A percentage threshold of the daily quota at which a Datadog warning event is generated. + """ + return pulumi.get(self, "daily_limit_warning_threshold_percentage") + @property @pulumi.getter(name="disableDailyLimit") def disable_daily_limit(self) -> pulumi.Output[bool]: diff --git a/sdk/python/pulumi_datadog/openapi_api.py b/sdk/python/pulumi_datadog/openapi_api.py new file mode 100644 index 000000000..6b2dc7d83 --- /dev/null +++ b/sdk/python/pulumi_datadog/openapi_api.py @@ -0,0 +1,178 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['OpenapiApiArgs', 'OpenapiApi'] + +@pulumi.input_type +class OpenapiApiArgs: + def __init__(__self__, *, + spec: pulumi.Input[str]): + """ + The set of arguments for constructing a OpenapiApi resource. + :param pulumi.Input[str] spec: The OpenAPI spec. + """ + pulumi.set(__self__, "spec", spec) + + @property + @pulumi.getter + def spec(self) -> pulumi.Input[str]: + """ + The OpenAPI spec. + """ + return pulumi.get(self, "spec") + + @spec.setter + def spec(self, value: pulumi.Input[str]): + pulumi.set(self, "spec", value) + + +@pulumi.input_type +class _OpenapiApiState: + def __init__(__self__, *, + spec: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering OpenapiApi resources. + :param pulumi.Input[str] spec: The OpenAPI spec. + """ + if spec is not None: + pulumi.set(__self__, "spec", spec) + + @property + @pulumi.getter + def spec(self) -> Optional[pulumi.Input[str]]: + """ + The OpenAPI spec. + """ + return pulumi.get(self, "spec") + + @spec.setter + def spec(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "spec", value) + + +class OpenapiApi(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + spec: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. + + ## Example Usage + + ```python + import pulumi + import pulumi_datadog as datadog + + # Create new openapi_api resource + my_api = datadog.OpenapiApi("my-api", spec=(lambda path: open(path).read())("./path/my-api.yaml")) + ``` + + ## Import + + ```sh + $ pulumi import datadog:index/openapiApi:OpenapiApi new_list "90646597-5fdb-4a17-a240-647003f8c028" + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] spec: The OpenAPI spec. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: OpenapiApiArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. + + ## Example Usage + + ```python + import pulumi + import pulumi_datadog as datadog + + # Create new openapi_api resource + my_api = datadog.OpenapiApi("my-api", spec=(lambda path: open(path).read())("./path/my-api.yaml")) + ``` + + ## Import + + ```sh + $ pulumi import datadog:index/openapiApi:OpenapiApi new_list "90646597-5fdb-4a17-a240-647003f8c028" + ``` + + :param str resource_name: The name of the resource. + :param OpenapiApiArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(OpenapiApiArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + spec: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = OpenapiApiArgs.__new__(OpenapiApiArgs) + + if spec is None and not opts.urn: + raise TypeError("Missing required property 'spec'") + __props__.__dict__["spec"] = spec + super(OpenapiApi, __self__).__init__( + 'datadog:index/openapiApi:OpenapiApi', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + spec: Optional[pulumi.Input[str]] = None) -> 'OpenapiApi': + """ + Get an existing OpenapiApi resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] spec: The OpenAPI spec. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _OpenapiApiState.__new__(_OpenapiApiState) + + __props__.__dict__["spec"] = spec + return OpenapiApi(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def spec(self) -> pulumi.Output[str]: + """ + The OpenAPI spec. + """ + return pulumi.get(self, "spec") + diff --git a/sdk/python/pulumi_datadog/outputs.py b/sdk/python/pulumi_datadog/outputs.py index e8b6cea45..c376e0234 100644 --- a/sdk/python/pulumi_datadog/outputs.py +++ b/sdk/python/pulumi_datadog/outputs.py @@ -1998,6 +1998,7 @@ 'LogsCustomPipelineProcessorTraceIdRemapper', 'LogsCustomPipelineProcessorUrlParser', 'LogsCustomPipelineProcessorUserAgentParser', + 'LogsIndexDailyLimitReset', 'LogsIndexExclusionFilter', 'LogsIndexExclusionFilterFilter', 'LogsIndexFilter', @@ -2586,12 +2587,22 @@ 'SecurityMonitoringRuleOptions', 'SecurityMonitoringRuleOptionsImpossibleTravelOptions', 'SecurityMonitoringRuleOptionsNewValueOptions', + 'SecurityMonitoringRuleOptionsThirdPartyRuleOptions', + 'SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery', 'SecurityMonitoringRuleQuery', 'SecurityMonitoringRuleQueryAgentRule', 'SecurityMonitoringRuleSignalQuery', + 'SecurityMonitoringRuleThirdPartyCase', 'SensitiveDataScannerGroupFilter', + 'SensitiveDataScannerRuleIncludedKeywordConfiguration', 'SensitiveDataScannerRuleTextReplacement', 'ServiceLevelObjectiveQuery', + 'ServiceLevelObjectiveSliSpecification', + 'ServiceLevelObjectiveSliSpecificationTimeSlice', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQuery', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery', + 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery', 'ServiceLevelObjectiveThreshold', 'SpansMetricCompute', 'SpansMetricFilter', @@ -2642,6 +2653,7 @@ 'GetHostsHostListMetaResult', 'GetHostsHostListMetricsResult', 'GetLogsIndexesLogsIndexResult', + 'GetLogsIndexesLogsIndexDailyLimitResetResult', 'GetLogsIndexesLogsIndexExclusionFilterResult', 'GetLogsIndexesLogsIndexExclusionFilterFilterResult', 'GetLogsIndexesLogsIndexFilterResult', @@ -2665,9 +2677,13 @@ 'GetSecurityMonitoringRulesRuleOptionsResult', 'GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsResult', 'GetSecurityMonitoringRulesRuleOptionsNewValueOptionsResult', + 'GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult', + 'GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult', 'GetSecurityMonitoringRulesRuleQueryResult', 'GetSecurityMonitoringRulesRuleQueryAgentRuleResult', 'GetSecurityMonitoringRulesRuleSignalQueryResult', + 'GetSecurityMonitoringRulesRuleThirdPartyCaseResult', + 'GetSecurityMonitoringSuppressionsSuppressionResult', 'GetServiceLevelObjectiveQueryResult', 'GetServiceLevelObjectivesSloResult', 'GetTeamMembershipsTeamMembershipResult', @@ -143378,6 +143394,54 @@ def name(self) -> Optional[str]: return pulumi.get(self, "name") +@pulumi.output_type +class LogsIndexDailyLimitReset(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "resetTime": + suggest = "reset_time" + elif key == "resetUtcOffset": + suggest = "reset_utc_offset" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in LogsIndexDailyLimitReset. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + LogsIndexDailyLimitReset.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + LogsIndexDailyLimitReset.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + reset_time: str, + reset_utc_offset: str): + """ + :param str reset_time: String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + :param str reset_utc_offset: String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + """ + pulumi.set(__self__, "reset_time", reset_time) + pulumi.set(__self__, "reset_utc_offset", reset_utc_offset) + + @property + @pulumi.getter(name="resetTime") + def reset_time(self) -> str: + """ + String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + """ + return pulumi.get(self, "reset_time") + + @property + @pulumi.getter(name="resetUtcOffset") + def reset_utc_offset(self) -> str: + """ + String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + """ + return pulumi.get(self, "reset_utc_offset") + + @pulumi.output_type class LogsIndexExclusionFilter(dict): @staticmethod @@ -184073,11 +184137,7 @@ class SecurityMonitoringRuleOptions(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "keepAlive": - suggest = "keep_alive" - elif key == "maxSignalDuration": - suggest = "max_signal_duration" - elif key == "decreaseCriticalityBasedOnEnv": + if key == "decreaseCriticalityBasedOnEnv": suggest = "decrease_criticality_based_on_env" elif key == "detectionMethod": suggest = "detection_method" @@ -184085,8 +184145,14 @@ def __key_warning(key: str): suggest = "evaluation_window" elif key == "impossibleTravelOptions": suggest = "impossible_travel_options" + elif key == "keepAlive": + suggest = "keep_alive" + elif key == "maxSignalDuration": + suggest = "max_signal_duration" elif key == "newValueOptions": suggest = "new_value_options" + elif key == "thirdPartyRuleOptions": + suggest = "third_party_rule_options" if suggest: pulumi.log.warn(f"Key '{key}' not found in SecurityMonitoringRuleOptions. Access the value via the '{suggest}' property getter instead.") @@ -184100,24 +184166,24 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - keep_alive: int, - max_signal_duration: int, decrease_criticality_based_on_env: Optional[bool] = None, detection_method: Optional[str] = None, evaluation_window: Optional[int] = None, impossible_travel_options: Optional['outputs.SecurityMonitoringRuleOptionsImpossibleTravelOptions'] = None, - new_value_options: Optional['outputs.SecurityMonitoringRuleOptionsNewValueOptions'] = None): + keep_alive: Optional[int] = None, + max_signal_duration: Optional[int] = None, + new_value_options: Optional['outputs.SecurityMonitoringRuleOptionsNewValueOptions'] = None, + third_party_rule_options: Optional['outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptions'] = None): """ - :param int keep_alive: Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. - :param int max_signal_duration: A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. :param bool decrease_criticality_based_on_env: If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. :param str detection_method: The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `"threshold"`. :param int evaluation_window: A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`. :param 'SecurityMonitoringRuleOptionsImpossibleTravelOptionsArgs' impossible_travel_options: Options for rules using the impossible travel detection method. + :param int keep_alive: Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + :param int max_signal_duration: A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. :param 'SecurityMonitoringRuleOptionsNewValueOptionsArgs' new_value_options: New value rules specific options. + :param 'SecurityMonitoringRuleOptionsThirdPartyRuleOptionsArgs' third_party_rule_options: Options for rules using the third-party detection method. """ - pulumi.set(__self__, "keep_alive", keep_alive) - pulumi.set(__self__, "max_signal_duration", max_signal_duration) if decrease_criticality_based_on_env is not None: pulumi.set(__self__, "decrease_criticality_based_on_env", decrease_criticality_based_on_env) if detection_method is not None: @@ -184126,24 +184192,14 @@ def __init__(__self__, *, pulumi.set(__self__, "evaluation_window", evaluation_window) if impossible_travel_options is not None: pulumi.set(__self__, "impossible_travel_options", impossible_travel_options) + if keep_alive is not None: + pulumi.set(__self__, "keep_alive", keep_alive) + if max_signal_duration is not None: + pulumi.set(__self__, "max_signal_duration", max_signal_duration) if new_value_options is not None: pulumi.set(__self__, "new_value_options", new_value_options) - - @property - @pulumi.getter(name="keepAlive") - def keep_alive(self) -> int: - """ - Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. - """ - return pulumi.get(self, "keep_alive") - - @property - @pulumi.getter(name="maxSignalDuration") - def max_signal_duration(self) -> int: - """ - A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. - """ - return pulumi.get(self, "max_signal_duration") + if third_party_rule_options is not None: + pulumi.set(__self__, "third_party_rule_options", third_party_rule_options) @property @pulumi.getter(name="decreaseCriticalityBasedOnEnv") @@ -184177,6 +184233,22 @@ def impossible_travel_options(self) -> Optional['outputs.SecurityMonitoringRuleO """ return pulumi.get(self, "impossible_travel_options") + @property + @pulumi.getter(name="keepAlive") + def keep_alive(self) -> Optional[int]: + """ + Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + """ + return pulumi.get(self, "keep_alive") + + @property + @pulumi.getter(name="maxSignalDuration") + def max_signal_duration(self) -> Optional[int]: + """ + A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. + """ + return pulumi.get(self, "max_signal_duration") + @property @pulumi.getter(name="newValueOptions") def new_value_options(self) -> Optional['outputs.SecurityMonitoringRuleOptionsNewValueOptions']: @@ -184185,6 +184257,14 @@ def new_value_options(self) -> Optional['outputs.SecurityMonitoringRuleOptionsNe """ return pulumi.get(self, "new_value_options") + @property + @pulumi.getter(name="thirdPartyRuleOptions") + def third_party_rule_options(self) -> Optional['outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptions']: + """ + Options for rules using the third-party detection method. + """ + return pulumi.get(self, "third_party_rule_options") + @pulumi.output_type class SecurityMonitoringRuleOptionsImpossibleTravelOptions(dict): @@ -184299,6 +184379,129 @@ def learning_threshold(self) -> Optional[int]: return pulumi.get(self, "learning_threshold") +@pulumi.output_type +class SecurityMonitoringRuleOptionsThirdPartyRuleOptions(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "defaultStatus": + suggest = "default_status" + elif key == "rootQueries": + suggest = "root_queries" + elif key == "defaultNotifications": + suggest = "default_notifications" + elif key == "signalTitleTemplate": + suggest = "signal_title_template" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in SecurityMonitoringRuleOptionsThirdPartyRuleOptions. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + SecurityMonitoringRuleOptionsThirdPartyRuleOptions.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + SecurityMonitoringRuleOptionsThirdPartyRuleOptions.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + default_status: str, + root_queries: Sequence['outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery'], + default_notifications: Optional[Sequence[str]] = None, + signal_title_template: Optional[str] = None): + """ + :param str default_status: Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + :param Sequence['SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQueryArgs'] root_queries: Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + :param Sequence[str] default_notifications: Notification targets for the default rule case, when none of the third-party cases match. + :param str signal_title_template: A template for the signal title; if omitted, the title is generated based on the case name. + """ + pulumi.set(__self__, "default_status", default_status) + pulumi.set(__self__, "root_queries", root_queries) + if default_notifications is not None: + pulumi.set(__self__, "default_notifications", default_notifications) + if signal_title_template is not None: + pulumi.set(__self__, "signal_title_template", signal_title_template) + + @property + @pulumi.getter(name="defaultStatus") + def default_status(self) -> str: + """ + Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + """ + return pulumi.get(self, "default_status") + + @property + @pulumi.getter(name="rootQueries") + def root_queries(self) -> Sequence['outputs.SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery']: + """ + Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + """ + return pulumi.get(self, "root_queries") + + @property + @pulumi.getter(name="defaultNotifications") + def default_notifications(self) -> Optional[Sequence[str]]: + """ + Notification targets for the default rule case, when none of the third-party cases match. + """ + return pulumi.get(self, "default_notifications") + + @property + @pulumi.getter(name="signalTitleTemplate") + def signal_title_template(self) -> Optional[str]: + """ + A template for the signal title; if omitted, the title is generated based on the case name. + """ + return pulumi.get(self, "signal_title_template") + + +@pulumi.output_type +class SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "groupByFields": + suggest = "group_by_fields" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + SecurityMonitoringRuleOptionsThirdPartyRuleOptionsRootQuery.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + query: str, + group_by_fields: Optional[Sequence[str]] = None): + """ + :param str query: Query for selecting logs to apply the filtering action. + :param Sequence[str] group_by_fields: Fields to group by. If empty, each log triggers a signal. + """ + pulumi.set(__self__, "query", query) + if group_by_fields is not None: + pulumi.set(__self__, "group_by_fields", group_by_fields) + + @property + @pulumi.getter + def query(self) -> str: + """ + Query for selecting logs to apply the filtering action. + """ + return pulumi.get(self, "query") + + @property + @pulumi.getter(name="groupByFields") + def group_by_fields(self) -> Optional[Sequence[str]]: + """ + Fields to group by. If empty, each log triggers a signal. + """ + return pulumi.get(self, "group_by_fields") + + @pulumi.output_type class SecurityMonitoringRuleQuery(dict): @staticmethod @@ -184575,6 +184778,60 @@ def name(self) -> Optional[str]: return pulumi.get(self, "name") +@pulumi.output_type +class SecurityMonitoringRuleThirdPartyCase(dict): + def __init__(__self__, *, + status: str, + name: Optional[str] = None, + notifications: Optional[Sequence[str]] = None, + query: Optional[str] = None): + """ + :param str status: Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + :param str name: Name of the case. + :param Sequence[str] notifications: Notification targets for each rule case. + :param str query: A query to associate a third-party event to this case. + """ + pulumi.set(__self__, "status", status) + if name is not None: + pulumi.set(__self__, "name", name) + if notifications is not None: + pulumi.set(__self__, "notifications", notifications) + if query is not None: + pulumi.set(__self__, "query", query) + + @property + @pulumi.getter + def status(self) -> str: + """ + Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + """ + return pulumi.get(self, "status") + + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + Name of the case. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def notifications(self) -> Optional[Sequence[str]]: + """ + Notification targets for each rule case. + """ + return pulumi.get(self, "notifications") + + @property + @pulumi.getter + def query(self) -> Optional[str]: + """ + A query to associate a third-party event to this case. + """ + return pulumi.get(self, "query") + + @pulumi.output_type class SensitiveDataScannerGroupFilter(dict): def __init__(__self__, *, @@ -184593,6 +184850,52 @@ def query(self) -> str: return pulumi.get(self, "query") +@pulumi.output_type +class SensitiveDataScannerRuleIncludedKeywordConfiguration(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "characterCount": + suggest = "character_count" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in SensitiveDataScannerRuleIncludedKeywordConfiguration. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + SensitiveDataScannerRuleIncludedKeywordConfiguration.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + SensitiveDataScannerRuleIncludedKeywordConfiguration.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + character_count: int, + keywords: Sequence[str]): + """ + :param int character_count: Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + :param Sequence[str] keywords: Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + """ + pulumi.set(__self__, "character_count", character_count) + pulumi.set(__self__, "keywords", keywords) + + @property + @pulumi.getter(name="characterCount") + def character_count(self) -> int: + """ + Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + """ + return pulumi.get(self, "character_count") + + @property + @pulumi.getter + def keywords(self) -> Sequence[str]: + """ + Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + """ + return pulumi.get(self, "keywords") + + @pulumi.output_type class SensitiveDataScannerRuleTextReplacement(dict): @staticmethod @@ -184683,6 +184986,239 @@ def numerator(self) -> str: return pulumi.get(self, "numerator") +@pulumi.output_type +class ServiceLevelObjectiveSliSpecification(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "timeSlice": + suggest = "time_slice" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ServiceLevelObjectiveSliSpecification. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ServiceLevelObjectiveSliSpecification.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ServiceLevelObjectiveSliSpecification.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + time_slice: 'outputs.ServiceLevelObjectiveSliSpecificationTimeSlice'): + """ + :param 'ServiceLevelObjectiveSliSpecificationTimeSliceArgs' time_slice: The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + """ + pulumi.set(__self__, "time_slice", time_slice) + + @property + @pulumi.getter(name="timeSlice") + def time_slice(self) -> 'outputs.ServiceLevelObjectiveSliSpecificationTimeSlice': + """ + The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + """ + return pulumi.get(self, "time_slice") + + +@pulumi.output_type +class ServiceLevelObjectiveSliSpecificationTimeSlice(dict): + def __init__(__self__, *, + comparator: str, + query: 'outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQuery', + threshold: float): + """ + :param str comparator: The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + :param 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryArgs' query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param float threshold: The threshold value to which each SLI value will be compared. + """ + pulumi.set(__self__, "comparator", comparator) + pulumi.set(__self__, "query", query) + pulumi.set(__self__, "threshold", threshold) + + @property + @pulumi.getter + def comparator(self) -> str: + """ + The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + """ + return pulumi.get(self, "comparator") + + @property + @pulumi.getter + def query(self) -> 'outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQuery': + """ + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + return pulumi.get(self, "query") + + @property + @pulumi.getter + def threshold(self) -> float: + """ + The threshold value to which each SLI value will be compared. + """ + return pulumi.get(self, "threshold") + + +@pulumi.output_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQuery(dict): + def __init__(__self__, *, + formula: 'outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula', + queries: Sequence['outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery']): + """ + :param 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormulaArgs' formula: A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + :param Sequence['ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryArgs'] queries: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + pulumi.set(__self__, "formula", formula) + pulumi.set(__self__, "queries", queries) + + @property + @pulumi.getter + def formula(self) -> 'outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula': + """ + A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + """ + return pulumi.get(self, "formula") + + @property + @pulumi.getter + def queries(self) -> Sequence['outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery']: + """ + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + return pulumi.get(self, "queries") + + +@pulumi.output_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "formulaExpression": + suggest = "formula_expression" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ServiceLevelObjectiveSliSpecificationTimeSliceQueryFormula.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + formula_expression: str): + """ + :param str formula_expression: The formula string, which is an expression involving named queries. + """ + pulumi.set(__self__, "formula_expression", formula_expression) + + @property + @pulumi.getter(name="formulaExpression") + def formula_expression(self) -> str: + """ + The formula string, which is an expression involving named queries. + """ + return pulumi.get(self, "formula_expression") + + +@pulumi.output_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "metricQuery": + suggest = "metric_query" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ServiceLevelObjectiveSliSpecificationTimeSliceQueryQuery.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + metric_query: Optional['outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery'] = None): + """ + :param 'ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQueryArgs' metric_query: A timeseries formula and functions metrics query. + """ + if metric_query is not None: + pulumi.set(__self__, "metric_query", metric_query) + + @property + @pulumi.getter(name="metricQuery") + def metric_query(self) -> Optional['outputs.ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery']: + """ + A timeseries formula and functions metrics query. + """ + return pulumi.get(self, "metric_query") + + +@pulumi.output_type +class ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "dataSource": + suggest = "data_source" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ServiceLevelObjectiveSliSpecificationTimeSliceQueryQueryMetricQuery.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + name: str, + query: str, + data_source: Optional[str] = None): + """ + :param str name: The name of the query for use in formulas. + :param str query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param str data_source: The data source for metrics queries. Defaults to `"metrics"`. + """ + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "query", query) + if data_source is not None: + pulumi.set(__self__, "data_source", data_source) + + @property + @pulumi.getter + def name(self) -> str: + """ + The name of the query for use in formulas. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def query(self) -> str: + """ + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + """ + return pulumi.get(self, "query") + + @property + @pulumi.getter(name="dataSource") + def data_source(self) -> Optional[str]: + """ + The data source for metrics queries. Defaults to `"metrics"`. + """ + return pulumi.get(self, "data_source") + + @pulumi.output_type class ServiceLevelObjectiveThreshold(dict): @staticmethod @@ -188505,18 +189041,24 @@ def load(self) -> float: class GetLogsIndexesLogsIndexResult(dict): def __init__(__self__, *, daily_limit: int, + daily_limit_resets: Sequence['outputs.GetLogsIndexesLogsIndexDailyLimitResetResult'], + daily_limit_warning_threshold_percentage: float, exclusion_filters: Sequence['outputs.GetLogsIndexesLogsIndexExclusionFilterResult'], filters: Sequence['outputs.GetLogsIndexesLogsIndexFilterResult'], name: str, retention_days: int): """ :param int daily_limit: The number of log events you can send in this index per day before you are rate-limited. + :param Sequence['GetLogsIndexesLogsIndexDailyLimitResetArgs'] daily_limit_resets: Object containing options to override the default daily limit reset time. + :param float daily_limit_warning_threshold_percentage: The percentage threshold of the daily quota at which a Datadog warning event is generated. :param Sequence['GetLogsIndexesLogsIndexExclusionFilterArgs'] exclusion_filters: List of exclusion filters. :param Sequence['GetLogsIndexesLogsIndexFilterArgs'] filters: Logs filter :param str name: The name of the index. :param int retention_days: The number of days before logs are deleted from this index. """ pulumi.set(__self__, "daily_limit", daily_limit) + pulumi.set(__self__, "daily_limit_resets", daily_limit_resets) + pulumi.set(__self__, "daily_limit_warning_threshold_percentage", daily_limit_warning_threshold_percentage) pulumi.set(__self__, "exclusion_filters", exclusion_filters) pulumi.set(__self__, "filters", filters) pulumi.set(__self__, "name", name) @@ -188530,6 +189072,22 @@ def daily_limit(self) -> int: """ return pulumi.get(self, "daily_limit") + @property + @pulumi.getter(name="dailyLimitResets") + def daily_limit_resets(self) -> Sequence['outputs.GetLogsIndexesLogsIndexDailyLimitResetResult']: + """ + Object containing options to override the default daily limit reset time. + """ + return pulumi.get(self, "daily_limit_resets") + + @property + @pulumi.getter(name="dailyLimitWarningThresholdPercentage") + def daily_limit_warning_threshold_percentage(self) -> float: + """ + The percentage threshold of the daily quota at which a Datadog warning event is generated. + """ + return pulumi.get(self, "daily_limit_warning_threshold_percentage") + @property @pulumi.getter(name="exclusionFilters") def exclusion_filters(self) -> Sequence['outputs.GetLogsIndexesLogsIndexExclusionFilterResult']: @@ -188563,6 +189121,35 @@ def retention_days(self) -> int: return pulumi.get(self, "retention_days") +@pulumi.output_type +class GetLogsIndexesLogsIndexDailyLimitResetResult(dict): + def __init__(__self__, *, + reset_time: str, + reset_utc_offset: str): + """ + :param str reset_time: String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + :param str reset_utc_offset: String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + """ + pulumi.set(__self__, "reset_time", reset_time) + pulumi.set(__self__, "reset_utc_offset", reset_utc_offset) + + @property + @pulumi.getter(name="resetTime") + def reset_time(self) -> str: + """ + String in `HH:00` format representing the time of day the daily limit should be reset. The hours between 00 and 23 (inclusive). + """ + return pulumi.get(self, "reset_time") + + @property + @pulumi.getter(name="resetUtcOffset") + def reset_utc_offset(self) -> str: + """ + String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours between -12 and +14 (inclusive). + """ + return pulumi.get(self, "reset_utc_offset") + + @pulumi.output_type class GetLogsIndexesLogsIndexExclusionFilterResult(dict): def __init__(__self__, *, @@ -189198,9 +189785,9 @@ def query(self) -> str: @pulumi.output_type class GetSecurityMonitoringRulesRuleResult(dict): def __init__(__self__, *, - cases: Sequence['outputs.GetSecurityMonitoringRulesRuleCaseResult'], message: str, name: str, + cases: Optional[Sequence['outputs.GetSecurityMonitoringRulesRuleCaseResult']] = None, enabled: Optional[bool] = None, filters: Optional[Sequence['outputs.GetSecurityMonitoringRulesRuleFilterResult']] = None, has_extended_title: Optional[bool] = None, @@ -189208,11 +189795,12 @@ def __init__(__self__, *, queries: Optional[Sequence['outputs.GetSecurityMonitoringRulesRuleQueryResult']] = None, signal_queries: Optional[Sequence['outputs.GetSecurityMonitoringRulesRuleSignalQueryResult']] = None, tags: Optional[Sequence[str]] = None, + third_party_cases: Optional[Sequence['outputs.GetSecurityMonitoringRulesRuleThirdPartyCaseResult']] = None, type: Optional[str] = None): """ - :param Sequence['GetSecurityMonitoringRulesRuleCaseArgs'] cases: Cases for generating signals. :param str message: Message for generated signals. :param str name: The name of the rule. + :param Sequence['GetSecurityMonitoringRulesRuleCaseArgs'] cases: Cases for generating signals. :param bool enabled: Whether the rule is enabled. :param Sequence['GetSecurityMonitoringRulesRuleFilterArgs'] filters: Additional queries to filter matched events before they are processed. :param bool has_extended_title: Whether the notifications include the triggering group-by values in their title. @@ -189220,11 +189808,13 @@ def __init__(__self__, *, :param Sequence['GetSecurityMonitoringRulesRuleQueryArgs'] queries: Queries for selecting logs which are part of the rule. :param Sequence['GetSecurityMonitoringRulesRuleSignalQueryArgs'] signal_queries: Queries for selecting logs which are part of the rule. :param Sequence[str] tags: Tags for generated signals. + :param Sequence['GetSecurityMonitoringRulesRuleThirdPartyCaseArgs'] third_party_cases: Cases for generating signals for third-party rules. Only required and accepted for third-party rules :param str type: The rule type. """ - pulumi.set(__self__, "cases", cases) pulumi.set(__self__, "message", message) pulumi.set(__self__, "name", name) + if cases is not None: + pulumi.set(__self__, "cases", cases) if enabled is not None: pulumi.set(__self__, "enabled", enabled) if filters is not None: @@ -189239,17 +189829,11 @@ def __init__(__self__, *, pulumi.set(__self__, "signal_queries", signal_queries) if tags is not None: pulumi.set(__self__, "tags", tags) + if third_party_cases is not None: + pulumi.set(__self__, "third_party_cases", third_party_cases) if type is not None: pulumi.set(__self__, "type", type) - @property - @pulumi.getter - def cases(self) -> Sequence['outputs.GetSecurityMonitoringRulesRuleCaseResult']: - """ - Cases for generating signals. - """ - return pulumi.get(self, "cases") - @property @pulumi.getter def message(self) -> str: @@ -189266,6 +189850,14 @@ def name(self) -> str: """ return pulumi.get(self, "name") + @property + @pulumi.getter + def cases(self) -> Optional[Sequence['outputs.GetSecurityMonitoringRulesRuleCaseResult']]: + """ + Cases for generating signals. + """ + return pulumi.get(self, "cases") + @property @pulumi.getter def enabled(self) -> Optional[bool]: @@ -189322,6 +189914,14 @@ def tags(self) -> Optional[Sequence[str]]: """ return pulumi.get(self, "tags") + @property + @pulumi.getter(name="thirdPartyCases") + def third_party_cases(self) -> Optional[Sequence['outputs.GetSecurityMonitoringRulesRuleThirdPartyCaseResult']]: + """ + Cases for generating signals for third-party rules. Only required and accepted for third-party rules + """ + return pulumi.get(self, "third_party_cases") + @property @pulumi.getter def type(self) -> Optional[str]: @@ -189417,24 +190017,24 @@ def query(self) -> str: @pulumi.output_type class GetSecurityMonitoringRulesRuleOptionsResult(dict): def __init__(__self__, *, - keep_alive: int, - max_signal_duration: int, decrease_criticality_based_on_env: Optional[bool] = None, detection_method: Optional[str] = None, evaluation_window: Optional[int] = None, impossible_travel_options: Optional['outputs.GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsResult'] = None, - new_value_options: Optional['outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptionsResult'] = None): + keep_alive: Optional[int] = None, + max_signal_duration: Optional[int] = None, + new_value_options: Optional['outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptionsResult'] = None, + third_party_rule_options: Optional['outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult'] = None): """ - :param int keep_alive: Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). - :param int max_signal_duration: A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. :param bool decrease_criticality_based_on_env: If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. :param str detection_method: The detection method. :param int evaluation_window: A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. :param 'GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsArgs' impossible_travel_options: Options for rules using the impossible travel detection method. + :param int keep_alive: Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). + :param int max_signal_duration: A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. :param 'GetSecurityMonitoringRulesRuleOptionsNewValueOptionsArgs' new_value_options: New value rules specific options. + :param 'GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsArgs' third_party_rule_options: Options for rules using the third-party detection method. """ - pulumi.set(__self__, "keep_alive", keep_alive) - pulumi.set(__self__, "max_signal_duration", max_signal_duration) if decrease_criticality_based_on_env is not None: pulumi.set(__self__, "decrease_criticality_based_on_env", decrease_criticality_based_on_env) if detection_method is not None: @@ -189443,24 +190043,14 @@ def __init__(__self__, *, pulumi.set(__self__, "evaluation_window", evaluation_window) if impossible_travel_options is not None: pulumi.set(__self__, "impossible_travel_options", impossible_travel_options) + if keep_alive is not None: + pulumi.set(__self__, "keep_alive", keep_alive) + if max_signal_duration is not None: + pulumi.set(__self__, "max_signal_duration", max_signal_duration) if new_value_options is not None: pulumi.set(__self__, "new_value_options", new_value_options) - - @property - @pulumi.getter(name="keepAlive") - def keep_alive(self) -> int: - """ - Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). - """ - return pulumi.get(self, "keep_alive") - - @property - @pulumi.getter(name="maxSignalDuration") - def max_signal_duration(self) -> int: - """ - A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. - """ - return pulumi.get(self, "max_signal_duration") + if third_party_rule_options is not None: + pulumi.set(__self__, "third_party_rule_options", third_party_rule_options) @property @pulumi.getter(name="decreaseCriticalityBasedOnEnv") @@ -189494,6 +190084,22 @@ def impossible_travel_options(self) -> Optional['outputs.GetSecurityMonitoringRu """ return pulumi.get(self, "impossible_travel_options") + @property + @pulumi.getter(name="keepAlive") + def keep_alive(self) -> Optional[int]: + """ + Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). + """ + return pulumi.get(self, "keep_alive") + + @property + @pulumi.getter(name="maxSignalDuration") + def max_signal_duration(self) -> Optional[int]: + """ + A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. + """ + return pulumi.get(self, "max_signal_duration") + @property @pulumi.getter(name="newValueOptions") def new_value_options(self) -> Optional['outputs.GetSecurityMonitoringRulesRuleOptionsNewValueOptionsResult']: @@ -189502,6 +190108,14 @@ def new_value_options(self) -> Optional['outputs.GetSecurityMonitoringRulesRuleO """ return pulumi.get(self, "new_value_options") + @property + @pulumi.getter(name="thirdPartyRuleOptions") + def third_party_rule_options(self) -> Optional['outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult']: + """ + Options for rules using the third-party detection method. + """ + return pulumi.get(self, "third_party_rule_options") + @pulumi.output_type class GetSecurityMonitoringRulesRuleOptionsImpossibleTravelOptionsResult(dict): @@ -189576,6 +190190,89 @@ def learning_threshold(self) -> Optional[int]: return pulumi.get(self, "learning_threshold") +@pulumi.output_type +class GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsResult(dict): + def __init__(__self__, *, + default_status: str, + root_queries: Sequence['outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult'], + default_notifications: Optional[Sequence[str]] = None, + signal_title_template: Optional[str] = None): + """ + :param str default_status: Severity of the default rule case, when none of the third-party cases match. + :param Sequence['GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryArgs'] root_queries: Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + :param Sequence[str] default_notifications: Notification targets for the default rule case, when none of the third-party cases match. + :param str signal_title_template: A template for the signal title; if omitted, the title is generated based on the case name. + """ + pulumi.set(__self__, "default_status", default_status) + pulumi.set(__self__, "root_queries", root_queries) + if default_notifications is not None: + pulumi.set(__self__, "default_notifications", default_notifications) + if signal_title_template is not None: + pulumi.set(__self__, "signal_title_template", signal_title_template) + + @property + @pulumi.getter(name="defaultStatus") + def default_status(self) -> str: + """ + Severity of the default rule case, when none of the third-party cases match. + """ + return pulumi.get(self, "default_status") + + @property + @pulumi.getter(name="rootQueries") + def root_queries(self) -> Sequence['outputs.GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult']: + """ + Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + """ + return pulumi.get(self, "root_queries") + + @property + @pulumi.getter(name="defaultNotifications") + def default_notifications(self) -> Optional[Sequence[str]]: + """ + Notification targets for the default rule case, when none of the third-party cases match. + """ + return pulumi.get(self, "default_notifications") + + @property + @pulumi.getter(name="signalTitleTemplate") + def signal_title_template(self) -> Optional[str]: + """ + A template for the signal title; if omitted, the title is generated based on the case name. + """ + return pulumi.get(self, "signal_title_template") + + +@pulumi.output_type +class GetSecurityMonitoringRulesRuleOptionsThirdPartyRuleOptionsRootQueryResult(dict): + def __init__(__self__, *, + query: str, + group_by_fields: Optional[Sequence[str]] = None): + """ + :param str query: Query to filter logs. + :param Sequence[str] group_by_fields: Fields to group by. If empty, each log triggers a signal. + """ + pulumi.set(__self__, "query", query) + if group_by_fields is not None: + pulumi.set(__self__, "group_by_fields", group_by_fields) + + @property + @pulumi.getter + def query(self) -> str: + """ + Query to filter logs. + """ + return pulumi.get(self, "query") + + @property + @pulumi.getter(name="groupByFields") + def group_by_fields(self) -> Optional[Sequence[str]]: + """ + Fields to group by. If empty, each log triggers a signal. + """ + return pulumi.get(self, "group_by_fields") + + @pulumi.output_type class GetSecurityMonitoringRulesRuleQueryResult(dict): def __init__(__self__, *, @@ -189790,6 +190487,114 @@ def name(self) -> Optional[str]: return pulumi.get(self, "name") +@pulumi.output_type +class GetSecurityMonitoringRulesRuleThirdPartyCaseResult(dict): + def __init__(__self__, *, + status: str, + name: Optional[str] = None, + notifications: Optional[Sequence[str]] = None, + query: Optional[str] = None): + """ + :param str status: Severity of the Security Signal. + :param str name: Name of the case. + :param Sequence[str] notifications: Notification targets for each rule case. + :param str query: A query to associate a third-party event to this case. + """ + pulumi.set(__self__, "status", status) + if name is not None: + pulumi.set(__self__, "name", name) + if notifications is not None: + pulumi.set(__self__, "notifications", notifications) + if query is not None: + pulumi.set(__self__, "query", query) + + @property + @pulumi.getter + def status(self) -> str: + """ + Severity of the Security Signal. + """ + return pulumi.get(self, "status") + + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + Name of the case. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def notifications(self) -> Optional[Sequence[str]]: + """ + Notification targets for each rule case. + """ + return pulumi.get(self, "notifications") + + @property + @pulumi.getter + def query(self) -> Optional[str]: + """ + A query to associate a third-party event to this case. + """ + return pulumi.get(self, "query") + + +@pulumi.output_type +class GetSecurityMonitoringSuppressionsSuppressionResult(dict): + def __init__(__self__, *, + description: str, + enabled: bool, + expiration_date: str, + id: str, + name: str, + rule_query: str, + suppression_query: str): + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "enabled", enabled) + pulumi.set(__self__, "expiration_date", expiration_date) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "rule_query", rule_query) + pulumi.set(__self__, "suppression_query", suppression_query) + + @property + @pulumi.getter + def description(self) -> str: + return pulumi.get(self, "description") + + @property + @pulumi.getter + def enabled(self) -> bool: + return pulumi.get(self, "enabled") + + @property + @pulumi.getter(name="expirationDate") + def expiration_date(self) -> str: + return pulumi.get(self, "expiration_date") + + @property + @pulumi.getter + def id(self) -> str: + return pulumi.get(self, "id") + + @property + @pulumi.getter + def name(self) -> str: + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="ruleQuery") + def rule_query(self) -> str: + return pulumi.get(self, "rule_query") + + @property + @pulumi.getter(name="suppressionQuery") + def suppression_query(self) -> str: + return pulumi.get(self, "suppression_query") + + @pulumi.output_type class GetServiceLevelObjectiveQueryResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_datadog/security_monitoring_rule.py b/sdk/python/pulumi_datadog/security_monitoring_rule.py index 039a72c05..40160054c 100644 --- a/sdk/python/pulumi_datadog/security_monitoring_rule.py +++ b/sdk/python/pulumi_datadog/security_monitoring_rule.py @@ -16,9 +16,9 @@ @pulumi.input_type class SecurityMonitoringRuleArgs: def __init__(__self__, *, - cases: pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]], message: pulumi.Input[str], name: pulumi.Input[str], + cases: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]]] = None, enabled: Optional[pulumi.Input[bool]] = None, filters: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleFilterArgs']]]] = None, has_extended_title: Optional[pulumi.Input[bool]] = None, @@ -26,12 +26,13 @@ def __init__(__self__, *, queries: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleQueryArgs']]]] = None, signal_queries: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleSignalQueryArgs']]]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + third_party_cases: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]]] = None, type: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a SecurityMonitoringRule resource. - :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]] cases: Cases for generating signals. :param pulumi.Input[str] message: Message for generated signals. :param pulumi.Input[str] name: Name of the case. + :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]] cases: Cases for generating signals. :param pulumi.Input[bool] enabled: Whether the rule is enabled. Defaults to `true`. :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleFilterArgs']]] filters: Additional queries to filter matched events before they are processed. :param pulumi.Input[bool] has_extended_title: Whether the notifications include the triggering group-by values in their title. Defaults to `false`. @@ -39,11 +40,13 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleQueryArgs']]] queries: Query for selecting logs to apply the filtering action. :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleSignalQueryArgs']]] signal_queries: Queries for selecting logs which are part of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags for generated signals. + :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]] third_party_cases: Cases for generating signals for third-party rules. Only required and accepted for third-party rules :param pulumi.Input[str] type: The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. """ - pulumi.set(__self__, "cases", cases) pulumi.set(__self__, "message", message) pulumi.set(__self__, "name", name) + if cases is not None: + pulumi.set(__self__, "cases", cases) if enabled is not None: pulumi.set(__self__, "enabled", enabled) if filters is not None: @@ -58,21 +61,11 @@ def __init__(__self__, *, pulumi.set(__self__, "signal_queries", signal_queries) if tags is not None: pulumi.set(__self__, "tags", tags) + if third_party_cases is not None: + pulumi.set(__self__, "third_party_cases", third_party_cases) if type is not None: pulumi.set(__self__, "type", type) - @property - @pulumi.getter - def cases(self) -> pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]]: - """ - Cases for generating signals. - """ - return pulumi.get(self, "cases") - - @cases.setter - def cases(self, value: pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]]): - pulumi.set(self, "cases", value) - @property @pulumi.getter def message(self) -> pulumi.Input[str]: @@ -97,6 +90,18 @@ def name(self) -> pulumi.Input[str]: def name(self, value: pulumi.Input[str]): pulumi.set(self, "name", value) + @property + @pulumi.getter + def cases(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]]]: + """ + Cases for generating signals. + """ + return pulumi.get(self, "cases") + + @cases.setter + def cases(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleCaseArgs']]]]): + pulumi.set(self, "cases", value) + @property @pulumi.getter def enabled(self) -> Optional[pulumi.Input[bool]]: @@ -181,6 +186,18 @@ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "tags", value) + @property + @pulumi.getter(name="thirdPartyCases") + def third_party_cases(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]]]: + """ + Cases for generating signals for third-party rules. Only required and accepted for third-party rules + """ + return pulumi.get(self, "third_party_cases") + + @third_party_cases.setter + def third_party_cases(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]]]): + pulumi.set(self, "third_party_cases", value) + @property @pulumi.getter def type(self) -> Optional[pulumi.Input[str]]: @@ -207,6 +224,7 @@ def __init__(__self__, *, queries: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleQueryArgs']]]] = None, signal_queries: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleSignalQueryArgs']]]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + third_party_cases: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]]] = None, type: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering SecurityMonitoringRule resources. @@ -220,6 +238,7 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleQueryArgs']]] queries: Query for selecting logs to apply the filtering action. :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleSignalQueryArgs']]] signal_queries: Queries for selecting logs which are part of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags for generated signals. + :param pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]] third_party_cases: Cases for generating signals for third-party rules. Only required and accepted for third-party rules :param pulumi.Input[str] type: The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. """ if cases is not None: @@ -242,6 +261,8 @@ def __init__(__self__, *, pulumi.set(__self__, "signal_queries", signal_queries) if tags is not None: pulumi.set(__self__, "tags", tags) + if third_party_cases is not None: + pulumi.set(__self__, "third_party_cases", third_party_cases) if type is not None: pulumi.set(__self__, "type", type) @@ -365,6 +386,18 @@ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "tags", value) + @property + @pulumi.getter(name="thirdPartyCases") + def third_party_cases(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]]]: + """ + Cases for generating signals for third-party rules. Only required and accepted for third-party rules + """ + return pulumi.get(self, "third_party_cases") + + @third_party_cases.setter + def third_party_cases(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityMonitoringRuleThirdPartyCaseArgs']]]]): + pulumi.set(self, "third_party_cases", value) + @property @pulumi.getter def type(self) -> Optional[pulumi.Input[str]]: @@ -393,6 +426,7 @@ def __init__(__self__, queries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleQueryArgs']]]]] = None, signal_queries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleSignalQueryArgs']]]]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + third_party_cases: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleThirdPartyCaseArgs']]]]] = None, type: Optional[pulumi.Input[str]] = None, __props__=None): """ @@ -455,6 +489,7 @@ def __init__(__self__, :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleQueryArgs']]]] queries: Query for selecting logs to apply the filtering action. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleSignalQueryArgs']]]] signal_queries: Queries for selecting logs which are part of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags for generated signals. + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleThirdPartyCaseArgs']]]] third_party_cases: Cases for generating signals for third-party rules. Only required and accepted for third-party rules :param pulumi.Input[str] type: The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. """ ... @@ -536,6 +571,7 @@ def _internal_init(__self__, queries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleQueryArgs']]]]] = None, signal_queries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleSignalQueryArgs']]]]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + third_party_cases: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleThirdPartyCaseArgs']]]]] = None, type: Optional[pulumi.Input[str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) @@ -546,8 +582,6 @@ def _internal_init(__self__, raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') __props__ = SecurityMonitoringRuleArgs.__new__(SecurityMonitoringRuleArgs) - if cases is None and not opts.urn: - raise TypeError("Missing required property 'cases'") __props__.__dict__["cases"] = cases __props__.__dict__["enabled"] = enabled __props__.__dict__["filters"] = filters @@ -562,6 +596,7 @@ def _internal_init(__self__, __props__.__dict__["queries"] = queries __props__.__dict__["signal_queries"] = signal_queries __props__.__dict__["tags"] = tags + __props__.__dict__["third_party_cases"] = third_party_cases __props__.__dict__["type"] = type super(SecurityMonitoringRule, __self__).__init__( 'datadog:index/securityMonitoringRule:SecurityMonitoringRule', @@ -583,6 +618,7 @@ def get(resource_name: str, queries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleQueryArgs']]]]] = None, signal_queries: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleSignalQueryArgs']]]]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + third_party_cases: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleThirdPartyCaseArgs']]]]] = None, type: Optional[pulumi.Input[str]] = None) -> 'SecurityMonitoringRule': """ Get an existing SecurityMonitoringRule resource's state with the given name, id, and optional extra @@ -601,6 +637,7 @@ def get(resource_name: str, :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleQueryArgs']]]] queries: Query for selecting logs to apply the filtering action. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleSignalQueryArgs']]]] signal_queries: Queries for selecting logs which are part of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags for generated signals. + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecurityMonitoringRuleThirdPartyCaseArgs']]]] third_party_cases: Cases for generating signals for third-party rules. Only required and accepted for third-party rules :param pulumi.Input[str] type: The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -617,12 +654,13 @@ def get(resource_name: str, __props__.__dict__["queries"] = queries __props__.__dict__["signal_queries"] = signal_queries __props__.__dict__["tags"] = tags + __props__.__dict__["third_party_cases"] = third_party_cases __props__.__dict__["type"] = type return SecurityMonitoringRule(resource_name, opts=opts, __props__=__props__) @property @pulumi.getter - def cases(self) -> pulumi.Output[Sequence['outputs.SecurityMonitoringRuleCase']]: + def cases(self) -> pulumi.Output[Optional[Sequence['outputs.SecurityMonitoringRuleCase']]]: """ Cases for generating signals. """ @@ -700,6 +738,14 @@ def tags(self) -> pulumi.Output[Optional[Sequence[str]]]: """ return pulumi.get(self, "tags") + @property + @pulumi.getter(name="thirdPartyCases") + def third_party_cases(self) -> pulumi.Output[Optional[Sequence['outputs.SecurityMonitoringRuleThirdPartyCase']]]: + """ + Cases for generating signals for third-party rules. Only required and accepted for third-party rules + """ + return pulumi.get(self, "third_party_cases") + @property @pulumi.getter def type(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_datadog/security_monitoring_suppression.py b/sdk/python/pulumi_datadog/security_monitoring_suppression.py new file mode 100644 index 000000000..e4e740d96 --- /dev/null +++ b/sdk/python/pulumi_datadog/security_monitoring_suppression.py @@ -0,0 +1,384 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['SecurityMonitoringSuppressionArgs', 'SecurityMonitoringSuppression'] + +@pulumi.input_type +class SecurityMonitoringSuppressionArgs: + def __init__(__self__, *, + enabled: pulumi.Input[bool], + name: pulumi.Input[str], + rule_query: pulumi.Input[str], + suppression_query: pulumi.Input[str], + description: Optional[pulumi.Input[str]] = None, + expiration_date: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a SecurityMonitoringSuppression resource. + :param pulumi.Input[bool] enabled: Whether the suppression rule is enabled. + :param pulumi.Input[str] name: The name of the suppression rule. + :param pulumi.Input[str] rule_query: The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + :param pulumi.Input[str] suppression_query: The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + :param pulumi.Input[str] description: A description for the suppression rule. + :param pulumi.Input[str] expiration_date: A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + """ + pulumi.set(__self__, "enabled", enabled) + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "rule_query", rule_query) + pulumi.set(__self__, "suppression_query", suppression_query) + if description is not None: + pulumi.set(__self__, "description", description) + if expiration_date is not None: + pulumi.set(__self__, "expiration_date", expiration_date) + + @property + @pulumi.getter + def enabled(self) -> pulumi.Input[bool]: + """ + Whether the suppression rule is enabled. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[bool]): + pulumi.set(self, "enabled", value) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + The name of the suppression rule. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="ruleQuery") + def rule_query(self) -> pulumi.Input[str]: + """ + The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + """ + return pulumi.get(self, "rule_query") + + @rule_query.setter + def rule_query(self, value: pulumi.Input[str]): + pulumi.set(self, "rule_query", value) + + @property + @pulumi.getter(name="suppressionQuery") + def suppression_query(self) -> pulumi.Input[str]: + """ + The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + """ + return pulumi.get(self, "suppression_query") + + @suppression_query.setter + def suppression_query(self, value: pulumi.Input[str]): + pulumi.set(self, "suppression_query", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + A description for the suppression rule. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="expirationDate") + def expiration_date(self) -> Optional[pulumi.Input[str]]: + """ + A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + """ + return pulumi.get(self, "expiration_date") + + @expiration_date.setter + def expiration_date(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "expiration_date", value) + + +@pulumi.input_type +class _SecurityMonitoringSuppressionState: + def __init__(__self__, *, + description: Optional[pulumi.Input[str]] = None, + enabled: Optional[pulumi.Input[bool]] = None, + expiration_date: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + rule_query: Optional[pulumi.Input[str]] = None, + suppression_query: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering SecurityMonitoringSuppression resources. + :param pulumi.Input[str] description: A description for the suppression rule. + :param pulumi.Input[bool] enabled: Whether the suppression rule is enabled. + :param pulumi.Input[str] expiration_date: A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + :param pulumi.Input[str] name: The name of the suppression rule. + :param pulumi.Input[str] rule_query: The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + :param pulumi.Input[str] suppression_query: The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + """ + if description is not None: + pulumi.set(__self__, "description", description) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + if expiration_date is not None: + pulumi.set(__self__, "expiration_date", expiration_date) + if name is not None: + pulumi.set(__self__, "name", name) + if rule_query is not None: + pulumi.set(__self__, "rule_query", rule_query) + if suppression_query is not None: + pulumi.set(__self__, "suppression_query", suppression_query) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + A description for the suppression rule. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter + def enabled(self) -> Optional[pulumi.Input[bool]]: + """ + Whether the suppression rule is enabled. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "enabled", value) + + @property + @pulumi.getter(name="expirationDate") + def expiration_date(self) -> Optional[pulumi.Input[str]]: + """ + A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + """ + return pulumi.get(self, "expiration_date") + + @expiration_date.setter + def expiration_date(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "expiration_date", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the suppression rule. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="ruleQuery") + def rule_query(self) -> Optional[pulumi.Input[str]]: + """ + The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + """ + return pulumi.get(self, "rule_query") + + @rule_query.setter + def rule_query(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "rule_query", value) + + @property + @pulumi.getter(name="suppressionQuery") + def suppression_query(self) -> Optional[pulumi.Input[str]]: + """ + The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + """ + return pulumi.get(self, "suppression_query") + + @suppression_query.setter + def suppression_query(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "suppression_query", value) + + +class SecurityMonitoringSuppression(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + enabled: Optional[pulumi.Input[bool]] = None, + expiration_date: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + rule_query: Optional[pulumi.Input[str]] = None, + suppression_query: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules. + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] description: A description for the suppression rule. + :param pulumi.Input[bool] enabled: Whether the suppression rule is enabled. + :param pulumi.Input[str] expiration_date: A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + :param pulumi.Input[str] name: The name of the suppression rule. + :param pulumi.Input[str] rule_query: The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + :param pulumi.Input[str] suppression_query: The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: SecurityMonitoringSuppressionArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules. + + :param str resource_name: The name of the resource. + :param SecurityMonitoringSuppressionArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(SecurityMonitoringSuppressionArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + enabled: Optional[pulumi.Input[bool]] = None, + expiration_date: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + rule_query: Optional[pulumi.Input[str]] = None, + suppression_query: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = SecurityMonitoringSuppressionArgs.__new__(SecurityMonitoringSuppressionArgs) + + __props__.__dict__["description"] = description + if enabled is None and not opts.urn: + raise TypeError("Missing required property 'enabled'") + __props__.__dict__["enabled"] = enabled + __props__.__dict__["expiration_date"] = expiration_date + if name is None and not opts.urn: + raise TypeError("Missing required property 'name'") + __props__.__dict__["name"] = name + if rule_query is None and not opts.urn: + raise TypeError("Missing required property 'rule_query'") + __props__.__dict__["rule_query"] = rule_query + if suppression_query is None and not opts.urn: + raise TypeError("Missing required property 'suppression_query'") + __props__.__dict__["suppression_query"] = suppression_query + super(SecurityMonitoringSuppression, __self__).__init__( + 'datadog:index/securityMonitoringSuppression:SecurityMonitoringSuppression', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + enabled: Optional[pulumi.Input[bool]] = None, + expiration_date: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + rule_query: Optional[pulumi.Input[str]] = None, + suppression_query: Optional[pulumi.Input[str]] = None) -> 'SecurityMonitoringSuppression': + """ + Get an existing SecurityMonitoringSuppression resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] description: A description for the suppression rule. + :param pulumi.Input[bool] enabled: Whether the suppression rule is enabled. + :param pulumi.Input[str] expiration_date: A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + :param pulumi.Input[str] name: The name of the suppression rule. + :param pulumi.Input[str] rule_query: The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + :param pulumi.Input[str] suppression_query: The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _SecurityMonitoringSuppressionState.__new__(_SecurityMonitoringSuppressionState) + + __props__.__dict__["description"] = description + __props__.__dict__["enabled"] = enabled + __props__.__dict__["expiration_date"] = expiration_date + __props__.__dict__["name"] = name + __props__.__dict__["rule_query"] = rule_query + __props__.__dict__["suppression_query"] = suppression_query + return SecurityMonitoringSuppression(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[str]]: + """ + A description for the suppression rule. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter + def enabled(self) -> pulumi.Output[bool]: + """ + Whether the suppression rule is enabled. + """ + return pulumi.get(self, "enabled") + + @property + @pulumi.getter(name="expirationDate") + def expiration_date(self) -> pulumi.Output[Optional[str]]: + """ + A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + """ + return pulumi.get(self, "expiration_date") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the suppression rule. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="ruleQuery") + def rule_query(self) -> pulumi.Output[str]: + """ + The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + """ + return pulumi.get(self, "rule_query") + + @property + @pulumi.getter(name="suppressionQuery") + def suppression_query(self) -> pulumi.Output[str]: + """ + The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + """ + return pulumi.get(self, "suppression_query") + diff --git a/sdk/python/pulumi_datadog/sensitive_data_scanner_rule.py b/sdk/python/pulumi_datadog/sensitive_data_scanner_rule.py index 7ebc34810..a540922be 100644 --- a/sdk/python/pulumi_datadog/sensitive_data_scanner_rule.py +++ b/sdk/python/pulumi_datadog/sensitive_data_scanner_rule.py @@ -19,6 +19,7 @@ def __init__(__self__, *, group_id: pulumi.Input[str], description: Optional[pulumi.Input[str]] = None, excluded_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + included_keyword_configuration: Optional[pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']] = None, is_enabled: Optional[pulumi.Input[bool]] = None, name: Optional[pulumi.Input[str]] = None, namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -31,6 +32,7 @@ def __init__(__self__, *, :param pulumi.Input[str] group_id: Id of the scanning group the rule belongs to. :param pulumi.Input[str] description: Description of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] excluded_namespaces: Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. + :param pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs'] included_keyword_configuration: Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. :param pulumi.Input[bool] is_enabled: Whether or not the rule is enabled. :param pulumi.Input[str] name: Name of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] namespaces: Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. @@ -44,6 +46,8 @@ def __init__(__self__, *, pulumi.set(__self__, "description", description) if excluded_namespaces is not None: pulumi.set(__self__, "excluded_namespaces", excluded_namespaces) + if included_keyword_configuration is not None: + pulumi.set(__self__, "included_keyword_configuration", included_keyword_configuration) if is_enabled is not None: pulumi.set(__self__, "is_enabled", is_enabled) if name is not None: @@ -95,6 +99,18 @@ def excluded_namespaces(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str def excluded_namespaces(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "excluded_namespaces", value) + @property + @pulumi.getter(name="includedKeywordConfiguration") + def included_keyword_configuration(self) -> Optional[pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']]: + """ + Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + """ + return pulumi.get(self, "included_keyword_configuration") + + @included_keyword_configuration.setter + def included_keyword_configuration(self, value: Optional[pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']]): + pulumi.set(self, "included_keyword_configuration", value) + @property @pulumi.getter(name="isEnabled") def is_enabled(self) -> Optional[pulumi.Input[bool]]: @@ -186,6 +202,7 @@ def __init__(__self__, *, description: Optional[pulumi.Input[str]] = None, excluded_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, group_id: Optional[pulumi.Input[str]] = None, + included_keyword_configuration: Optional[pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']] = None, is_enabled: Optional[pulumi.Input[bool]] = None, name: Optional[pulumi.Input[str]] = None, namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -198,6 +215,7 @@ def __init__(__self__, *, :param pulumi.Input[str] description: Description of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] excluded_namespaces: Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. :param pulumi.Input[str] group_id: Id of the scanning group the rule belongs to. + :param pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs'] included_keyword_configuration: Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. :param pulumi.Input[bool] is_enabled: Whether or not the rule is enabled. :param pulumi.Input[str] name: Name of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] namespaces: Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. @@ -212,6 +230,8 @@ def __init__(__self__, *, pulumi.set(__self__, "excluded_namespaces", excluded_namespaces) if group_id is not None: pulumi.set(__self__, "group_id", group_id) + if included_keyword_configuration is not None: + pulumi.set(__self__, "included_keyword_configuration", included_keyword_configuration) if is_enabled is not None: pulumi.set(__self__, "is_enabled", is_enabled) if name is not None: @@ -263,6 +283,18 @@ def group_id(self) -> Optional[pulumi.Input[str]]: def group_id(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "group_id", value) + @property + @pulumi.getter(name="includedKeywordConfiguration") + def included_keyword_configuration(self) -> Optional[pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']]: + """ + Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + """ + return pulumi.get(self, "included_keyword_configuration") + + @included_keyword_configuration.setter + def included_keyword_configuration(self, value: Optional[pulumi.Input['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']]): + pulumi.set(self, "included_keyword_configuration", value) + @property @pulumi.getter(name="isEnabled") def is_enabled(self) -> Optional[pulumi.Input[bool]]: @@ -356,6 +388,7 @@ def __init__(__self__, description: Optional[pulumi.Input[str]] = None, excluded_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, group_id: Optional[pulumi.Input[str]] = None, + included_keyword_configuration: Optional[pulumi.Input[pulumi.InputType['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']]] = None, is_enabled: Optional[pulumi.Input[bool]] = None, name: Optional[pulumi.Input[str]] = None, namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -365,7 +398,7 @@ def __init__(__self__, text_replacement: Optional[pulumi.Input[pulumi.InputType['SensitiveDataScannerRuleTextReplacementArgs']]] = None, __props__=None): """ - Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. + Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `included_keyword_configuration` field to avoid unexpectedly disabling Sensitive Data Scanner groups. ## Example Usage @@ -394,6 +427,13 @@ def __init__(__self__, number_of_chars=0, replacement_string="", type="hash", + ), + included_keyword_configuration=datadog.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs( + keywords=[ + "cc", + "credit card", + ], + character_count=30, )) aws_sp = datadog.get_sensitive_data_scanner_standard_pattern(filter="AWS Access Key ID Scanner") mylibraryrule = datadog.SensitiveDataScannerRule("mylibraryrule", @@ -417,6 +457,7 @@ def __init__(__self__, :param pulumi.Input[str] description: Description of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] excluded_namespaces: Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. :param pulumi.Input[str] group_id: Id of the scanning group the rule belongs to. + :param pulumi.Input[pulumi.InputType['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']] included_keyword_configuration: Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. :param pulumi.Input[bool] is_enabled: Whether or not the rule is enabled. :param pulumi.Input[str] name: Name of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] namespaces: Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. @@ -432,7 +473,7 @@ def __init__(__self__, args: SensitiveDataScannerRuleArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. + Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `included_keyword_configuration` field to avoid unexpectedly disabling Sensitive Data Scanner groups. ## Example Usage @@ -461,6 +502,13 @@ def __init__(__self__, number_of_chars=0, replacement_string="", type="hash", + ), + included_keyword_configuration=datadog.SensitiveDataScannerRuleIncludedKeywordConfigurationArgs( + keywords=[ + "cc", + "credit card", + ], + character_count=30, )) aws_sp = datadog.get_sensitive_data_scanner_standard_pattern(filter="AWS Access Key ID Scanner") mylibraryrule = datadog.SensitiveDataScannerRule("mylibraryrule", @@ -497,6 +545,7 @@ def _internal_init(__self__, description: Optional[pulumi.Input[str]] = None, excluded_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, group_id: Optional[pulumi.Input[str]] = None, + included_keyword_configuration: Optional[pulumi.Input[pulumi.InputType['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']]] = None, is_enabled: Optional[pulumi.Input[bool]] = None, name: Optional[pulumi.Input[str]] = None, namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -518,6 +567,7 @@ def _internal_init(__self__, if group_id is None and not opts.urn: raise TypeError("Missing required property 'group_id'") __props__.__dict__["group_id"] = group_id + __props__.__dict__["included_keyword_configuration"] = included_keyword_configuration __props__.__dict__["is_enabled"] = is_enabled __props__.__dict__["name"] = name __props__.__dict__["namespaces"] = namespaces @@ -538,6 +588,7 @@ def get(resource_name: str, description: Optional[pulumi.Input[str]] = None, excluded_namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, group_id: Optional[pulumi.Input[str]] = None, + included_keyword_configuration: Optional[pulumi.Input[pulumi.InputType['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']]] = None, is_enabled: Optional[pulumi.Input[bool]] = None, name: Optional[pulumi.Input[str]] = None, namespaces: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -555,6 +606,7 @@ def get(resource_name: str, :param pulumi.Input[str] description: Description of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] excluded_namespaces: Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. :param pulumi.Input[str] group_id: Id of the scanning group the rule belongs to. + :param pulumi.Input[pulumi.InputType['SensitiveDataScannerRuleIncludedKeywordConfigurationArgs']] included_keyword_configuration: Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. :param pulumi.Input[bool] is_enabled: Whether or not the rule is enabled. :param pulumi.Input[str] name: Name of the rule. :param pulumi.Input[Sequence[pulumi.Input[str]]] namespaces: Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. @@ -570,6 +622,7 @@ def get(resource_name: str, __props__.__dict__["description"] = description __props__.__dict__["excluded_namespaces"] = excluded_namespaces __props__.__dict__["group_id"] = group_id + __props__.__dict__["included_keyword_configuration"] = included_keyword_configuration __props__.__dict__["is_enabled"] = is_enabled __props__.__dict__["name"] = name __props__.__dict__["namespaces"] = namespaces @@ -603,6 +656,14 @@ def group_id(self) -> pulumi.Output[str]: """ return pulumi.get(self, "group_id") + @property + @pulumi.getter(name="includedKeywordConfiguration") + def included_keyword_configuration(self) -> pulumi.Output[Optional['outputs.SensitiveDataScannerRuleIncludedKeywordConfiguration']]: + """ + Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + """ + return pulumi.get(self, "included_keyword_configuration") + @property @pulumi.getter(name="isEnabled") def is_enabled(self) -> pulumi.Output[Optional[bool]]: diff --git a/sdk/python/pulumi_datadog/service_level_objective.py b/sdk/python/pulumi_datadog/service_level_objective.py index 10bebc1be..843f93265 100644 --- a/sdk/python/pulumi_datadog/service_level_objective.py +++ b/sdk/python/pulumi_datadog/service_level_objective.py @@ -24,6 +24,7 @@ def __init__(__self__, *, groups: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, monitor_ids: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None, query: Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']] = None, + sli_specification: Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs']] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, target_threshold: Optional[pulumi.Input[float]] = None, timeframe: Optional[pulumi.Input[str]] = None, @@ -31,14 +32,15 @@ def __init__(__self__, *, warning_threshold: Optional[pulumi.Input[float]] = None): """ The set of arguments for constructing a ServiceLevelObjective resource. - :param pulumi.Input[str] name: Name of Datadog service level objective + :param pulumi.Input[str] name: The name of the query for use in formulas. :param pulumi.Input[Sequence[pulumi.Input['ServiceLevelObjectiveThresholdArgs']]] thresholds: A list of thresholds and targets that define the service level objectives from the provided SLIs. :param pulumi.Input[str] type: The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Valid values are `metric`, `monitor`, `time_slice`. :param pulumi.Input[str] description: A description of this service level objective. :param pulumi.Input[bool] force_delete: A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). :param pulumi.Input[Sequence[pulumi.Input[str]]] groups: A static set of groups to filter monitor-based SLOs :param pulumi.Input[Sequence[pulumi.Input[int]]] monitor_ids: A static set of monitor IDs to use as part of the SLO - :param pulumi.Input['ServiceLevelObjectiveQueryArgs'] query: The metric query of good / total events + :param pulumi.Input['ServiceLevelObjectiveQueryArgs'] query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs'] sli_specification: A map of SLI specifications to use as part of the SLO. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API :param pulumi.Input[float] target_threshold: The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. :param pulumi.Input[str] timeframe: The time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`. @@ -58,6 +60,8 @@ def __init__(__self__, *, pulumi.set(__self__, "monitor_ids", monitor_ids) if query is not None: pulumi.set(__self__, "query", query) + if sli_specification is not None: + pulumi.set(__self__, "sli_specification", sli_specification) if tags is not None: pulumi.set(__self__, "tags", tags) if target_threshold is not None: @@ -73,7 +77,7 @@ def __init__(__self__, *, @pulumi.getter def name(self) -> pulumi.Input[str]: """ - Name of Datadog service level objective + The name of the query for use in formulas. """ return pulumi.get(self, "name") @@ -157,7 +161,7 @@ def monitor_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] @pulumi.getter def query(self) -> Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']]: """ - The metric query of good / total events + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. """ return pulumi.get(self, "query") @@ -165,6 +169,18 @@ def query(self) -> Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']]: def query(self, value: Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']]): pulumi.set(self, "query", value) + @property + @pulumi.getter(name="sliSpecification") + def sli_specification(self) -> Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs']]: + """ + A map of SLI specifications to use as part of the SLO. + """ + return pulumi.get(self, "sli_specification") + + @sli_specification.setter + def sli_specification(self, value: Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs']]): + pulumi.set(self, "sli_specification", value) + @property @pulumi.getter def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -235,6 +251,7 @@ def __init__(__self__, *, monitor_ids: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None, name: Optional[pulumi.Input[str]] = None, query: Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']] = None, + sli_specification: Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs']] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, target_threshold: Optional[pulumi.Input[float]] = None, thresholds: Optional[pulumi.Input[Sequence[pulumi.Input['ServiceLevelObjectiveThresholdArgs']]]] = None, @@ -248,8 +265,9 @@ def __init__(__self__, *, :param pulumi.Input[bool] force_delete: A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). :param pulumi.Input[Sequence[pulumi.Input[str]]] groups: A static set of groups to filter monitor-based SLOs :param pulumi.Input[Sequence[pulumi.Input[int]]] monitor_ids: A static set of monitor IDs to use as part of the SLO - :param pulumi.Input[str] name: Name of Datadog service level objective - :param pulumi.Input['ServiceLevelObjectiveQueryArgs'] query: The metric query of good / total events + :param pulumi.Input[str] name: The name of the query for use in formulas. + :param pulumi.Input['ServiceLevelObjectiveQueryArgs'] query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs'] sli_specification: A map of SLI specifications to use as part of the SLO. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API :param pulumi.Input[float] target_threshold: The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. :param pulumi.Input[Sequence[pulumi.Input['ServiceLevelObjectiveThresholdArgs']]] thresholds: A list of thresholds and targets that define the service level objectives from the provided SLIs. @@ -270,6 +288,8 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if query is not None: pulumi.set(__self__, "query", query) + if sli_specification is not None: + pulumi.set(__self__, "sli_specification", sli_specification) if tags is not None: pulumi.set(__self__, "tags", tags) if target_threshold is not None: @@ -337,7 +357,7 @@ def monitor_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: """ - Name of Datadog service level objective + The name of the query for use in formulas. """ return pulumi.get(self, "name") @@ -349,7 +369,7 @@ def name(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def query(self) -> Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']]: """ - The metric query of good / total events + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. """ return pulumi.get(self, "query") @@ -357,6 +377,18 @@ def query(self) -> Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']]: def query(self, value: Optional[pulumi.Input['ServiceLevelObjectiveQueryArgs']]): pulumi.set(self, "query", value) + @property + @pulumi.getter(name="sliSpecification") + def sli_specification(self) -> Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs']]: + """ + A map of SLI specifications to use as part of the SLO. + """ + return pulumi.get(self, "sli_specification") + + @sli_specification.setter + def sli_specification(self, value: Optional[pulumi.Input['ServiceLevelObjectiveSliSpecificationArgs']]): + pulumi.set(self, "sli_specification", value) + @property @pulumi.getter def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -453,6 +485,7 @@ def __init__(__self__, monitor_ids: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None, name: Optional[pulumi.Input[str]] = None, query: Optional[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveQueryArgs']]] = None, + sli_specification: Optional[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveSliSpecificationArgs']]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, target_threshold: Optional[pulumi.Input[float]] = None, thresholds: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveThresholdArgs']]]]] = None, @@ -464,73 +497,6 @@ def __init__(__self__, """ Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. - ## Example Usage - - ```python - import pulumi - import pulumi_datadog as datadog - - # Metric-Based SLO - # Create a new Datadog service level objective - foo = datadog.ServiceLevelObjective("foo", - description="My custom metric SLO", - name="Example Metric SLO", - query=datadog.ServiceLevelObjectiveQueryArgs( - denominator="sum:my.custom.count.metric{*}.as_count()", - numerator="sum:my.custom.count.metric{type:good_events}.as_count()", - ), - tags=[ - "foo:bar", - "baz", - ], - target_threshold=99.9, - thresholds=[ - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="7d", - warning=99.99, - ), - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="30d", - warning=99.99, - ), - ], - timeframe="30d", - type="metric", - warning_threshold=99.99) - # Monitor-Based SLO - # Create a new Datadog service level objective - bar = datadog.ServiceLevelObjective("bar", - description="My custom monitor SLO", - monitor_ids=[ - 1, - 2, - 3, - ], - name="Example Monitor SLO", - tags=[ - "foo:bar", - "baz", - ], - target_threshold=99.9, - thresholds=[ - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="7d", - warning=99.99, - ), - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="30d", - warning=99.99, - ), - ], - timeframe="30d", - type="monitor", - warning_threshold=99.99) - ``` - ## Import Service Level Objectives can be imported using their string ID, e.g. @@ -545,8 +511,9 @@ def __init__(__self__, :param pulumi.Input[bool] force_delete: A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). :param pulumi.Input[Sequence[pulumi.Input[str]]] groups: A static set of groups to filter monitor-based SLOs :param pulumi.Input[Sequence[pulumi.Input[int]]] monitor_ids: A static set of monitor IDs to use as part of the SLO - :param pulumi.Input[str] name: Name of Datadog service level objective - :param pulumi.Input[pulumi.InputType['ServiceLevelObjectiveQueryArgs']] query: The metric query of good / total events + :param pulumi.Input[str] name: The name of the query for use in formulas. + :param pulumi.Input[pulumi.InputType['ServiceLevelObjectiveQueryArgs']] query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param pulumi.Input[pulumi.InputType['ServiceLevelObjectiveSliSpecificationArgs']] sli_specification: A map of SLI specifications to use as part of the SLO. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API :param pulumi.Input[float] target_threshold: The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveThresholdArgs']]]] thresholds: A list of thresholds and targets that define the service level objectives from the provided SLIs. @@ -564,73 +531,6 @@ def __init__(__self__, """ Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. - ## Example Usage - - ```python - import pulumi - import pulumi_datadog as datadog - - # Metric-Based SLO - # Create a new Datadog service level objective - foo = datadog.ServiceLevelObjective("foo", - description="My custom metric SLO", - name="Example Metric SLO", - query=datadog.ServiceLevelObjectiveQueryArgs( - denominator="sum:my.custom.count.metric{*}.as_count()", - numerator="sum:my.custom.count.metric{type:good_events}.as_count()", - ), - tags=[ - "foo:bar", - "baz", - ], - target_threshold=99.9, - thresholds=[ - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="7d", - warning=99.99, - ), - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="30d", - warning=99.99, - ), - ], - timeframe="30d", - type="metric", - warning_threshold=99.99) - # Monitor-Based SLO - # Create a new Datadog service level objective - bar = datadog.ServiceLevelObjective("bar", - description="My custom monitor SLO", - monitor_ids=[ - 1, - 2, - 3, - ], - name="Example Monitor SLO", - tags=[ - "foo:bar", - "baz", - ], - target_threshold=99.9, - thresholds=[ - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="7d", - warning=99.99, - ), - datadog.ServiceLevelObjectiveThresholdArgs( - target=99.9, - timeframe="30d", - warning=99.99, - ), - ], - timeframe="30d", - type="monitor", - warning_threshold=99.99) - ``` - ## Import Service Level Objectives can be imported using their string ID, e.g. @@ -660,6 +560,7 @@ def _internal_init(__self__, monitor_ids: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None, name: Optional[pulumi.Input[str]] = None, query: Optional[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveQueryArgs']]] = None, + sli_specification: Optional[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveSliSpecificationArgs']]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, target_threshold: Optional[pulumi.Input[float]] = None, thresholds: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveThresholdArgs']]]]] = None, @@ -684,6 +585,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'name'") __props__.__dict__["name"] = name __props__.__dict__["query"] = query + __props__.__dict__["sli_specification"] = sli_specification __props__.__dict__["tags"] = tags __props__.__dict__["target_threshold"] = target_threshold if thresholds is None and not opts.urn: @@ -711,6 +613,7 @@ def get(resource_name: str, monitor_ids: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None, name: Optional[pulumi.Input[str]] = None, query: Optional[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveQueryArgs']]] = None, + sli_specification: Optional[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveSliSpecificationArgs']]] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, target_threshold: Optional[pulumi.Input[float]] = None, thresholds: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveThresholdArgs']]]]] = None, @@ -729,8 +632,9 @@ def get(resource_name: str, :param pulumi.Input[bool] force_delete: A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). :param pulumi.Input[Sequence[pulumi.Input[str]]] groups: A static set of groups to filter monitor-based SLOs :param pulumi.Input[Sequence[pulumi.Input[int]]] monitor_ids: A static set of monitor IDs to use as part of the SLO - :param pulumi.Input[str] name: Name of Datadog service level objective - :param pulumi.Input[pulumi.InputType['ServiceLevelObjectiveQueryArgs']] query: The metric query of good / total events + :param pulumi.Input[str] name: The name of the query for use in formulas. + :param pulumi.Input[pulumi.InputType['ServiceLevelObjectiveQueryArgs']] query: A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + :param pulumi.Input[pulumi.InputType['ServiceLevelObjectiveSliSpecificationArgs']] sli_specification: A map of SLI specifications to use as part of the SLO. :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API :param pulumi.Input[float] target_threshold: The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceLevelObjectiveThresholdArgs']]]] thresholds: A list of thresholds and targets that define the service level objectives from the provided SLIs. @@ -749,6 +653,7 @@ def get(resource_name: str, __props__.__dict__["monitor_ids"] = monitor_ids __props__.__dict__["name"] = name __props__.__dict__["query"] = query + __props__.__dict__["sli_specification"] = sli_specification __props__.__dict__["tags"] = tags __props__.__dict__["target_threshold"] = target_threshold __props__.__dict__["thresholds"] = thresholds @@ -794,7 +699,7 @@ def monitor_ids(self) -> pulumi.Output[Optional[Sequence[int]]]: @pulumi.getter def name(self) -> pulumi.Output[str]: """ - Name of Datadog service level objective + The name of the query for use in formulas. """ return pulumi.get(self, "name") @@ -802,10 +707,18 @@ def name(self) -> pulumi.Output[str]: @pulumi.getter def query(self) -> pulumi.Output[Optional['outputs.ServiceLevelObjectiveQuery']]: """ - The metric query of good / total events + A timeseries query, containing named data-source-specific queries and a formula involving the named queries. """ return pulumi.get(self, "query") + @property + @pulumi.getter(name="sliSpecification") + def sli_specification(self) -> pulumi.Output[Optional['outputs.ServiceLevelObjectiveSliSpecification']]: + """ + A map of SLI specifications to use as part of the SLO. + """ + return pulumi.get(self, "sli_specification") + @property @pulumi.getter def tags(self) -> pulumi.Output[Optional[Sequence[str]]]: diff --git a/upstream b/upstream index 6469cfef6..760903b2a 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit 6469cfef6ef06c403e25a7126d359b92c3582c07 +Subproject commit 760903b2aaf599600e856e9c3d670bb0e9a8c97d