? IncludedKeywordConfiguration { get; set; }
diff --git a/sdk/go/datadog/init.go b/sdk/go/datadog/init.go
index b635fd4c6..d07ed42ce 100644
--- a/sdk/go/datadog/init.go
+++ b/sdk/go/datadog/init.go
@@ -93,6 +93,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi
r = &Role{}
case "datadog:index/rumApplication:RumApplication":
r = &RumApplication{}
+ case "datadog:index/rumMetric:RumMetric":
+ r = &RumMetric{}
case "datadog:index/securityMonitoringDefaultRule:SecurityMonitoringDefaultRule":
r = &SecurityMonitoringDefaultRule{}
case "datadog:index/securityMonitoringFilter:SecurityMonitoringFilter":
@@ -356,6 +358,11 @@ func init() {
"index/rumApplication",
&module{version},
)
+ pulumi.RegisterResourceModule(
+ "datadog",
+ "index/rumMetric",
+ &module{version},
+ )
pulumi.RegisterResourceModule(
"datadog",
"index/securityMonitoringDefaultRule",
diff --git a/sdk/go/datadog/ms/init.go b/sdk/go/datadog/ms/init.go
new file mode 100644
index 000000000..5f94ea98f
--- /dev/null
+++ b/sdk/go/datadog/ms/init.go
@@ -0,0 +1,44 @@
+// 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 ms
+
+import (
+ "fmt"
+
+ "github.com/blang/semver"
+ "github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog/internal"
+ "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+)
+
+type module struct {
+ version semver.Version
+}
+
+func (m *module) Version() semver.Version {
+ return m.version
+}
+
+func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) {
+ switch typ {
+ case "datadog:ms/integrationTeamsTenantBasedHandle:IntegrationTeamsTenantBasedHandle":
+ r = &IntegrationTeamsTenantBasedHandle{}
+ default:
+ return nil, fmt.Errorf("unknown resource type: %s", typ)
+ }
+
+ err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn))
+ return
+}
+
+func init() {
+ version, err := internal.PkgVersion()
+ if err != nil {
+ version = semver.Version{Major: 1}
+ }
+ pulumi.RegisterResourceModule(
+ "datadog",
+ "ms/integrationTeamsTenantBasedHandle",
+ &module{version},
+ )
+}
diff --git a/sdk/go/datadog/ms/integrationTeamsTenantBasedHandle.go b/sdk/go/datadog/ms/integrationTeamsTenantBasedHandle.go
new file mode 100644
index 000000000..33539b62a
--- /dev/null
+++ b/sdk/go/datadog/ms/integrationTeamsTenantBasedHandle.go
@@ -0,0 +1,273 @@
+// 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 ms
+
+import (
+ "context"
+ "reflect"
+
+ "errors"
+ "github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog/internal"
+ "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+)
+
+// Resource for interacting with Datadog Microsoft Teams Integration tenant-based handles.
+type IntegrationTeamsTenantBasedHandle struct {
+ pulumi.CustomResourceState
+
+ // Your channel name.
+ ChannelName pulumi.StringOutput `pulumi:"channelName"`
+ // Your tenant-based handle name.
+ Name pulumi.StringOutput `pulumi:"name"`
+ // Your team name.
+ TeamName pulumi.StringOutput `pulumi:"teamName"`
+ // Your tenant name.
+ TenantName pulumi.StringOutput `pulumi:"tenantName"`
+}
+
+// NewIntegrationTeamsTenantBasedHandle registers a new resource with the given unique name, arguments, and options.
+func NewIntegrationTeamsTenantBasedHandle(ctx *pulumi.Context,
+ name string, args *IntegrationTeamsTenantBasedHandleArgs, opts ...pulumi.ResourceOption) (*IntegrationTeamsTenantBasedHandle, error) {
+ if args == nil {
+ return nil, errors.New("missing one or more required arguments")
+ }
+
+ if args.ChannelName == nil {
+ return nil, errors.New("invalid value for required argument 'ChannelName'")
+ }
+ if args.Name == nil {
+ return nil, errors.New("invalid value for required argument 'Name'")
+ }
+ if args.TeamName == nil {
+ return nil, errors.New("invalid value for required argument 'TeamName'")
+ }
+ if args.TenantName == nil {
+ return nil, errors.New("invalid value for required argument 'TenantName'")
+ }
+ opts = internal.PkgResourceDefaultOpts(opts)
+ var resource IntegrationTeamsTenantBasedHandle
+ err := ctx.RegisterResource("datadog:ms/integrationTeamsTenantBasedHandle:IntegrationTeamsTenantBasedHandle", name, args, &resource, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &resource, nil
+}
+
+// GetIntegrationTeamsTenantBasedHandle gets an existing IntegrationTeamsTenantBasedHandle 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 GetIntegrationTeamsTenantBasedHandle(ctx *pulumi.Context,
+ name string, id pulumi.IDInput, state *IntegrationTeamsTenantBasedHandleState, opts ...pulumi.ResourceOption) (*IntegrationTeamsTenantBasedHandle, error) {
+ var resource IntegrationTeamsTenantBasedHandle
+ err := ctx.ReadResource("datadog:ms/integrationTeamsTenantBasedHandle:IntegrationTeamsTenantBasedHandle", name, id, state, &resource, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &resource, nil
+}
+
+// Input properties used for looking up and filtering IntegrationTeamsTenantBasedHandle resources.
+type integrationTeamsTenantBasedHandleState struct {
+ // Your channel name.
+ ChannelName *string `pulumi:"channelName"`
+ // Your tenant-based handle name.
+ Name *string `pulumi:"name"`
+ // Your team name.
+ TeamName *string `pulumi:"teamName"`
+ // Your tenant name.
+ TenantName *string `pulumi:"tenantName"`
+}
+
+type IntegrationTeamsTenantBasedHandleState struct {
+ // Your channel name.
+ ChannelName pulumi.StringPtrInput
+ // Your tenant-based handle name.
+ Name pulumi.StringPtrInput
+ // Your team name.
+ TeamName pulumi.StringPtrInput
+ // Your tenant name.
+ TenantName pulumi.StringPtrInput
+}
+
+func (IntegrationTeamsTenantBasedHandleState) ElementType() reflect.Type {
+ return reflect.TypeOf((*integrationTeamsTenantBasedHandleState)(nil)).Elem()
+}
+
+type integrationTeamsTenantBasedHandleArgs struct {
+ // Your channel name.
+ ChannelName string `pulumi:"channelName"`
+ // Your tenant-based handle name.
+ Name string `pulumi:"name"`
+ // Your team name.
+ TeamName string `pulumi:"teamName"`
+ // Your tenant name.
+ TenantName string `pulumi:"tenantName"`
+}
+
+// The set of arguments for constructing a IntegrationTeamsTenantBasedHandle resource.
+type IntegrationTeamsTenantBasedHandleArgs struct {
+ // Your channel name.
+ ChannelName pulumi.StringInput
+ // Your tenant-based handle name.
+ Name pulumi.StringInput
+ // Your team name.
+ TeamName pulumi.StringInput
+ // Your tenant name.
+ TenantName pulumi.StringInput
+}
+
+func (IntegrationTeamsTenantBasedHandleArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*integrationTeamsTenantBasedHandleArgs)(nil)).Elem()
+}
+
+type IntegrationTeamsTenantBasedHandleInput interface {
+ pulumi.Input
+
+ ToIntegrationTeamsTenantBasedHandleOutput() IntegrationTeamsTenantBasedHandleOutput
+ ToIntegrationTeamsTenantBasedHandleOutputWithContext(ctx context.Context) IntegrationTeamsTenantBasedHandleOutput
+}
+
+func (*IntegrationTeamsTenantBasedHandle) ElementType() reflect.Type {
+ return reflect.TypeOf((**IntegrationTeamsTenantBasedHandle)(nil)).Elem()
+}
+
+func (i *IntegrationTeamsTenantBasedHandle) ToIntegrationTeamsTenantBasedHandleOutput() IntegrationTeamsTenantBasedHandleOutput {
+ return i.ToIntegrationTeamsTenantBasedHandleOutputWithContext(context.Background())
+}
+
+func (i *IntegrationTeamsTenantBasedHandle) ToIntegrationTeamsTenantBasedHandleOutputWithContext(ctx context.Context) IntegrationTeamsTenantBasedHandleOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(IntegrationTeamsTenantBasedHandleOutput)
+}
+
+// IntegrationTeamsTenantBasedHandleArrayInput is an input type that accepts IntegrationTeamsTenantBasedHandleArray and IntegrationTeamsTenantBasedHandleArrayOutput values.
+// You can construct a concrete instance of `IntegrationTeamsTenantBasedHandleArrayInput` via:
+//
+// IntegrationTeamsTenantBasedHandleArray{ IntegrationTeamsTenantBasedHandleArgs{...} }
+type IntegrationTeamsTenantBasedHandleArrayInput interface {
+ pulumi.Input
+
+ ToIntegrationTeamsTenantBasedHandleArrayOutput() IntegrationTeamsTenantBasedHandleArrayOutput
+ ToIntegrationTeamsTenantBasedHandleArrayOutputWithContext(context.Context) IntegrationTeamsTenantBasedHandleArrayOutput
+}
+
+type IntegrationTeamsTenantBasedHandleArray []IntegrationTeamsTenantBasedHandleInput
+
+func (IntegrationTeamsTenantBasedHandleArray) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]*IntegrationTeamsTenantBasedHandle)(nil)).Elem()
+}
+
+func (i IntegrationTeamsTenantBasedHandleArray) ToIntegrationTeamsTenantBasedHandleArrayOutput() IntegrationTeamsTenantBasedHandleArrayOutput {
+ return i.ToIntegrationTeamsTenantBasedHandleArrayOutputWithContext(context.Background())
+}
+
+func (i IntegrationTeamsTenantBasedHandleArray) ToIntegrationTeamsTenantBasedHandleArrayOutputWithContext(ctx context.Context) IntegrationTeamsTenantBasedHandleArrayOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(IntegrationTeamsTenantBasedHandleArrayOutput)
+}
+
+// IntegrationTeamsTenantBasedHandleMapInput is an input type that accepts IntegrationTeamsTenantBasedHandleMap and IntegrationTeamsTenantBasedHandleMapOutput values.
+// You can construct a concrete instance of `IntegrationTeamsTenantBasedHandleMapInput` via:
+//
+// IntegrationTeamsTenantBasedHandleMap{ "key": IntegrationTeamsTenantBasedHandleArgs{...} }
+type IntegrationTeamsTenantBasedHandleMapInput interface {
+ pulumi.Input
+
+ ToIntegrationTeamsTenantBasedHandleMapOutput() IntegrationTeamsTenantBasedHandleMapOutput
+ ToIntegrationTeamsTenantBasedHandleMapOutputWithContext(context.Context) IntegrationTeamsTenantBasedHandleMapOutput
+}
+
+type IntegrationTeamsTenantBasedHandleMap map[string]IntegrationTeamsTenantBasedHandleInput
+
+func (IntegrationTeamsTenantBasedHandleMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]*IntegrationTeamsTenantBasedHandle)(nil)).Elem()
+}
+
+func (i IntegrationTeamsTenantBasedHandleMap) ToIntegrationTeamsTenantBasedHandleMapOutput() IntegrationTeamsTenantBasedHandleMapOutput {
+ return i.ToIntegrationTeamsTenantBasedHandleMapOutputWithContext(context.Background())
+}
+
+func (i IntegrationTeamsTenantBasedHandleMap) ToIntegrationTeamsTenantBasedHandleMapOutputWithContext(ctx context.Context) IntegrationTeamsTenantBasedHandleMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(IntegrationTeamsTenantBasedHandleMapOutput)
+}
+
+type IntegrationTeamsTenantBasedHandleOutput struct{ *pulumi.OutputState }
+
+func (IntegrationTeamsTenantBasedHandleOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((**IntegrationTeamsTenantBasedHandle)(nil)).Elem()
+}
+
+func (o IntegrationTeamsTenantBasedHandleOutput) ToIntegrationTeamsTenantBasedHandleOutput() IntegrationTeamsTenantBasedHandleOutput {
+ return o
+}
+
+func (o IntegrationTeamsTenantBasedHandleOutput) ToIntegrationTeamsTenantBasedHandleOutputWithContext(ctx context.Context) IntegrationTeamsTenantBasedHandleOutput {
+ return o
+}
+
+// Your channel name.
+func (o IntegrationTeamsTenantBasedHandleOutput) ChannelName() pulumi.StringOutput {
+ return o.ApplyT(func(v *IntegrationTeamsTenantBasedHandle) pulumi.StringOutput { return v.ChannelName }).(pulumi.StringOutput)
+}
+
+// Your tenant-based handle name.
+func (o IntegrationTeamsTenantBasedHandleOutput) Name() pulumi.StringOutput {
+ return o.ApplyT(func(v *IntegrationTeamsTenantBasedHandle) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
+}
+
+// Your team name.
+func (o IntegrationTeamsTenantBasedHandleOutput) TeamName() pulumi.StringOutput {
+ return o.ApplyT(func(v *IntegrationTeamsTenantBasedHandle) pulumi.StringOutput { return v.TeamName }).(pulumi.StringOutput)
+}
+
+// Your tenant name.
+func (o IntegrationTeamsTenantBasedHandleOutput) TenantName() pulumi.StringOutput {
+ return o.ApplyT(func(v *IntegrationTeamsTenantBasedHandle) pulumi.StringOutput { return v.TenantName }).(pulumi.StringOutput)
+}
+
+type IntegrationTeamsTenantBasedHandleArrayOutput struct{ *pulumi.OutputState }
+
+func (IntegrationTeamsTenantBasedHandleArrayOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]*IntegrationTeamsTenantBasedHandle)(nil)).Elem()
+}
+
+func (o IntegrationTeamsTenantBasedHandleArrayOutput) ToIntegrationTeamsTenantBasedHandleArrayOutput() IntegrationTeamsTenantBasedHandleArrayOutput {
+ return o
+}
+
+func (o IntegrationTeamsTenantBasedHandleArrayOutput) ToIntegrationTeamsTenantBasedHandleArrayOutputWithContext(ctx context.Context) IntegrationTeamsTenantBasedHandleArrayOutput {
+ return o
+}
+
+func (o IntegrationTeamsTenantBasedHandleArrayOutput) Index(i pulumi.IntInput) IntegrationTeamsTenantBasedHandleOutput {
+ return pulumi.All(o, i).ApplyT(func(vs []interface{}) *IntegrationTeamsTenantBasedHandle {
+ return vs[0].([]*IntegrationTeamsTenantBasedHandle)[vs[1].(int)]
+ }).(IntegrationTeamsTenantBasedHandleOutput)
+}
+
+type IntegrationTeamsTenantBasedHandleMapOutput struct{ *pulumi.OutputState }
+
+func (IntegrationTeamsTenantBasedHandleMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]*IntegrationTeamsTenantBasedHandle)(nil)).Elem()
+}
+
+func (o IntegrationTeamsTenantBasedHandleMapOutput) ToIntegrationTeamsTenantBasedHandleMapOutput() IntegrationTeamsTenantBasedHandleMapOutput {
+ return o
+}
+
+func (o IntegrationTeamsTenantBasedHandleMapOutput) ToIntegrationTeamsTenantBasedHandleMapOutputWithContext(ctx context.Context) IntegrationTeamsTenantBasedHandleMapOutput {
+ return o
+}
+
+func (o IntegrationTeamsTenantBasedHandleMapOutput) MapIndex(k pulumi.StringInput) IntegrationTeamsTenantBasedHandleOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) *IntegrationTeamsTenantBasedHandle {
+ return vs[0].(map[string]*IntegrationTeamsTenantBasedHandle)[vs[1].(string)]
+ }).(IntegrationTeamsTenantBasedHandleOutput)
+}
+
+func init() {
+ pulumi.RegisterInputType(reflect.TypeOf((*IntegrationTeamsTenantBasedHandleInput)(nil)).Elem(), &IntegrationTeamsTenantBasedHandle{})
+ pulumi.RegisterInputType(reflect.TypeOf((*IntegrationTeamsTenantBasedHandleArrayInput)(nil)).Elem(), IntegrationTeamsTenantBasedHandleArray{})
+ pulumi.RegisterInputType(reflect.TypeOf((*IntegrationTeamsTenantBasedHandleMapInput)(nil)).Elem(), IntegrationTeamsTenantBasedHandleMap{})
+ pulumi.RegisterOutputType(IntegrationTeamsTenantBasedHandleOutput{})
+ pulumi.RegisterOutputType(IntegrationTeamsTenantBasedHandleArrayOutput{})
+ pulumi.RegisterOutputType(IntegrationTeamsTenantBasedHandleMapOutput{})
+}
diff --git a/sdk/go/datadog/pulumiTypes2.go b/sdk/go/datadog/pulumiTypes2.go
index f18bb718b..78b7a7a57 100644
--- a/sdk/go/datadog/pulumiTypes2.go
+++ b/sdk/go/datadog/pulumiTypes2.go
@@ -225,6 +225,561 @@ func (o RolePermissionArrayOutput) Index(i pulumi.IntInput) RolePermissionOutput
}).(RolePermissionOutput)
}
+type RumMetricCompute struct {
+ // The type of aggregation to use.
+ AggregationType string `pulumi:"aggregationType"`
+ // Toggle to include or exclude percentile aggregations for distribution metrics. Only present when `aggregationType` is `distribution`.
+ IncludePercentiles *bool `pulumi:"includePercentiles"`
+ // The path to the value the RUM-based metric will aggregate on. Only present when `aggregationType` is `distribution`.
+ Path *string `pulumi:"path"`
+}
+
+// RumMetricComputeInput is an input type that accepts RumMetricComputeArgs and RumMetricComputeOutput values.
+// You can construct a concrete instance of `RumMetricComputeInput` via:
+//
+// RumMetricComputeArgs{...}
+type RumMetricComputeInput interface {
+ pulumi.Input
+
+ ToRumMetricComputeOutput() RumMetricComputeOutput
+ ToRumMetricComputeOutputWithContext(context.Context) RumMetricComputeOutput
+}
+
+type RumMetricComputeArgs struct {
+ // The type of aggregation to use.
+ AggregationType pulumi.StringInput `pulumi:"aggregationType"`
+ // Toggle to include or exclude percentile aggregations for distribution metrics. Only present when `aggregationType` is `distribution`.
+ IncludePercentiles pulumi.BoolPtrInput `pulumi:"includePercentiles"`
+ // The path to the value the RUM-based metric will aggregate on. Only present when `aggregationType` is `distribution`.
+ Path pulumi.StringPtrInput `pulumi:"path"`
+}
+
+func (RumMetricComputeArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricCompute)(nil)).Elem()
+}
+
+func (i RumMetricComputeArgs) ToRumMetricComputeOutput() RumMetricComputeOutput {
+ return i.ToRumMetricComputeOutputWithContext(context.Background())
+}
+
+func (i RumMetricComputeArgs) ToRumMetricComputeOutputWithContext(ctx context.Context) RumMetricComputeOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricComputeOutput)
+}
+
+func (i RumMetricComputeArgs) ToRumMetricComputePtrOutput() RumMetricComputePtrOutput {
+ return i.ToRumMetricComputePtrOutputWithContext(context.Background())
+}
+
+func (i RumMetricComputeArgs) ToRumMetricComputePtrOutputWithContext(ctx context.Context) RumMetricComputePtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricComputeOutput).ToRumMetricComputePtrOutputWithContext(ctx)
+}
+
+// RumMetricComputePtrInput is an input type that accepts RumMetricComputeArgs, RumMetricComputePtr and RumMetricComputePtrOutput values.
+// You can construct a concrete instance of `RumMetricComputePtrInput` via:
+//
+// RumMetricComputeArgs{...}
+//
+// or:
+//
+// nil
+type RumMetricComputePtrInput interface {
+ pulumi.Input
+
+ ToRumMetricComputePtrOutput() RumMetricComputePtrOutput
+ ToRumMetricComputePtrOutputWithContext(context.Context) RumMetricComputePtrOutput
+}
+
+type rumMetricComputePtrType RumMetricComputeArgs
+
+func RumMetricComputePtr(v *RumMetricComputeArgs) RumMetricComputePtrInput {
+ return (*rumMetricComputePtrType)(v)
+}
+
+func (*rumMetricComputePtrType) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetricCompute)(nil)).Elem()
+}
+
+func (i *rumMetricComputePtrType) ToRumMetricComputePtrOutput() RumMetricComputePtrOutput {
+ return i.ToRumMetricComputePtrOutputWithContext(context.Background())
+}
+
+func (i *rumMetricComputePtrType) ToRumMetricComputePtrOutputWithContext(ctx context.Context) RumMetricComputePtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricComputePtrOutput)
+}
+
+type RumMetricComputeOutput struct{ *pulumi.OutputState }
+
+func (RumMetricComputeOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricCompute)(nil)).Elem()
+}
+
+func (o RumMetricComputeOutput) ToRumMetricComputeOutput() RumMetricComputeOutput {
+ return o
+}
+
+func (o RumMetricComputeOutput) ToRumMetricComputeOutputWithContext(ctx context.Context) RumMetricComputeOutput {
+ return o
+}
+
+func (o RumMetricComputeOutput) ToRumMetricComputePtrOutput() RumMetricComputePtrOutput {
+ return o.ToRumMetricComputePtrOutputWithContext(context.Background())
+}
+
+func (o RumMetricComputeOutput) ToRumMetricComputePtrOutputWithContext(ctx context.Context) RumMetricComputePtrOutput {
+ return o.ApplyTWithContext(ctx, func(_ context.Context, v RumMetricCompute) *RumMetricCompute {
+ return &v
+ }).(RumMetricComputePtrOutput)
+}
+
+// The type of aggregation to use.
+func (o RumMetricComputeOutput) AggregationType() pulumi.StringOutput {
+ return o.ApplyT(func(v RumMetricCompute) string { return v.AggregationType }).(pulumi.StringOutput)
+}
+
+// Toggle to include or exclude percentile aggregations for distribution metrics. Only present when `aggregationType` is `distribution`.
+func (o RumMetricComputeOutput) IncludePercentiles() pulumi.BoolPtrOutput {
+ return o.ApplyT(func(v RumMetricCompute) *bool { return v.IncludePercentiles }).(pulumi.BoolPtrOutput)
+}
+
+// The path to the value the RUM-based metric will aggregate on. Only present when `aggregationType` is `distribution`.
+func (o RumMetricComputeOutput) Path() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v RumMetricCompute) *string { return v.Path }).(pulumi.StringPtrOutput)
+}
+
+type RumMetricComputePtrOutput struct{ *pulumi.OutputState }
+
+func (RumMetricComputePtrOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetricCompute)(nil)).Elem()
+}
+
+func (o RumMetricComputePtrOutput) ToRumMetricComputePtrOutput() RumMetricComputePtrOutput {
+ return o
+}
+
+func (o RumMetricComputePtrOutput) ToRumMetricComputePtrOutputWithContext(ctx context.Context) RumMetricComputePtrOutput {
+ return o
+}
+
+func (o RumMetricComputePtrOutput) Elem() RumMetricComputeOutput {
+ return o.ApplyT(func(v *RumMetricCompute) RumMetricCompute {
+ if v != nil {
+ return *v
+ }
+ var ret RumMetricCompute
+ return ret
+ }).(RumMetricComputeOutput)
+}
+
+// The type of aggregation to use.
+func (o RumMetricComputePtrOutput) AggregationType() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v *RumMetricCompute) *string {
+ if v == nil {
+ return nil
+ }
+ return &v.AggregationType
+ }).(pulumi.StringPtrOutput)
+}
+
+// Toggle to include or exclude percentile aggregations for distribution metrics. Only present when `aggregationType` is `distribution`.
+func (o RumMetricComputePtrOutput) IncludePercentiles() pulumi.BoolPtrOutput {
+ return o.ApplyT(func(v *RumMetricCompute) *bool {
+ if v == nil {
+ return nil
+ }
+ return v.IncludePercentiles
+ }).(pulumi.BoolPtrOutput)
+}
+
+// The path to the value the RUM-based metric will aggregate on. Only present when `aggregationType` is `distribution`.
+func (o RumMetricComputePtrOutput) Path() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v *RumMetricCompute) *string {
+ if v == nil {
+ return nil
+ }
+ return v.Path
+ }).(pulumi.StringPtrOutput)
+}
+
+type RumMetricFilter struct {
+ // The search query. Follows RUM search syntax.
+ Query *string `pulumi:"query"`
+}
+
+// RumMetricFilterInput is an input type that accepts RumMetricFilterArgs and RumMetricFilterOutput values.
+// You can construct a concrete instance of `RumMetricFilterInput` via:
+//
+// RumMetricFilterArgs{...}
+type RumMetricFilterInput interface {
+ pulumi.Input
+
+ ToRumMetricFilterOutput() RumMetricFilterOutput
+ ToRumMetricFilterOutputWithContext(context.Context) RumMetricFilterOutput
+}
+
+type RumMetricFilterArgs struct {
+ // The search query. Follows RUM search syntax.
+ Query pulumi.StringPtrInput `pulumi:"query"`
+}
+
+func (RumMetricFilterArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricFilter)(nil)).Elem()
+}
+
+func (i RumMetricFilterArgs) ToRumMetricFilterOutput() RumMetricFilterOutput {
+ return i.ToRumMetricFilterOutputWithContext(context.Background())
+}
+
+func (i RumMetricFilterArgs) ToRumMetricFilterOutputWithContext(ctx context.Context) RumMetricFilterOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricFilterOutput)
+}
+
+func (i RumMetricFilterArgs) ToRumMetricFilterPtrOutput() RumMetricFilterPtrOutput {
+ return i.ToRumMetricFilterPtrOutputWithContext(context.Background())
+}
+
+func (i RumMetricFilterArgs) ToRumMetricFilterPtrOutputWithContext(ctx context.Context) RumMetricFilterPtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricFilterOutput).ToRumMetricFilterPtrOutputWithContext(ctx)
+}
+
+// RumMetricFilterPtrInput is an input type that accepts RumMetricFilterArgs, RumMetricFilterPtr and RumMetricFilterPtrOutput values.
+// You can construct a concrete instance of `RumMetricFilterPtrInput` via:
+//
+// RumMetricFilterArgs{...}
+//
+// or:
+//
+// nil
+type RumMetricFilterPtrInput interface {
+ pulumi.Input
+
+ ToRumMetricFilterPtrOutput() RumMetricFilterPtrOutput
+ ToRumMetricFilterPtrOutputWithContext(context.Context) RumMetricFilterPtrOutput
+}
+
+type rumMetricFilterPtrType RumMetricFilterArgs
+
+func RumMetricFilterPtr(v *RumMetricFilterArgs) RumMetricFilterPtrInput {
+ return (*rumMetricFilterPtrType)(v)
+}
+
+func (*rumMetricFilterPtrType) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetricFilter)(nil)).Elem()
+}
+
+func (i *rumMetricFilterPtrType) ToRumMetricFilterPtrOutput() RumMetricFilterPtrOutput {
+ return i.ToRumMetricFilterPtrOutputWithContext(context.Background())
+}
+
+func (i *rumMetricFilterPtrType) ToRumMetricFilterPtrOutputWithContext(ctx context.Context) RumMetricFilterPtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricFilterPtrOutput)
+}
+
+type RumMetricFilterOutput struct{ *pulumi.OutputState }
+
+func (RumMetricFilterOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricFilter)(nil)).Elem()
+}
+
+func (o RumMetricFilterOutput) ToRumMetricFilterOutput() RumMetricFilterOutput {
+ return o
+}
+
+func (o RumMetricFilterOutput) ToRumMetricFilterOutputWithContext(ctx context.Context) RumMetricFilterOutput {
+ return o
+}
+
+func (o RumMetricFilterOutput) ToRumMetricFilterPtrOutput() RumMetricFilterPtrOutput {
+ return o.ToRumMetricFilterPtrOutputWithContext(context.Background())
+}
+
+func (o RumMetricFilterOutput) ToRumMetricFilterPtrOutputWithContext(ctx context.Context) RumMetricFilterPtrOutput {
+ return o.ApplyTWithContext(ctx, func(_ context.Context, v RumMetricFilter) *RumMetricFilter {
+ return &v
+ }).(RumMetricFilterPtrOutput)
+}
+
+// The search query. Follows RUM search syntax.
+func (o RumMetricFilterOutput) Query() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v RumMetricFilter) *string { return v.Query }).(pulumi.StringPtrOutput)
+}
+
+type RumMetricFilterPtrOutput struct{ *pulumi.OutputState }
+
+func (RumMetricFilterPtrOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetricFilter)(nil)).Elem()
+}
+
+func (o RumMetricFilterPtrOutput) ToRumMetricFilterPtrOutput() RumMetricFilterPtrOutput {
+ return o
+}
+
+func (o RumMetricFilterPtrOutput) ToRumMetricFilterPtrOutputWithContext(ctx context.Context) RumMetricFilterPtrOutput {
+ return o
+}
+
+func (o RumMetricFilterPtrOutput) Elem() RumMetricFilterOutput {
+ return o.ApplyT(func(v *RumMetricFilter) RumMetricFilter {
+ if v != nil {
+ return *v
+ }
+ var ret RumMetricFilter
+ return ret
+ }).(RumMetricFilterOutput)
+}
+
+// The search query. Follows RUM search syntax.
+func (o RumMetricFilterPtrOutput) Query() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v *RumMetricFilter) *string {
+ if v == nil {
+ return nil
+ }
+ return v.Query
+ }).(pulumi.StringPtrOutput)
+}
+
+type RumMetricGroupBy struct {
+ // The path to the value the RUM-based metric will be aggregated over.
+ Path *string `pulumi:"path"`
+ // Name of the tag that gets created. By default, `path` is used as the tag name.
+ TagName *string `pulumi:"tagName"`
+}
+
+// RumMetricGroupByInput is an input type that accepts RumMetricGroupByArgs and RumMetricGroupByOutput values.
+// You can construct a concrete instance of `RumMetricGroupByInput` via:
+//
+// RumMetricGroupByArgs{...}
+type RumMetricGroupByInput interface {
+ pulumi.Input
+
+ ToRumMetricGroupByOutput() RumMetricGroupByOutput
+ ToRumMetricGroupByOutputWithContext(context.Context) RumMetricGroupByOutput
+}
+
+type RumMetricGroupByArgs struct {
+ // The path to the value the RUM-based metric will be aggregated over.
+ Path pulumi.StringPtrInput `pulumi:"path"`
+ // Name of the tag that gets created. By default, `path` is used as the tag name.
+ TagName pulumi.StringPtrInput `pulumi:"tagName"`
+}
+
+func (RumMetricGroupByArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricGroupBy)(nil)).Elem()
+}
+
+func (i RumMetricGroupByArgs) ToRumMetricGroupByOutput() RumMetricGroupByOutput {
+ return i.ToRumMetricGroupByOutputWithContext(context.Background())
+}
+
+func (i RumMetricGroupByArgs) ToRumMetricGroupByOutputWithContext(ctx context.Context) RumMetricGroupByOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricGroupByOutput)
+}
+
+// RumMetricGroupByArrayInput is an input type that accepts RumMetricGroupByArray and RumMetricGroupByArrayOutput values.
+// You can construct a concrete instance of `RumMetricGroupByArrayInput` via:
+//
+// RumMetricGroupByArray{ RumMetricGroupByArgs{...} }
+type RumMetricGroupByArrayInput interface {
+ pulumi.Input
+
+ ToRumMetricGroupByArrayOutput() RumMetricGroupByArrayOutput
+ ToRumMetricGroupByArrayOutputWithContext(context.Context) RumMetricGroupByArrayOutput
+}
+
+type RumMetricGroupByArray []RumMetricGroupByInput
+
+func (RumMetricGroupByArray) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]RumMetricGroupBy)(nil)).Elem()
+}
+
+func (i RumMetricGroupByArray) ToRumMetricGroupByArrayOutput() RumMetricGroupByArrayOutput {
+ return i.ToRumMetricGroupByArrayOutputWithContext(context.Background())
+}
+
+func (i RumMetricGroupByArray) ToRumMetricGroupByArrayOutputWithContext(ctx context.Context) RumMetricGroupByArrayOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricGroupByArrayOutput)
+}
+
+type RumMetricGroupByOutput struct{ *pulumi.OutputState }
+
+func (RumMetricGroupByOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricGroupBy)(nil)).Elem()
+}
+
+func (o RumMetricGroupByOutput) ToRumMetricGroupByOutput() RumMetricGroupByOutput {
+ return o
+}
+
+func (o RumMetricGroupByOutput) ToRumMetricGroupByOutputWithContext(ctx context.Context) RumMetricGroupByOutput {
+ return o
+}
+
+// The path to the value the RUM-based metric will be aggregated over.
+func (o RumMetricGroupByOutput) Path() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v RumMetricGroupBy) *string { return v.Path }).(pulumi.StringPtrOutput)
+}
+
+// Name of the tag that gets created. By default, `path` is used as the tag name.
+func (o RumMetricGroupByOutput) TagName() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v RumMetricGroupBy) *string { return v.TagName }).(pulumi.StringPtrOutput)
+}
+
+type RumMetricGroupByArrayOutput struct{ *pulumi.OutputState }
+
+func (RumMetricGroupByArrayOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]RumMetricGroupBy)(nil)).Elem()
+}
+
+func (o RumMetricGroupByArrayOutput) ToRumMetricGroupByArrayOutput() RumMetricGroupByArrayOutput {
+ return o
+}
+
+func (o RumMetricGroupByArrayOutput) ToRumMetricGroupByArrayOutputWithContext(ctx context.Context) RumMetricGroupByArrayOutput {
+ return o
+}
+
+func (o RumMetricGroupByArrayOutput) Index(i pulumi.IntInput) RumMetricGroupByOutput {
+ return pulumi.All(o, i).ApplyT(func(vs []interface{}) RumMetricGroupBy {
+ return vs[0].([]RumMetricGroupBy)[vs[1].(int)]
+ }).(RumMetricGroupByOutput)
+}
+
+type RumMetricUniqueness struct {
+ // When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.
+ When *string `pulumi:"when"`
+}
+
+// RumMetricUniquenessInput is an input type that accepts RumMetricUniquenessArgs and RumMetricUniquenessOutput values.
+// You can construct a concrete instance of `RumMetricUniquenessInput` via:
+//
+// RumMetricUniquenessArgs{...}
+type RumMetricUniquenessInput interface {
+ pulumi.Input
+
+ ToRumMetricUniquenessOutput() RumMetricUniquenessOutput
+ ToRumMetricUniquenessOutputWithContext(context.Context) RumMetricUniquenessOutput
+}
+
+type RumMetricUniquenessArgs struct {
+ // When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.
+ When pulumi.StringPtrInput `pulumi:"when"`
+}
+
+func (RumMetricUniquenessArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricUniqueness)(nil)).Elem()
+}
+
+func (i RumMetricUniquenessArgs) ToRumMetricUniquenessOutput() RumMetricUniquenessOutput {
+ return i.ToRumMetricUniquenessOutputWithContext(context.Background())
+}
+
+func (i RumMetricUniquenessArgs) ToRumMetricUniquenessOutputWithContext(ctx context.Context) RumMetricUniquenessOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricUniquenessOutput)
+}
+
+func (i RumMetricUniquenessArgs) ToRumMetricUniquenessPtrOutput() RumMetricUniquenessPtrOutput {
+ return i.ToRumMetricUniquenessPtrOutputWithContext(context.Background())
+}
+
+func (i RumMetricUniquenessArgs) ToRumMetricUniquenessPtrOutputWithContext(ctx context.Context) RumMetricUniquenessPtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricUniquenessOutput).ToRumMetricUniquenessPtrOutputWithContext(ctx)
+}
+
+// RumMetricUniquenessPtrInput is an input type that accepts RumMetricUniquenessArgs, RumMetricUniquenessPtr and RumMetricUniquenessPtrOutput values.
+// You can construct a concrete instance of `RumMetricUniquenessPtrInput` via:
+//
+// RumMetricUniquenessArgs{...}
+//
+// or:
+//
+// nil
+type RumMetricUniquenessPtrInput interface {
+ pulumi.Input
+
+ ToRumMetricUniquenessPtrOutput() RumMetricUniquenessPtrOutput
+ ToRumMetricUniquenessPtrOutputWithContext(context.Context) RumMetricUniquenessPtrOutput
+}
+
+type rumMetricUniquenessPtrType RumMetricUniquenessArgs
+
+func RumMetricUniquenessPtr(v *RumMetricUniquenessArgs) RumMetricUniquenessPtrInput {
+ return (*rumMetricUniquenessPtrType)(v)
+}
+
+func (*rumMetricUniquenessPtrType) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetricUniqueness)(nil)).Elem()
+}
+
+func (i *rumMetricUniquenessPtrType) ToRumMetricUniquenessPtrOutput() RumMetricUniquenessPtrOutput {
+ return i.ToRumMetricUniquenessPtrOutputWithContext(context.Background())
+}
+
+func (i *rumMetricUniquenessPtrType) ToRumMetricUniquenessPtrOutputWithContext(ctx context.Context) RumMetricUniquenessPtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricUniquenessPtrOutput)
+}
+
+type RumMetricUniquenessOutput struct{ *pulumi.OutputState }
+
+func (RumMetricUniquenessOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*RumMetricUniqueness)(nil)).Elem()
+}
+
+func (o RumMetricUniquenessOutput) ToRumMetricUniquenessOutput() RumMetricUniquenessOutput {
+ return o
+}
+
+func (o RumMetricUniquenessOutput) ToRumMetricUniquenessOutputWithContext(ctx context.Context) RumMetricUniquenessOutput {
+ return o
+}
+
+func (o RumMetricUniquenessOutput) ToRumMetricUniquenessPtrOutput() RumMetricUniquenessPtrOutput {
+ return o.ToRumMetricUniquenessPtrOutputWithContext(context.Background())
+}
+
+func (o RumMetricUniquenessOutput) ToRumMetricUniquenessPtrOutputWithContext(ctx context.Context) RumMetricUniquenessPtrOutput {
+ return o.ApplyTWithContext(ctx, func(_ context.Context, v RumMetricUniqueness) *RumMetricUniqueness {
+ return &v
+ }).(RumMetricUniquenessPtrOutput)
+}
+
+// When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.
+func (o RumMetricUniquenessOutput) When() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v RumMetricUniqueness) *string { return v.When }).(pulumi.StringPtrOutput)
+}
+
+type RumMetricUniquenessPtrOutput struct{ *pulumi.OutputState }
+
+func (RumMetricUniquenessPtrOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetricUniqueness)(nil)).Elem()
+}
+
+func (o RumMetricUniquenessPtrOutput) ToRumMetricUniquenessPtrOutput() RumMetricUniquenessPtrOutput {
+ return o
+}
+
+func (o RumMetricUniquenessPtrOutput) ToRumMetricUniquenessPtrOutputWithContext(ctx context.Context) RumMetricUniquenessPtrOutput {
+ return o
+}
+
+func (o RumMetricUniquenessPtrOutput) Elem() RumMetricUniquenessOutput {
+ return o.ApplyT(func(v *RumMetricUniqueness) RumMetricUniqueness {
+ if v != nil {
+ return *v
+ }
+ var ret RumMetricUniqueness
+ return ret
+ }).(RumMetricUniquenessOutput)
+}
+
+// When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.
+func (o RumMetricUniquenessPtrOutput) When() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v *RumMetricUniqueness) *string {
+ if v == nil {
+ return nil
+ }
+ return v.When
+ }).(pulumi.StringPtrOutput)
+}
+
type SecurityMonitoringDefaultRuleCase struct {
// Notification targets for each rule case.
Notifications []string `pulumi:"notifications"`
@@ -9097,6 +9652,10 @@ func (o SyntheticsTestAssertionTargetxpathPtrOutput) Xpath() pulumi.StringPtrOut
type SyntheticsTestBrowserStep struct {
// Determines if the step should be allowed to fail.
AllowFailure *bool `pulumi:"allowFailure"`
+ // Determines whether or not to always execute this step even if the previous step failed or was skipped.
+ AlwaysExecute *bool `pulumi:"alwaysExecute"`
+ // Determines whether or not to exit the test if the step succeeds.
+ ExitIfSucceed *bool `pulumi:"exitIfSucceed"`
// Force update of the "element" parameter for the step
ForceElementUpdate *bool `pulumi:"forceElementUpdate"`
// Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allowFailure` is `true`.
@@ -9127,6 +9686,10 @@ type SyntheticsTestBrowserStepInput interface {
type SyntheticsTestBrowserStepArgs struct {
// Determines if the step should be allowed to fail.
AllowFailure pulumi.BoolPtrInput `pulumi:"allowFailure"`
+ // Determines whether or not to always execute this step even if the previous step failed or was skipped.
+ AlwaysExecute pulumi.BoolPtrInput `pulumi:"alwaysExecute"`
+ // Determines whether or not to exit the test if the step succeeds.
+ ExitIfSucceed pulumi.BoolPtrInput `pulumi:"exitIfSucceed"`
// Force update of the "element" parameter for the step
ForceElementUpdate pulumi.BoolPtrInput `pulumi:"forceElementUpdate"`
// Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allowFailure` is `true`.
@@ -9199,6 +9762,16 @@ func (o SyntheticsTestBrowserStepOutput) AllowFailure() pulumi.BoolPtrOutput {
return o.ApplyT(func(v SyntheticsTestBrowserStep) *bool { return v.AllowFailure }).(pulumi.BoolPtrOutput)
}
+// Determines whether or not to always execute this step even if the previous step failed or was skipped.
+func (o SyntheticsTestBrowserStepOutput) AlwaysExecute() pulumi.BoolPtrOutput {
+ return o.ApplyT(func(v SyntheticsTestBrowserStep) *bool { return v.AlwaysExecute }).(pulumi.BoolPtrOutput)
+}
+
+// Determines whether or not to exit the test if the step succeeds.
+func (o SyntheticsTestBrowserStepOutput) ExitIfSucceed() pulumi.BoolPtrOutput {
+ return o.ApplyT(func(v SyntheticsTestBrowserStep) *bool { return v.ExitIfSucceed }).(pulumi.BoolPtrOutput)
+}
+
// Force update of the "element" parameter for the step
func (o SyntheticsTestBrowserStepOutput) ForceElementUpdate() pulumi.BoolPtrOutput {
return o.ApplyT(func(v SyntheticsTestBrowserStep) *bool { return v.ForceElementUpdate }).(pulumi.BoolPtrOutput)
@@ -18777,6 +19350,14 @@ func init() {
pulumi.RegisterInputType(reflect.TypeOf((*RestrictionPolicyBindingArrayInput)(nil)).Elem(), RestrictionPolicyBindingArray{})
pulumi.RegisterInputType(reflect.TypeOf((*RolePermissionInput)(nil)).Elem(), RolePermissionArgs{})
pulumi.RegisterInputType(reflect.TypeOf((*RolePermissionArrayInput)(nil)).Elem(), RolePermissionArray{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricComputeInput)(nil)).Elem(), RumMetricComputeArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricComputePtrInput)(nil)).Elem(), RumMetricComputeArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricFilterInput)(nil)).Elem(), RumMetricFilterArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricFilterPtrInput)(nil)).Elem(), RumMetricFilterArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricGroupByInput)(nil)).Elem(), RumMetricGroupByArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricGroupByArrayInput)(nil)).Elem(), RumMetricGroupByArray{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricUniquenessInput)(nil)).Elem(), RumMetricUniquenessArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricUniquenessPtrInput)(nil)).Elem(), RumMetricUniquenessArgs{})
pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringDefaultRuleCaseInput)(nil)).Elem(), SecurityMonitoringDefaultRuleCaseArgs{})
pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringDefaultRuleCaseArrayInput)(nil)).Elem(), SecurityMonitoringDefaultRuleCaseArray{})
pulumi.RegisterInputType(reflect.TypeOf((*SecurityMonitoringDefaultRuleFilterInput)(nil)).Elem(), SecurityMonitoringDefaultRuleFilterArgs{})
@@ -19012,6 +19593,14 @@ func init() {
pulumi.RegisterOutputType(RestrictionPolicyBindingArrayOutput{})
pulumi.RegisterOutputType(RolePermissionOutput{})
pulumi.RegisterOutputType(RolePermissionArrayOutput{})
+ pulumi.RegisterOutputType(RumMetricComputeOutput{})
+ pulumi.RegisterOutputType(RumMetricComputePtrOutput{})
+ pulumi.RegisterOutputType(RumMetricFilterOutput{})
+ pulumi.RegisterOutputType(RumMetricFilterPtrOutput{})
+ pulumi.RegisterOutputType(RumMetricGroupByOutput{})
+ pulumi.RegisterOutputType(RumMetricGroupByArrayOutput{})
+ pulumi.RegisterOutputType(RumMetricUniquenessOutput{})
+ pulumi.RegisterOutputType(RumMetricUniquenessPtrOutput{})
pulumi.RegisterOutputType(SecurityMonitoringDefaultRuleCaseOutput{})
pulumi.RegisterOutputType(SecurityMonitoringDefaultRuleCaseArrayOutput{})
pulumi.RegisterOutputType(SecurityMonitoringDefaultRuleFilterOutput{})
diff --git a/sdk/go/datadog/rumMetric.go b/sdk/go/datadog/rumMetric.go
new file mode 100644
index 000000000..57170b9a1
--- /dev/null
+++ b/sdk/go/datadog/rumMetric.go
@@ -0,0 +1,279 @@
+// 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 RumMetric resource. This can be used to create and manage Datadog rum_metric.
+//
+// ## Import
+//
+// ```sh
+// $ pulumi import datadog:index/rumMetric:RumMetric testing_rum_metric "testing.rum.metric"
+// ```
+type RumMetric struct {
+ pulumi.CustomResourceState
+
+ Compute RumMetricComputePtrOutput `pulumi:"compute"`
+ // The type of RUM events to filter on.
+ EventType pulumi.StringOutput `pulumi:"eventType"`
+ Filter RumMetricFilterPtrOutput `pulumi:"filter"`
+ GroupBies RumMetricGroupByArrayOutput `pulumi:"groupBies"`
+ // The name of the RUM-based metric. This field can't be updated after creation.
+ Name pulumi.StringOutput `pulumi:"name"`
+ Uniqueness RumMetricUniquenessPtrOutput `pulumi:"uniqueness"`
+}
+
+// NewRumMetric registers a new resource with the given unique name, arguments, and options.
+func NewRumMetric(ctx *pulumi.Context,
+ name string, args *RumMetricArgs, opts ...pulumi.ResourceOption) (*RumMetric, error) {
+ if args == nil {
+ return nil, errors.New("missing one or more required arguments")
+ }
+
+ if args.EventType == nil {
+ return nil, errors.New("invalid value for required argument 'EventType'")
+ }
+ if args.Name == nil {
+ return nil, errors.New("invalid value for required argument 'Name'")
+ }
+ opts = internal.PkgResourceDefaultOpts(opts)
+ var resource RumMetric
+ err := ctx.RegisterResource("datadog:index/rumMetric:RumMetric", name, args, &resource, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &resource, nil
+}
+
+// GetRumMetric gets an existing RumMetric 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 GetRumMetric(ctx *pulumi.Context,
+ name string, id pulumi.IDInput, state *RumMetricState, opts ...pulumi.ResourceOption) (*RumMetric, error) {
+ var resource RumMetric
+ err := ctx.ReadResource("datadog:index/rumMetric:RumMetric", name, id, state, &resource, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &resource, nil
+}
+
+// Input properties used for looking up and filtering RumMetric resources.
+type rumMetricState struct {
+ Compute *RumMetricCompute `pulumi:"compute"`
+ // The type of RUM events to filter on.
+ EventType *string `pulumi:"eventType"`
+ Filter *RumMetricFilter `pulumi:"filter"`
+ GroupBies []RumMetricGroupBy `pulumi:"groupBies"`
+ // The name of the RUM-based metric. This field can't be updated after creation.
+ Name *string `pulumi:"name"`
+ Uniqueness *RumMetricUniqueness `pulumi:"uniqueness"`
+}
+
+type RumMetricState struct {
+ Compute RumMetricComputePtrInput
+ // The type of RUM events to filter on.
+ EventType pulumi.StringPtrInput
+ Filter RumMetricFilterPtrInput
+ GroupBies RumMetricGroupByArrayInput
+ // The name of the RUM-based metric. This field can't be updated after creation.
+ Name pulumi.StringPtrInput
+ Uniqueness RumMetricUniquenessPtrInput
+}
+
+func (RumMetricState) ElementType() reflect.Type {
+ return reflect.TypeOf((*rumMetricState)(nil)).Elem()
+}
+
+type rumMetricArgs struct {
+ Compute *RumMetricCompute `pulumi:"compute"`
+ // The type of RUM events to filter on.
+ EventType string `pulumi:"eventType"`
+ Filter *RumMetricFilter `pulumi:"filter"`
+ GroupBies []RumMetricGroupBy `pulumi:"groupBies"`
+ // The name of the RUM-based metric. This field can't be updated after creation.
+ Name string `pulumi:"name"`
+ Uniqueness *RumMetricUniqueness `pulumi:"uniqueness"`
+}
+
+// The set of arguments for constructing a RumMetric resource.
+type RumMetricArgs struct {
+ Compute RumMetricComputePtrInput
+ // The type of RUM events to filter on.
+ EventType pulumi.StringInput
+ Filter RumMetricFilterPtrInput
+ GroupBies RumMetricGroupByArrayInput
+ // The name of the RUM-based metric. This field can't be updated after creation.
+ Name pulumi.StringInput
+ Uniqueness RumMetricUniquenessPtrInput
+}
+
+func (RumMetricArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*rumMetricArgs)(nil)).Elem()
+}
+
+type RumMetricInput interface {
+ pulumi.Input
+
+ ToRumMetricOutput() RumMetricOutput
+ ToRumMetricOutputWithContext(ctx context.Context) RumMetricOutput
+}
+
+func (*RumMetric) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetric)(nil)).Elem()
+}
+
+func (i *RumMetric) ToRumMetricOutput() RumMetricOutput {
+ return i.ToRumMetricOutputWithContext(context.Background())
+}
+
+func (i *RumMetric) ToRumMetricOutputWithContext(ctx context.Context) RumMetricOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricOutput)
+}
+
+// RumMetricArrayInput is an input type that accepts RumMetricArray and RumMetricArrayOutput values.
+// You can construct a concrete instance of `RumMetricArrayInput` via:
+//
+// RumMetricArray{ RumMetricArgs{...} }
+type RumMetricArrayInput interface {
+ pulumi.Input
+
+ ToRumMetricArrayOutput() RumMetricArrayOutput
+ ToRumMetricArrayOutputWithContext(context.Context) RumMetricArrayOutput
+}
+
+type RumMetricArray []RumMetricInput
+
+func (RumMetricArray) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]*RumMetric)(nil)).Elem()
+}
+
+func (i RumMetricArray) ToRumMetricArrayOutput() RumMetricArrayOutput {
+ return i.ToRumMetricArrayOutputWithContext(context.Background())
+}
+
+func (i RumMetricArray) ToRumMetricArrayOutputWithContext(ctx context.Context) RumMetricArrayOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricArrayOutput)
+}
+
+// RumMetricMapInput is an input type that accepts RumMetricMap and RumMetricMapOutput values.
+// You can construct a concrete instance of `RumMetricMapInput` via:
+//
+// RumMetricMap{ "key": RumMetricArgs{...} }
+type RumMetricMapInput interface {
+ pulumi.Input
+
+ ToRumMetricMapOutput() RumMetricMapOutput
+ ToRumMetricMapOutputWithContext(context.Context) RumMetricMapOutput
+}
+
+type RumMetricMap map[string]RumMetricInput
+
+func (RumMetricMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]*RumMetric)(nil)).Elem()
+}
+
+func (i RumMetricMap) ToRumMetricMapOutput() RumMetricMapOutput {
+ return i.ToRumMetricMapOutputWithContext(context.Background())
+}
+
+func (i RumMetricMap) ToRumMetricMapOutputWithContext(ctx context.Context) RumMetricMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(RumMetricMapOutput)
+}
+
+type RumMetricOutput struct{ *pulumi.OutputState }
+
+func (RumMetricOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((**RumMetric)(nil)).Elem()
+}
+
+func (o RumMetricOutput) ToRumMetricOutput() RumMetricOutput {
+ return o
+}
+
+func (o RumMetricOutput) ToRumMetricOutputWithContext(ctx context.Context) RumMetricOutput {
+ return o
+}
+
+func (o RumMetricOutput) Compute() RumMetricComputePtrOutput {
+ return o.ApplyT(func(v *RumMetric) RumMetricComputePtrOutput { return v.Compute }).(RumMetricComputePtrOutput)
+}
+
+// The type of RUM events to filter on.
+func (o RumMetricOutput) EventType() pulumi.StringOutput {
+ return o.ApplyT(func(v *RumMetric) pulumi.StringOutput { return v.EventType }).(pulumi.StringOutput)
+}
+
+func (o RumMetricOutput) Filter() RumMetricFilterPtrOutput {
+ return o.ApplyT(func(v *RumMetric) RumMetricFilterPtrOutput { return v.Filter }).(RumMetricFilterPtrOutput)
+}
+
+func (o RumMetricOutput) GroupBies() RumMetricGroupByArrayOutput {
+ return o.ApplyT(func(v *RumMetric) RumMetricGroupByArrayOutput { return v.GroupBies }).(RumMetricGroupByArrayOutput)
+}
+
+// The name of the RUM-based metric. This field can't be updated after creation.
+func (o RumMetricOutput) Name() pulumi.StringOutput {
+ return o.ApplyT(func(v *RumMetric) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
+}
+
+func (o RumMetricOutput) Uniqueness() RumMetricUniquenessPtrOutput {
+ return o.ApplyT(func(v *RumMetric) RumMetricUniquenessPtrOutput { return v.Uniqueness }).(RumMetricUniquenessPtrOutput)
+}
+
+type RumMetricArrayOutput struct{ *pulumi.OutputState }
+
+func (RumMetricArrayOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]*RumMetric)(nil)).Elem()
+}
+
+func (o RumMetricArrayOutput) ToRumMetricArrayOutput() RumMetricArrayOutput {
+ return o
+}
+
+func (o RumMetricArrayOutput) ToRumMetricArrayOutputWithContext(ctx context.Context) RumMetricArrayOutput {
+ return o
+}
+
+func (o RumMetricArrayOutput) Index(i pulumi.IntInput) RumMetricOutput {
+ return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RumMetric {
+ return vs[0].([]*RumMetric)[vs[1].(int)]
+ }).(RumMetricOutput)
+}
+
+type RumMetricMapOutput struct{ *pulumi.OutputState }
+
+func (RumMetricMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]*RumMetric)(nil)).Elem()
+}
+
+func (o RumMetricMapOutput) ToRumMetricMapOutput() RumMetricMapOutput {
+ return o
+}
+
+func (o RumMetricMapOutput) ToRumMetricMapOutputWithContext(ctx context.Context) RumMetricMapOutput {
+ return o
+}
+
+func (o RumMetricMapOutput) MapIndex(k pulumi.StringInput) RumMetricOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RumMetric {
+ return vs[0].(map[string]*RumMetric)[vs[1].(string)]
+ }).(RumMetricOutput)
+}
+
+func init() {
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricInput)(nil)).Elem(), &RumMetric{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricArrayInput)(nil)).Elem(), RumMetricArray{})
+ pulumi.RegisterInputType(reflect.TypeOf((*RumMetricMapInput)(nil)).Elem(), RumMetricMap{})
+ pulumi.RegisterOutputType(RumMetricOutput{})
+ pulumi.RegisterOutputType(RumMetricArrayOutput{})
+ pulumi.RegisterOutputType(RumMetricMapOutput{})
+}
diff --git a/sdk/go/datadog/sensitiveDataScannerRule.go b/sdk/go/datadog/sensitiveDataScannerRule.go
index 5ac2a5f75..c7fadc967 100644
--- a/sdk/go/datadog/sensitiveDataScannerRule.go
+++ b/sdk/go/datadog/sensitiveDataScannerRule.go
@@ -28,7 +28,7 @@ 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.
+ // 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. If the rule has the `standardPatternId` field, then discarding this field will apply the recommended keywords. 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"`
@@ -87,7 +87,7 @@ 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.
+ // 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. If the rule has the `standardPatternId` field, then discarding this field will apply the recommended keywords. 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"`
@@ -114,7 +114,7 @@ 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.
+ // 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. If the rule has the `standardPatternId` field, then discarding this field will apply the recommended keywords. 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
@@ -145,7 +145,7 @@ 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.
+ // 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. If the rule has the `standardPatternId` field, then discarding this field will apply the recommended keywords. 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"`
@@ -173,7 +173,7 @@ 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.
+ // 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. If the rule has the `standardPatternId` field, then discarding this field will apply the recommended keywords. 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
@@ -295,7 +295,7 @@ 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.
+// 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. If the rule has the `standardPatternId` field, then discarding this field will apply the recommended keywords. 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
diff --git a/sdk/java/build.gradle b/sdk/java/build.gradle
index 9c3580e26..0deaf35ee 100644
--- a/sdk/java/build.gradle
+++ b/sdk/java/build.gradle
@@ -5,7 +5,7 @@ plugins {
id("signing")
id("java-library")
id("maven-publish")
- id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
+ id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
}
group = "com.pulumi"
@@ -44,7 +44,7 @@ repositories {
dependencies {
implementation("com.google.code.findbugs:jsr305:3.0.2")
implementation("com.google.code.gson:gson:2.8.9")
- implementation("com.pulumi:pulumi:0.17.0")
+ implementation("com.pulumi:pulumi:0.18.0")
}
task sourcesJar(type: Jar) {
diff --git a/sdk/java/src/main/java/com/pulumi/datadog/RumMetric.java b/sdk/java/src/main/java/com/pulumi/datadog/RumMetric.java
new file mode 100644
index 000000000..29f4cb1b1
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/datadog/RumMetric.java
@@ -0,0 +1,195 @@
+// *** 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.RumMetricArgs;
+import com.pulumi.datadog.Utilities;
+import com.pulumi.datadog.inputs.RumMetricState;
+import com.pulumi.datadog.outputs.RumMetricCompute;
+import com.pulumi.datadog.outputs.RumMetricFilter;
+import com.pulumi.datadog.outputs.RumMetricGroupBy;
+import com.pulumi.datadog.outputs.RumMetricUniqueness;
+import java.lang.String;
+import java.util.List;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+/**
+ * Provides a Datadog RumMetric resource. This can be used to create and manage Datadog rum_metric.
+ *
+ * ## Example Usage
+ *
+ * <!--Start PulumiCodeChooser -->
+ *
+ * {@code
+ * package generated_program;
+ *
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.datadog.RumMetric;
+ * import com.pulumi.datadog.RumMetricArgs;
+ * import com.pulumi.datadog.inputs.RumMetricGroupByArgs;
+ * 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 }{{@code
+ * public static void main(String[] args) }{{@code
+ * Pulumi.run(App::stack);
+ * }}{@code
+ *
+ * public static void stack(Context ctx) }{{@code
+ * // Create new rum_metric resource
+ * var testingRumMetric = new RumMetric("testingRumMetric", RumMetricArgs.builder()
+ * .name("testing.rum.metric")
+ * .compute(RumMetricComputeArgs.builder()
+ * .aggregationType("distribution")
+ * .includePercentiles(true)
+ * .path("}{@literal @}{@code duration")
+ * .build())
+ * .eventType("session")
+ * .filter(RumMetricFilterArgs.builder()
+ * .query("}{@literal @}{@code service:web-ui")
+ * .build())
+ * .groupBies(RumMetricGroupByArgs.builder()
+ * .path("}{@literal @}{@code browser.name")
+ * .tagName("browser_name")
+ * .build())
+ * .uniqueness(RumMetricUniquenessArgs.builder()
+ * .when("match")
+ * .build())
+ * .build());
+ *
+ * }}{@code
+ * }}{@code
+ * }
+ *
+ * <!--End PulumiCodeChooser -->
+ *
+ * ## Import
+ *
+ * ```sh
+ * $ pulumi import datadog:index/rumMetric:RumMetric testing_rum_metric "testing.rum.metric"
+ * ```
+ *
+ */
+@ResourceType(type="datadog:index/rumMetric:RumMetric")
+public class RumMetric extends com.pulumi.resources.CustomResource {
+ @Export(name="compute", refs={RumMetricCompute.class}, tree="[0]")
+ private Output* @Nullable */ RumMetricCompute> compute;
+
+ public Output> compute() {
+ return Codegen.optional(this.compute);
+ }
+ /**
+ * The type of RUM events to filter on.
+ *
+ */
+ @Export(name="eventType", refs={String.class}, tree="[0]")
+ private Output eventType;
+
+ /**
+ * @return The type of RUM events to filter on.
+ *
+ */
+ public Output eventType() {
+ return this.eventType;
+ }
+ @Export(name="filter", refs={RumMetricFilter.class}, tree="[0]")
+ private Output* @Nullable */ RumMetricFilter> filter;
+
+ public Output> filter() {
+ return Codegen.optional(this.filter);
+ }
+ @Export(name="groupBies", refs={List.class,RumMetricGroupBy.class}, tree="[0,1]")
+ private Output* @Nullable */ List> groupBies;
+
+ public Output>> groupBies() {
+ return Codegen.optional(this.groupBies);
+ }
+ /**
+ * The name of the RUM-based metric. This field can't be updated after creation.
+ *
+ */
+ @Export(name="name", refs={String.class}, tree="[0]")
+ private Output name;
+
+ /**
+ * @return The name of the RUM-based metric. This field can't be updated after creation.
+ *
+ */
+ public Output name() {
+ return this.name;
+ }
+ @Export(name="uniqueness", refs={RumMetricUniqueness.class}, tree="[0]")
+ private Output* @Nullable */ RumMetricUniqueness> uniqueness;
+
+ public Output> uniqueness() {
+ return Codegen.optional(this.uniqueness);
+ }
+
+ /**
+ *
+ * @param name The _unique_ name of the resulting resource.
+ */
+ public RumMetric(java.lang.String name) {
+ this(name, RumMetricArgs.Empty);
+ }
+ /**
+ *
+ * @param name The _unique_ name of the resulting resource.
+ * @param args The arguments to use to populate this resource's properties.
+ */
+ public RumMetric(java.lang.String name, RumMetricArgs 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 RumMetric(java.lang.String name, RumMetricArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) {
+ super("datadog:index/rumMetric:RumMetric", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false);
+ }
+
+ private RumMetric(java.lang.String name, Output id, @Nullable RumMetricState state, @Nullable com.pulumi.resources.CustomResourceOptions options) {
+ super("datadog:index/rumMetric:RumMetric", name, state, makeResourceOptions(options, id), false);
+ }
+
+ private static RumMetricArgs makeArgs(RumMetricArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) {
+ if (options != null && options.getUrn().isPresent()) {
+ return null;
+ }
+ return args == null ? RumMetricArgs.Empty : args;
+ }
+
+ 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 RumMetric get(java.lang.String name, Output id, @Nullable RumMetricState state, @Nullable com.pulumi.resources.CustomResourceOptions options) {
+ return new RumMetric(name, id, state, options);
+ }
+}
diff --git a/sdk/java/src/main/java/com/pulumi/datadog/RumMetricArgs.java b/sdk/java/src/main/java/com/pulumi/datadog/RumMetricArgs.java
new file mode 100644
index 000000000..12866155c
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/datadog/RumMetricArgs.java
@@ -0,0 +1,204 @@
+// *** 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.datadog.inputs.RumMetricComputeArgs;
+import com.pulumi.datadog.inputs.RumMetricFilterArgs;
+import com.pulumi.datadog.inputs.RumMetricGroupByArgs;
+import com.pulumi.datadog.inputs.RumMetricUniquenessArgs;
+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 RumMetricArgs extends com.pulumi.resources.ResourceArgs {
+
+ public static final RumMetricArgs Empty = new RumMetricArgs();
+
+ @Import(name="compute")
+ private @Nullable Output compute;
+
+ public Optional