diff --git a/sdk/dotnet/As3.cs b/sdk/dotnet/As3.cs index 24c7761c..b069727f 100644 --- a/sdk/dotnet/As3.cs +++ b/sdk/dotnet/As3.cs @@ -385,6 +385,12 @@ public partial class As3 : global::Pulumi.CustomResource [Output("as3Json")] public Output As3Json { get; private set; } = null!; + /// + /// A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + /// + [Output("controls")] + public Output?> Controls { get; private set; } = null!; + /// /// Set True if you want to ignore metadata changes during update. By default it is set to false /// @@ -657,6 +663,18 @@ public sealed class As3Args : global::Pulumi.ResourceArgs [Input("as3Json")] public Input? As3Json { get; set; } + [Input("controls")] + private InputMap? _controls; + + /// + /// A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + /// + public InputMap Controls + { + get => _controls ?? (_controls = new InputMap()); + set => _controls = value; + } + /// /// Set True if you want to ignore metadata changes during update. By default it is set to false /// @@ -885,6 +903,18 @@ public sealed class As3State : global::Pulumi.ResourceArgs [Input("as3Json")] public Input? As3Json { get; set; } + [Input("controls")] + private InputMap? _controls; + + /// + /// A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + /// + public InputMap Controls + { + get => _controls ?? (_controls = new InputMap()); + set => _controls = value; + } + /// /// Set True if you want to ignore metadata changes during update. By default it is set to false /// diff --git a/sdk/dotnet/Inputs/SaasBotDefenseProfileProtectedEndpointArgs.cs b/sdk/dotnet/Inputs/SaasBotDefenseProfileProtectedEndpointArgs.cs new file mode 100644 index 00000000..5688967c --- /dev/null +++ b/sdk/dotnet/Inputs/SaasBotDefenseProfileProtectedEndpointArgs.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.F5BigIP.Inputs +{ + + public sealed class SaasBotDefenseProfileProtectedEndpointArgs : global::Pulumi.ResourceArgs + { + /// + /// Specifies the path to the web page to be protected by BD. For example, `/login`. + /// + [Input("endpoint")] + public Input? Endpoint { get; set; } + + /// + /// hostname or IP address of the web page to be protected by the Bot Defense + /// + [Input("host")] + public Input? Host { get; set; } + + /// + /// Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + /// + [Input("mitigationAction")] + public Input? MitigationAction { get; set; } + + /// + /// Unique name for the protected endpoint + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// POST field to protect the path when it has a POST method, `enabled` or `disabled` + /// + [Input("post")] + public Input? Post { get; set; } + + /// + /// PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + /// + [Input("put")] + public Input? Put { get; set; } + + public SaasBotDefenseProfileProtectedEndpointArgs() + { + } + public static new SaasBotDefenseProfileProtectedEndpointArgs Empty => new SaasBotDefenseProfileProtectedEndpointArgs(); + } +} diff --git a/sdk/dotnet/Inputs/SaasBotDefenseProfileProtectedEndpointGetArgs.cs b/sdk/dotnet/Inputs/SaasBotDefenseProfileProtectedEndpointGetArgs.cs new file mode 100644 index 00000000..7ee8195c --- /dev/null +++ b/sdk/dotnet/Inputs/SaasBotDefenseProfileProtectedEndpointGetArgs.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.F5BigIP.Inputs +{ + + public sealed class SaasBotDefenseProfileProtectedEndpointGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Specifies the path to the web page to be protected by BD. For example, `/login`. + /// + [Input("endpoint")] + public Input? Endpoint { get; set; } + + /// + /// hostname or IP address of the web page to be protected by the Bot Defense + /// + [Input("host")] + public Input? Host { get; set; } + + /// + /// Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + /// + [Input("mitigationAction")] + public Input? MitigationAction { get; set; } + + /// + /// Unique name for the protected endpoint + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// POST field to protect the path when it has a POST method, `enabled` or `disabled` + /// + [Input("post")] + public Input? Post { get; set; } + + /// + /// PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + /// + [Input("put")] + public Input? Put { get; set; } + + public SaasBotDefenseProfileProtectedEndpointGetArgs() + { + } + public static new SaasBotDefenseProfileProtectedEndpointGetArgs Empty => new SaasBotDefenseProfileProtectedEndpointGetArgs(); + } +} diff --git a/sdk/dotnet/Ltm/ProfileHttp.cs b/sdk/dotnet/Ltm/ProfileHttp.cs index e9f47244..3432b70d 100644 --- a/sdk/dotnet/Ltm/ProfileHttp.cs +++ b/sdk/dotnet/Ltm/ProfileHttp.cs @@ -105,7 +105,7 @@ public partial class ProfileHttp : global::Pulumi.CustomResource /// Specifies an HTTP fallback host. HTTP redirection allows you to redirect HTTP traffic to another protocol identifier, host name, port number /// [Output("fallbackHost")] - public Output FallbackHost { get; private set; } = null!; + public Output FallbackHost { get; private set; } = null!; /// /// Specifies one or more three-digit status codes that can be returned by an HTTP server,that should trigger a redirection to the fallback host. diff --git a/sdk/dotnet/Outputs/SaasBotDefenseProfileProtectedEndpoint.cs b/sdk/dotnet/Outputs/SaasBotDefenseProfileProtectedEndpoint.cs new file mode 100644 index 00000000..3332174f --- /dev/null +++ b/sdk/dotnet/Outputs/SaasBotDefenseProfileProtectedEndpoint.cs @@ -0,0 +1,63 @@ +// *** 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.F5BigIP.Outputs +{ + + [OutputType] + public sealed class SaasBotDefenseProfileProtectedEndpoint + { + /// + /// Specifies the path to the web page to be protected by BD. For example, `/login`. + /// + public readonly string? Endpoint; + /// + /// hostname or IP address of the web page to be protected by the Bot Defense + /// + public readonly string? Host; + /// + /// Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + /// + public readonly string? MitigationAction; + /// + /// Unique name for the protected endpoint + /// + public readonly string Name; + /// + /// POST field to protect the path when it has a POST method, `enabled` or `disabled` + /// + public readonly string? Post; + /// + /// PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + /// + public readonly string? Put; + + [OutputConstructor] + private SaasBotDefenseProfileProtectedEndpoint( + string? endpoint, + + string? host, + + string? mitigationAction, + + string name, + + string? post, + + string? put) + { + Endpoint = endpoint; + Host = host; + MitigationAction = mitigationAction; + Name = name; + Post = post; + Put = put; + } + } +} diff --git a/sdk/dotnet/SaasBotDefenseProfile.cs b/sdk/dotnet/SaasBotDefenseProfile.cs new file mode 100644 index 00000000..0926705d --- /dev/null +++ b/sdk/dotnet/SaasBotDefenseProfile.cs @@ -0,0 +1,293 @@ +// *** 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.F5BigIP +{ + [F5BigIPResourceType("f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile")] + public partial class SaasBotDefenseProfile : global::Pulumi.CustomResource + { + /// + /// Specifies the API key, enter the value provided by F5 Support. + /// + [Output("apiKey")] + public Output ApiKey { get; private set; } = null!; + + /// + /// Specifies the Bot Defense API application ID, enter the value provided by F5 Support + /// + [Output("applicationId")] + public Output ApplicationId { get; private set; } = null!; + + /// + /// Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + /// + [Output("defaultsFrom")] + public Output DefaultsFrom { get; private set; } = null!; + + /// + /// Specifies descriptive text that identifies the BD profile. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// Unique name for the Distributed Cloud Services Bot Defense profile + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Use these settings to configure which pages on the website will be protected by BD + /// + [Output("protectedEndpoints")] + public Output> ProtectedEndpoints { get; private set; } = null!; + + /// + /// Specifies the web hostname to which API requests are made + /// + [Output("shapeProtectionPool")] + public Output ShapeProtectionPool { get; private set; } = null!; + + /// + /// Specifies a server-side SSL profile that is different from what the application pool uses + /// + [Output("sslProfile")] + public Output SslProfile { get; private set; } = null!; + + /// + /// Specifies the tenant ID, enter the value provided by F5 Support + /// + [Output("tenantId")] + public Output TenantId { get; private set; } = null!; + + + /// + /// Create a SaasBotDefenseProfile 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 SaasBotDefenseProfile(string name, SaasBotDefenseProfileArgs args, CustomResourceOptions? options = null) + : base("f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile", name, args ?? new SaasBotDefenseProfileArgs(), MakeResourceOptions(options, "")) + { + } + + private SaasBotDefenseProfile(string name, Input id, SaasBotDefenseProfileState? state = null, CustomResourceOptions? options = null) + : base("f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + AdditionalSecretOutputs = + { + "apiKey", + "applicationId", + }, + }; + 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 SaasBotDefenseProfile 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 SaasBotDefenseProfile Get(string name, Input id, SaasBotDefenseProfileState? state = null, CustomResourceOptions? options = null) + { + return new SaasBotDefenseProfile(name, id, state, options); + } + } + + public sealed class SaasBotDefenseProfileArgs : global::Pulumi.ResourceArgs + { + [Input("apiKey", required: true)] + private Input? _apiKey; + + /// + /// Specifies the API key, enter the value provided by F5 Support. + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + [Input("applicationId", required: true)] + private Input? _applicationId; + + /// + /// Specifies the Bot Defense API application ID, enter the value provided by F5 Support + /// + public Input? ApplicationId + { + get => _applicationId; + set + { + var emptySecret = Output.CreateSecret(0); + _applicationId = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + /// + [Input("defaultsFrom")] + public Input? DefaultsFrom { get; set; } + + /// + /// Specifies descriptive text that identifies the BD profile. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Unique name for the Distributed Cloud Services Bot Defense profile + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + [Input("protectedEndpoints", required: true)] + private InputList? _protectedEndpoints; + + /// + /// Use these settings to configure which pages on the website will be protected by BD + /// + public InputList ProtectedEndpoints + { + get => _protectedEndpoints ?? (_protectedEndpoints = new InputList()); + set => _protectedEndpoints = value; + } + + /// + /// Specifies the web hostname to which API requests are made + /// + [Input("shapeProtectionPool", required: true)] + public Input ShapeProtectionPool { get; set; } = null!; + + /// + /// Specifies a server-side SSL profile that is different from what the application pool uses + /// + [Input("sslProfile", required: true)] + public Input SslProfile { get; set; } = null!; + + /// + /// Specifies the tenant ID, enter the value provided by F5 Support + /// + [Input("tenantId", required: true)] + public Input TenantId { get; set; } = null!; + + public SaasBotDefenseProfileArgs() + { + } + public static new SaasBotDefenseProfileArgs Empty => new SaasBotDefenseProfileArgs(); + } + + public sealed class SaasBotDefenseProfileState : global::Pulumi.ResourceArgs + { + [Input("apiKey")] + private Input? _apiKey; + + /// + /// Specifies the API key, enter the value provided by F5 Support. + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + [Input("applicationId")] + private Input? _applicationId; + + /// + /// Specifies the Bot Defense API application ID, enter the value provided by F5 Support + /// + public Input? ApplicationId + { + get => _applicationId; + set + { + var emptySecret = Output.CreateSecret(0); + _applicationId = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + /// + [Input("defaultsFrom")] + public Input? DefaultsFrom { get; set; } + + /// + /// Specifies descriptive text that identifies the BD profile. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Unique name for the Distributed Cloud Services Bot Defense profile + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("protectedEndpoints")] + private InputList? _protectedEndpoints; + + /// + /// Use these settings to configure which pages on the website will be protected by BD + /// + public InputList ProtectedEndpoints + { + get => _protectedEndpoints ?? (_protectedEndpoints = new InputList()); + set => _protectedEndpoints = value; + } + + /// + /// Specifies the web hostname to which API requests are made + /// + [Input("shapeProtectionPool")] + public Input? ShapeProtectionPool { get; set; } + + /// + /// Specifies a server-side SSL profile that is different from what the application pool uses + /// + [Input("sslProfile")] + public Input? SslProfile { get; set; } + + /// + /// Specifies the tenant ID, enter the value provided by F5 Support + /// + [Input("tenantId")] + public Input? TenantId { get; set; } + + public SaasBotDefenseProfileState() + { + } + public static new SaasBotDefenseProfileState Empty => new SaasBotDefenseProfileState(); + } +} diff --git a/sdk/go/f5bigip/as3.go b/sdk/go/f5bigip/as3.go index 5d968e19..38b093cf 100644 --- a/sdk/go/f5bigip/as3.go +++ b/sdk/go/f5bigip/as3.go @@ -377,6 +377,8 @@ type As3 struct { ApplicationList pulumi.StringOutput `pulumi:"applicationList"` // Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function As3Json pulumi.StringPtrOutput `pulumi:"as3Json"` + // A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + Controls pulumi.StringMapOutput `pulumi:"controls"` // Set True if you want to ignore metadata changes during update. By default it is set to false // // * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -430,6 +432,8 @@ type as3State struct { ApplicationList *string `pulumi:"applicationList"` // Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function As3Json *string `pulumi:"as3Json"` + // A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + Controls map[string]string `pulumi:"controls"` // Set True if you want to ignore metadata changes during update. By default it is set to false // // * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -454,6 +458,8 @@ type As3State struct { ApplicationList pulumi.StringPtrInput // Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function As3Json pulumi.StringPtrInput + // A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + Controls pulumi.StringMapInput // Set True if you want to ignore metadata changes during update. By default it is set to false // // * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -482,6 +488,8 @@ type as3Args struct { ApplicationList *string `pulumi:"applicationList"` // Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function As3Json *string `pulumi:"as3Json"` + // A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + Controls map[string]string `pulumi:"controls"` // Set True if you want to ignore metadata changes during update. By default it is set to false // // * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -505,6 +513,8 @@ type As3Args struct { ApplicationList pulumi.StringPtrInput // Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function As3Json pulumi.StringPtrInput + // A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + Controls pulumi.StringMapInput // Set True if you want to ignore metadata changes during update. By default it is set to false // // * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -619,6 +629,11 @@ func (o As3Output) As3Json() pulumi.StringPtrOutput { return o.ApplyT(func(v *As3) pulumi.StringPtrOutput { return v.As3Json }).(pulumi.StringPtrOutput) } +// A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. +func (o As3Output) Controls() pulumi.StringMapOutput { + return o.ApplyT(func(v *As3) pulumi.StringMapOutput { return v.Controls }).(pulumi.StringMapOutput) +} + // Set True if you want to ignore metadata changes during update. By default it is set to false // // * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant diff --git a/sdk/go/f5bigip/init.go b/sdk/go/f5bigip/init.go index 1021d920..c48c2e0e 100644 --- a/sdk/go/f5bigip/init.go +++ b/sdk/go/f5bigip/init.go @@ -55,6 +55,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &NetTunnel{} case "f5bigip:index/partition:Partition": r = &Partition{} + case "f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile": + r = &SaasBotDefenseProfile{} case "f5bigip:index/sslKeyCert:SslKeyCert": r = &SslKeyCert{} case "f5bigip:index/trafficSelector:TrafficSelector": @@ -177,6 +179,11 @@ func init() { "index/partition", &module{version}, ) + pulumi.RegisterResourceModule( + "f5bigip", + "index/saasBotDefenseProfile", + &module{version}, + ) pulumi.RegisterResourceModule( "f5bigip", "index/sslKeyCert", diff --git a/sdk/go/f5bigip/ltm/profileHttp.go b/sdk/go/f5bigip/ltm/profileHttp.go index 03cb86b8..0efc233e 100644 --- a/sdk/go/f5bigip/ltm/profileHttp.go +++ b/sdk/go/f5bigip/ltm/profileHttp.go @@ -78,7 +78,7 @@ type ProfileHttp struct { // See Enforcement below for more details. Enforcements ProfileHttpEnforcementArrayOutput `pulumi:"enforcements"` // Specifies an HTTP fallback host. HTTP redirection allows you to redirect HTTP traffic to another protocol identifier, host name, port number - FallbackHost pulumi.StringOutput `pulumi:"fallbackHost"` + FallbackHost pulumi.StringPtrOutput `pulumi:"fallbackHost"` // Specifies one or more three-digit status codes that can be returned by an HTTP server,that should trigger a redirection to the fallback host. FallbackStatusCodes pulumi.StringArrayOutput `pulumi:"fallbackStatusCodes"` // Specifies the header string that you want to erase from an HTTP request. Default is `none`. @@ -535,8 +535,8 @@ func (o ProfileHttpOutput) Enforcements() ProfileHttpEnforcementArrayOutput { } // Specifies an HTTP fallback host. HTTP redirection allows you to redirect HTTP traffic to another protocol identifier, host name, port number -func (o ProfileHttpOutput) FallbackHost() pulumi.StringOutput { - return o.ApplyT(func(v *ProfileHttp) pulumi.StringOutput { return v.FallbackHost }).(pulumi.StringOutput) +func (o ProfileHttpOutput) FallbackHost() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ProfileHttp) pulumi.StringPtrOutput { return v.FallbackHost }).(pulumi.StringPtrOutput) } // Specifies one or more three-digit status codes that can be returned by an HTTP server,that should trigger a redirection to the fallback host. diff --git a/sdk/go/f5bigip/pulumiTypes.go b/sdk/go/f5bigip/pulumiTypes.go index 1b8a066f..5a3527aa 100644 --- a/sdk/go/f5bigip/pulumiTypes.go +++ b/sdk/go/f5bigip/pulumiTypes.go @@ -2646,6 +2646,148 @@ func (o FastUdpAppVirtualServerPtrOutput) Port() pulumi.IntPtrOutput { }).(pulumi.IntPtrOutput) } +type SaasBotDefenseProfileProtectedEndpoint struct { + // Specifies the path to the web page to be protected by BD. For example, `/login`. + Endpoint *string `pulumi:"endpoint"` + // hostname or IP address of the web page to be protected by the Bot Defense + Host *string `pulumi:"host"` + // Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + MitigationAction *string `pulumi:"mitigationAction"` + // Unique name for the protected endpoint + Name string `pulumi:"name"` + // POST field to protect the path when it has a POST method, `enabled` or `disabled` + Post *string `pulumi:"post"` + // PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + Put *string `pulumi:"put"` +} + +// SaasBotDefenseProfileProtectedEndpointInput is an input type that accepts SaasBotDefenseProfileProtectedEndpointArgs and SaasBotDefenseProfileProtectedEndpointOutput values. +// You can construct a concrete instance of `SaasBotDefenseProfileProtectedEndpointInput` via: +// +// SaasBotDefenseProfileProtectedEndpointArgs{...} +type SaasBotDefenseProfileProtectedEndpointInput interface { + pulumi.Input + + ToSaasBotDefenseProfileProtectedEndpointOutput() SaasBotDefenseProfileProtectedEndpointOutput + ToSaasBotDefenseProfileProtectedEndpointOutputWithContext(context.Context) SaasBotDefenseProfileProtectedEndpointOutput +} + +type SaasBotDefenseProfileProtectedEndpointArgs struct { + // Specifies the path to the web page to be protected by BD. For example, `/login`. + Endpoint pulumi.StringPtrInput `pulumi:"endpoint"` + // hostname or IP address of the web page to be protected by the Bot Defense + Host pulumi.StringPtrInput `pulumi:"host"` + // Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + MitigationAction pulumi.StringPtrInput `pulumi:"mitigationAction"` + // Unique name for the protected endpoint + Name pulumi.StringInput `pulumi:"name"` + // POST field to protect the path when it has a POST method, `enabled` or `disabled` + Post pulumi.StringPtrInput `pulumi:"post"` + // PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + Put pulumi.StringPtrInput `pulumi:"put"` +} + +func (SaasBotDefenseProfileProtectedEndpointArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SaasBotDefenseProfileProtectedEndpoint)(nil)).Elem() +} + +func (i SaasBotDefenseProfileProtectedEndpointArgs) ToSaasBotDefenseProfileProtectedEndpointOutput() SaasBotDefenseProfileProtectedEndpointOutput { + return i.ToSaasBotDefenseProfileProtectedEndpointOutputWithContext(context.Background()) +} + +func (i SaasBotDefenseProfileProtectedEndpointArgs) ToSaasBotDefenseProfileProtectedEndpointOutputWithContext(ctx context.Context) SaasBotDefenseProfileProtectedEndpointOutput { + return pulumi.ToOutputWithContext(ctx, i).(SaasBotDefenseProfileProtectedEndpointOutput) +} + +// SaasBotDefenseProfileProtectedEndpointArrayInput is an input type that accepts SaasBotDefenseProfileProtectedEndpointArray and SaasBotDefenseProfileProtectedEndpointArrayOutput values. +// You can construct a concrete instance of `SaasBotDefenseProfileProtectedEndpointArrayInput` via: +// +// SaasBotDefenseProfileProtectedEndpointArray{ SaasBotDefenseProfileProtectedEndpointArgs{...} } +type SaasBotDefenseProfileProtectedEndpointArrayInput interface { + pulumi.Input + + ToSaasBotDefenseProfileProtectedEndpointArrayOutput() SaasBotDefenseProfileProtectedEndpointArrayOutput + ToSaasBotDefenseProfileProtectedEndpointArrayOutputWithContext(context.Context) SaasBotDefenseProfileProtectedEndpointArrayOutput +} + +type SaasBotDefenseProfileProtectedEndpointArray []SaasBotDefenseProfileProtectedEndpointInput + +func (SaasBotDefenseProfileProtectedEndpointArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SaasBotDefenseProfileProtectedEndpoint)(nil)).Elem() +} + +func (i SaasBotDefenseProfileProtectedEndpointArray) ToSaasBotDefenseProfileProtectedEndpointArrayOutput() SaasBotDefenseProfileProtectedEndpointArrayOutput { + return i.ToSaasBotDefenseProfileProtectedEndpointArrayOutputWithContext(context.Background()) +} + +func (i SaasBotDefenseProfileProtectedEndpointArray) ToSaasBotDefenseProfileProtectedEndpointArrayOutputWithContext(ctx context.Context) SaasBotDefenseProfileProtectedEndpointArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SaasBotDefenseProfileProtectedEndpointArrayOutput) +} + +type SaasBotDefenseProfileProtectedEndpointOutput struct{ *pulumi.OutputState } + +func (SaasBotDefenseProfileProtectedEndpointOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SaasBotDefenseProfileProtectedEndpoint)(nil)).Elem() +} + +func (o SaasBotDefenseProfileProtectedEndpointOutput) ToSaasBotDefenseProfileProtectedEndpointOutput() SaasBotDefenseProfileProtectedEndpointOutput { + return o +} + +func (o SaasBotDefenseProfileProtectedEndpointOutput) ToSaasBotDefenseProfileProtectedEndpointOutputWithContext(ctx context.Context) SaasBotDefenseProfileProtectedEndpointOutput { + return o +} + +// Specifies the path to the web page to be protected by BD. For example, `/login`. +func (o SaasBotDefenseProfileProtectedEndpointOutput) Endpoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v SaasBotDefenseProfileProtectedEndpoint) *string { return v.Endpoint }).(pulumi.StringPtrOutput) +} + +// hostname or IP address of the web page to be protected by the Bot Defense +func (o SaasBotDefenseProfileProtectedEndpointOutput) Host() pulumi.StringPtrOutput { + return o.ApplyT(func(v SaasBotDefenseProfileProtectedEndpoint) *string { return v.Host }).(pulumi.StringPtrOutput) +} + +// Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium +func (o SaasBotDefenseProfileProtectedEndpointOutput) MitigationAction() pulumi.StringPtrOutput { + return o.ApplyT(func(v SaasBotDefenseProfileProtectedEndpoint) *string { return v.MitigationAction }).(pulumi.StringPtrOutput) +} + +// Unique name for the protected endpoint +func (o SaasBotDefenseProfileProtectedEndpointOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v SaasBotDefenseProfileProtectedEndpoint) string { return v.Name }).(pulumi.StringOutput) +} + +// POST field to protect the path when it has a POST method, `enabled` or `disabled` +func (o SaasBotDefenseProfileProtectedEndpointOutput) Post() pulumi.StringPtrOutput { + return o.ApplyT(func(v SaasBotDefenseProfileProtectedEndpoint) *string { return v.Post }).(pulumi.StringPtrOutput) +} + +// PUT field to protect the path when it has a PUT method,`enabled` or `disabled` +func (o SaasBotDefenseProfileProtectedEndpointOutput) Put() pulumi.StringPtrOutput { + return o.ApplyT(func(v SaasBotDefenseProfileProtectedEndpoint) *string { return v.Put }).(pulumi.StringPtrOutput) +} + +type SaasBotDefenseProfileProtectedEndpointArrayOutput struct{ *pulumi.OutputState } + +func (SaasBotDefenseProfileProtectedEndpointArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SaasBotDefenseProfileProtectedEndpoint)(nil)).Elem() +} + +func (o SaasBotDefenseProfileProtectedEndpointArrayOutput) ToSaasBotDefenseProfileProtectedEndpointArrayOutput() SaasBotDefenseProfileProtectedEndpointArrayOutput { + return o +} + +func (o SaasBotDefenseProfileProtectedEndpointArrayOutput) ToSaasBotDefenseProfileProtectedEndpointArrayOutputWithContext(ctx context.Context) SaasBotDefenseProfileProtectedEndpointArrayOutput { + return o +} + +func (o SaasBotDefenseProfileProtectedEndpointArrayOutput) Index(i pulumi.IntInput) SaasBotDefenseProfileProtectedEndpointOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SaasBotDefenseProfileProtectedEndpoint { + return vs[0].([]SaasBotDefenseProfileProtectedEndpoint)[vs[1].(int)] + }).(SaasBotDefenseProfileProtectedEndpointOutput) +} + type WafPolicyFileType struct { // Determines whether the file type is allowed or disallowed. In either of these cases the VIOL_FILETYPE violation is issued (if enabled) for an incoming request- // * No allowed file type matched the file type of the request. @@ -3519,6 +3661,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*FastUdpAppPoolMemberArrayInput)(nil)).Elem(), FastUdpAppPoolMemberArray{}) pulumi.RegisterInputType(reflect.TypeOf((*FastUdpAppVirtualServerInput)(nil)).Elem(), FastUdpAppVirtualServerArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*FastUdpAppVirtualServerPtrInput)(nil)).Elem(), FastUdpAppVirtualServerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SaasBotDefenseProfileProtectedEndpointInput)(nil)).Elem(), SaasBotDefenseProfileProtectedEndpointArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SaasBotDefenseProfileProtectedEndpointArrayInput)(nil)).Elem(), SaasBotDefenseProfileProtectedEndpointArray{}) pulumi.RegisterInputType(reflect.TypeOf((*WafPolicyFileTypeInput)(nil)).Elem(), WafPolicyFileTypeArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*WafPolicyFileTypeArrayInput)(nil)).Elem(), WafPolicyFileTypeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*WafPolicyGraphqlProfileInput)(nil)).Elem(), WafPolicyGraphqlProfileArgs{}) @@ -3567,6 +3711,8 @@ func init() { pulumi.RegisterOutputType(FastUdpAppPoolMemberArrayOutput{}) pulumi.RegisterOutputType(FastUdpAppVirtualServerOutput{}) pulumi.RegisterOutputType(FastUdpAppVirtualServerPtrOutput{}) + pulumi.RegisterOutputType(SaasBotDefenseProfileProtectedEndpointOutput{}) + pulumi.RegisterOutputType(SaasBotDefenseProfileProtectedEndpointArrayOutput{}) pulumi.RegisterOutputType(WafPolicyFileTypeOutput{}) pulumi.RegisterOutputType(WafPolicyFileTypeArrayOutput{}) pulumi.RegisterOutputType(WafPolicyGraphqlProfileOutput{}) diff --git a/sdk/go/f5bigip/saasBotDefenseProfile.go b/sdk/go/f5bigip/saasBotDefenseProfile.go new file mode 100644 index 00000000..7397d861 --- /dev/null +++ b/sdk/go/f5bigip/saasBotDefenseProfile.go @@ -0,0 +1,369 @@ +// 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 f5bigip + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-f5bigip/sdk/v3/go/f5bigip/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type SaasBotDefenseProfile struct { + pulumi.CustomResourceState + + // Specifies the API key, enter the value provided by F5 Support. + ApiKey pulumi.StringOutput `pulumi:"apiKey"` + // Specifies the Bot Defense API application ID, enter the value provided by F5 Support + ApplicationId pulumi.StringOutput `pulumi:"applicationId"` + // Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + DefaultsFrom pulumi.StringPtrOutput `pulumi:"defaultsFrom"` + // Specifies descriptive text that identifies the BD profile. + Description pulumi.StringOutput `pulumi:"description"` + // Unique name for the Distributed Cloud Services Bot Defense profile + Name pulumi.StringOutput `pulumi:"name"` + // Use these settings to configure which pages on the website will be protected by BD + ProtectedEndpoints SaasBotDefenseProfileProtectedEndpointArrayOutput `pulumi:"protectedEndpoints"` + // Specifies the web hostname to which API requests are made + ShapeProtectionPool pulumi.StringOutput `pulumi:"shapeProtectionPool"` + // Specifies a server-side SSL profile that is different from what the application pool uses + SslProfile pulumi.StringOutput `pulumi:"sslProfile"` + // Specifies the tenant ID, enter the value provided by F5 Support + TenantId pulumi.StringOutput `pulumi:"tenantId"` +} + +// NewSaasBotDefenseProfile registers a new resource with the given unique name, arguments, and options. +func NewSaasBotDefenseProfile(ctx *pulumi.Context, + name string, args *SaasBotDefenseProfileArgs, opts ...pulumi.ResourceOption) (*SaasBotDefenseProfile, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ApiKey == nil { + return nil, errors.New("invalid value for required argument 'ApiKey'") + } + if args.ApplicationId == nil { + return nil, errors.New("invalid value for required argument 'ApplicationId'") + } + if args.Name == nil { + return nil, errors.New("invalid value for required argument 'Name'") + } + if args.ProtectedEndpoints == nil { + return nil, errors.New("invalid value for required argument 'ProtectedEndpoints'") + } + if args.ShapeProtectionPool == nil { + return nil, errors.New("invalid value for required argument 'ShapeProtectionPool'") + } + if args.SslProfile == nil { + return nil, errors.New("invalid value for required argument 'SslProfile'") + } + if args.TenantId == nil { + return nil, errors.New("invalid value for required argument 'TenantId'") + } + if args.ApiKey != nil { + args.ApiKey = pulumi.ToSecret(args.ApiKey).(pulumi.StringInput) + } + if args.ApplicationId != nil { + args.ApplicationId = pulumi.ToSecret(args.ApplicationId).(pulumi.StringInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "apiKey", + "applicationId", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource SaasBotDefenseProfile + err := ctx.RegisterResource("f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSaasBotDefenseProfile gets an existing SaasBotDefenseProfile 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 GetSaasBotDefenseProfile(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SaasBotDefenseProfileState, opts ...pulumi.ResourceOption) (*SaasBotDefenseProfile, error) { + var resource SaasBotDefenseProfile + err := ctx.ReadResource("f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SaasBotDefenseProfile resources. +type saasBotDefenseProfileState struct { + // Specifies the API key, enter the value provided by F5 Support. + ApiKey *string `pulumi:"apiKey"` + // Specifies the Bot Defense API application ID, enter the value provided by F5 Support + ApplicationId *string `pulumi:"applicationId"` + // Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + DefaultsFrom *string `pulumi:"defaultsFrom"` + // Specifies descriptive text that identifies the BD profile. + Description *string `pulumi:"description"` + // Unique name for the Distributed Cloud Services Bot Defense profile + Name *string `pulumi:"name"` + // Use these settings to configure which pages on the website will be protected by BD + ProtectedEndpoints []SaasBotDefenseProfileProtectedEndpoint `pulumi:"protectedEndpoints"` + // Specifies the web hostname to which API requests are made + ShapeProtectionPool *string `pulumi:"shapeProtectionPool"` + // Specifies a server-side SSL profile that is different from what the application pool uses + SslProfile *string `pulumi:"sslProfile"` + // Specifies the tenant ID, enter the value provided by F5 Support + TenantId *string `pulumi:"tenantId"` +} + +type SaasBotDefenseProfileState struct { + // Specifies the API key, enter the value provided by F5 Support. + ApiKey pulumi.StringPtrInput + // Specifies the Bot Defense API application ID, enter the value provided by F5 Support + ApplicationId pulumi.StringPtrInput + // Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + DefaultsFrom pulumi.StringPtrInput + // Specifies descriptive text that identifies the BD profile. + Description pulumi.StringPtrInput + // Unique name for the Distributed Cloud Services Bot Defense profile + Name pulumi.StringPtrInput + // Use these settings to configure which pages on the website will be protected by BD + ProtectedEndpoints SaasBotDefenseProfileProtectedEndpointArrayInput + // Specifies the web hostname to which API requests are made + ShapeProtectionPool pulumi.StringPtrInput + // Specifies a server-side SSL profile that is different from what the application pool uses + SslProfile pulumi.StringPtrInput + // Specifies the tenant ID, enter the value provided by F5 Support + TenantId pulumi.StringPtrInput +} + +func (SaasBotDefenseProfileState) ElementType() reflect.Type { + return reflect.TypeOf((*saasBotDefenseProfileState)(nil)).Elem() +} + +type saasBotDefenseProfileArgs struct { + // Specifies the API key, enter the value provided by F5 Support. + ApiKey string `pulumi:"apiKey"` + // Specifies the Bot Defense API application ID, enter the value provided by F5 Support + ApplicationId string `pulumi:"applicationId"` + // Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + DefaultsFrom *string `pulumi:"defaultsFrom"` + // Specifies descriptive text that identifies the BD profile. + Description *string `pulumi:"description"` + // Unique name for the Distributed Cloud Services Bot Defense profile + Name string `pulumi:"name"` + // Use these settings to configure which pages on the website will be protected by BD + ProtectedEndpoints []SaasBotDefenseProfileProtectedEndpoint `pulumi:"protectedEndpoints"` + // Specifies the web hostname to which API requests are made + ShapeProtectionPool string `pulumi:"shapeProtectionPool"` + // Specifies a server-side SSL profile that is different from what the application pool uses + SslProfile string `pulumi:"sslProfile"` + // Specifies the tenant ID, enter the value provided by F5 Support + TenantId string `pulumi:"tenantId"` +} + +// The set of arguments for constructing a SaasBotDefenseProfile resource. +type SaasBotDefenseProfileArgs struct { + // Specifies the API key, enter the value provided by F5 Support. + ApiKey pulumi.StringInput + // Specifies the Bot Defense API application ID, enter the value provided by F5 Support + ApplicationId pulumi.StringInput + // Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + DefaultsFrom pulumi.StringPtrInput + // Specifies descriptive text that identifies the BD profile. + Description pulumi.StringPtrInput + // Unique name for the Distributed Cloud Services Bot Defense profile + Name pulumi.StringInput + // Use these settings to configure which pages on the website will be protected by BD + ProtectedEndpoints SaasBotDefenseProfileProtectedEndpointArrayInput + // Specifies the web hostname to which API requests are made + ShapeProtectionPool pulumi.StringInput + // Specifies a server-side SSL profile that is different from what the application pool uses + SslProfile pulumi.StringInput + // Specifies the tenant ID, enter the value provided by F5 Support + TenantId pulumi.StringInput +} + +func (SaasBotDefenseProfileArgs) ElementType() reflect.Type { + return reflect.TypeOf((*saasBotDefenseProfileArgs)(nil)).Elem() +} + +type SaasBotDefenseProfileInput interface { + pulumi.Input + + ToSaasBotDefenseProfileOutput() SaasBotDefenseProfileOutput + ToSaasBotDefenseProfileOutputWithContext(ctx context.Context) SaasBotDefenseProfileOutput +} + +func (*SaasBotDefenseProfile) ElementType() reflect.Type { + return reflect.TypeOf((**SaasBotDefenseProfile)(nil)).Elem() +} + +func (i *SaasBotDefenseProfile) ToSaasBotDefenseProfileOutput() SaasBotDefenseProfileOutput { + return i.ToSaasBotDefenseProfileOutputWithContext(context.Background()) +} + +func (i *SaasBotDefenseProfile) ToSaasBotDefenseProfileOutputWithContext(ctx context.Context) SaasBotDefenseProfileOutput { + return pulumi.ToOutputWithContext(ctx, i).(SaasBotDefenseProfileOutput) +} + +// SaasBotDefenseProfileArrayInput is an input type that accepts SaasBotDefenseProfileArray and SaasBotDefenseProfileArrayOutput values. +// You can construct a concrete instance of `SaasBotDefenseProfileArrayInput` via: +// +// SaasBotDefenseProfileArray{ SaasBotDefenseProfileArgs{...} } +type SaasBotDefenseProfileArrayInput interface { + pulumi.Input + + ToSaasBotDefenseProfileArrayOutput() SaasBotDefenseProfileArrayOutput + ToSaasBotDefenseProfileArrayOutputWithContext(context.Context) SaasBotDefenseProfileArrayOutput +} + +type SaasBotDefenseProfileArray []SaasBotDefenseProfileInput + +func (SaasBotDefenseProfileArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SaasBotDefenseProfile)(nil)).Elem() +} + +func (i SaasBotDefenseProfileArray) ToSaasBotDefenseProfileArrayOutput() SaasBotDefenseProfileArrayOutput { + return i.ToSaasBotDefenseProfileArrayOutputWithContext(context.Background()) +} + +func (i SaasBotDefenseProfileArray) ToSaasBotDefenseProfileArrayOutputWithContext(ctx context.Context) SaasBotDefenseProfileArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SaasBotDefenseProfileArrayOutput) +} + +// SaasBotDefenseProfileMapInput is an input type that accepts SaasBotDefenseProfileMap and SaasBotDefenseProfileMapOutput values. +// You can construct a concrete instance of `SaasBotDefenseProfileMapInput` via: +// +// SaasBotDefenseProfileMap{ "key": SaasBotDefenseProfileArgs{...} } +type SaasBotDefenseProfileMapInput interface { + pulumi.Input + + ToSaasBotDefenseProfileMapOutput() SaasBotDefenseProfileMapOutput + ToSaasBotDefenseProfileMapOutputWithContext(context.Context) SaasBotDefenseProfileMapOutput +} + +type SaasBotDefenseProfileMap map[string]SaasBotDefenseProfileInput + +func (SaasBotDefenseProfileMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SaasBotDefenseProfile)(nil)).Elem() +} + +func (i SaasBotDefenseProfileMap) ToSaasBotDefenseProfileMapOutput() SaasBotDefenseProfileMapOutput { + return i.ToSaasBotDefenseProfileMapOutputWithContext(context.Background()) +} + +func (i SaasBotDefenseProfileMap) ToSaasBotDefenseProfileMapOutputWithContext(ctx context.Context) SaasBotDefenseProfileMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SaasBotDefenseProfileMapOutput) +} + +type SaasBotDefenseProfileOutput struct{ *pulumi.OutputState } + +func (SaasBotDefenseProfileOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SaasBotDefenseProfile)(nil)).Elem() +} + +func (o SaasBotDefenseProfileOutput) ToSaasBotDefenseProfileOutput() SaasBotDefenseProfileOutput { + return o +} + +func (o SaasBotDefenseProfileOutput) ToSaasBotDefenseProfileOutputWithContext(ctx context.Context) SaasBotDefenseProfileOutput { + return o +} + +// Specifies the API key, enter the value provided by F5 Support. +func (o SaasBotDefenseProfileOutput) ApiKey() pulumi.StringOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringOutput { return v.ApiKey }).(pulumi.StringOutput) +} + +// Specifies the Bot Defense API application ID, enter the value provided by F5 Support +func (o SaasBotDefenseProfileOutput) ApplicationId() pulumi.StringOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringOutput { return v.ApplicationId }).(pulumi.StringOutput) +} + +// Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. +func (o SaasBotDefenseProfileOutput) DefaultsFrom() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringPtrOutput { return v.DefaultsFrom }).(pulumi.StringPtrOutput) +} + +// Specifies descriptive text that identifies the BD profile. +func (o SaasBotDefenseProfileOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// Unique name for the Distributed Cloud Services Bot Defense profile +func (o SaasBotDefenseProfileOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Use these settings to configure which pages on the website will be protected by BD +func (o SaasBotDefenseProfileOutput) ProtectedEndpoints() SaasBotDefenseProfileProtectedEndpointArrayOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) SaasBotDefenseProfileProtectedEndpointArrayOutput { + return v.ProtectedEndpoints + }).(SaasBotDefenseProfileProtectedEndpointArrayOutput) +} + +// Specifies the web hostname to which API requests are made +func (o SaasBotDefenseProfileOutput) ShapeProtectionPool() pulumi.StringOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringOutput { return v.ShapeProtectionPool }).(pulumi.StringOutput) +} + +// Specifies a server-side SSL profile that is different from what the application pool uses +func (o SaasBotDefenseProfileOutput) SslProfile() pulumi.StringOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringOutput { return v.SslProfile }).(pulumi.StringOutput) +} + +// Specifies the tenant ID, enter the value provided by F5 Support +func (o SaasBotDefenseProfileOutput) TenantId() pulumi.StringOutput { + return o.ApplyT(func(v *SaasBotDefenseProfile) pulumi.StringOutput { return v.TenantId }).(pulumi.StringOutput) +} + +type SaasBotDefenseProfileArrayOutput struct{ *pulumi.OutputState } + +func (SaasBotDefenseProfileArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SaasBotDefenseProfile)(nil)).Elem() +} + +func (o SaasBotDefenseProfileArrayOutput) ToSaasBotDefenseProfileArrayOutput() SaasBotDefenseProfileArrayOutput { + return o +} + +func (o SaasBotDefenseProfileArrayOutput) ToSaasBotDefenseProfileArrayOutputWithContext(ctx context.Context) SaasBotDefenseProfileArrayOutput { + return o +} + +func (o SaasBotDefenseProfileArrayOutput) Index(i pulumi.IntInput) SaasBotDefenseProfileOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SaasBotDefenseProfile { + return vs[0].([]*SaasBotDefenseProfile)[vs[1].(int)] + }).(SaasBotDefenseProfileOutput) +} + +type SaasBotDefenseProfileMapOutput struct{ *pulumi.OutputState } + +func (SaasBotDefenseProfileMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SaasBotDefenseProfile)(nil)).Elem() +} + +func (o SaasBotDefenseProfileMapOutput) ToSaasBotDefenseProfileMapOutput() SaasBotDefenseProfileMapOutput { + return o +} + +func (o SaasBotDefenseProfileMapOutput) ToSaasBotDefenseProfileMapOutputWithContext(ctx context.Context) SaasBotDefenseProfileMapOutput { + return o +} + +func (o SaasBotDefenseProfileMapOutput) MapIndex(k pulumi.StringInput) SaasBotDefenseProfileOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SaasBotDefenseProfile { + return vs[0].(map[string]*SaasBotDefenseProfile)[vs[1].(string)] + }).(SaasBotDefenseProfileOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SaasBotDefenseProfileInput)(nil)).Elem(), &SaasBotDefenseProfile{}) + pulumi.RegisterInputType(reflect.TypeOf((*SaasBotDefenseProfileArrayInput)(nil)).Elem(), SaasBotDefenseProfileArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SaasBotDefenseProfileMapInput)(nil)).Elem(), SaasBotDefenseProfileMap{}) + pulumi.RegisterOutputType(SaasBotDefenseProfileOutput{}) + pulumi.RegisterOutputType(SaasBotDefenseProfileArrayOutput{}) + pulumi.RegisterOutputType(SaasBotDefenseProfileMapOutput{}) +} diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/As3.java b/sdk/java/src/main/java/com/pulumi/f5bigip/As3.java index 22a33d13..dbd4a8dc 100644 --- a/sdk/java/src/main/java/com/pulumi/f5bigip/As3.java +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/As3.java @@ -12,6 +12,7 @@ import com.pulumi.f5bigip.inputs.As3State; import java.lang.Boolean; import java.lang.String; +import java.util.Map; import java.util.Optional; import javax.annotation.Nullable; @@ -407,6 +408,20 @@ public Output applicationList() { public Output> as3Json() { return Codegen.optional(this.as3Json); } + /** + * A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + */ + @Export(name="controls", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> controls; + + /** + * @return A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + */ + public Output>> controls() { + return Codegen.optional(this.controls); + } /** * Set True if you want to ignore metadata changes during update. By default it is set to false * diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/As3Args.java b/sdk/java/src/main/java/com/pulumi/f5bigip/As3Args.java index b2e85296..8381d2a8 100644 --- a/sdk/java/src/main/java/com/pulumi/f5bigip/As3Args.java +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/As3Args.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import java.lang.Boolean; import java.lang.String; +import java.util.Map; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -46,6 +47,21 @@ public Optional> as3Json() { return Optional.ofNullable(this.as3Json); } + /** + * A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + */ + @Import(name="controls") + private @Nullable Output> controls; + + /** + * @return A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + */ + public Optional>> controls() { + return Optional.ofNullable(this.controls); + } + /** * Set True if you want to ignore metadata changes during update. By default it is set to false * @@ -136,6 +152,7 @@ private As3Args() {} private As3Args(As3Args $) { this.applicationList = $.applicationList; this.as3Json = $.as3Json; + this.controls = $.controls; this.ignoreMetadata = $.ignoreMetadata; this.taskId = $.taskId; this.tenantFilter = $.tenantFilter; @@ -203,6 +220,27 @@ public Builder as3Json(String as3Json) { return as3Json(Output.of(as3Json)); } + /** + * @param controls A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + * @return builder + * + */ + public Builder controls(@Nullable Output> controls) { + $.controls = controls; + return this; + } + + /** + * @param controls A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + * @return builder + * + */ + public Builder controls(Map controls) { + return controls(Output.of(controls)); + } + /** * @param ignoreMetadata Set True if you want to ignore metadata changes during update. By default it is set to false * diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/SaasBotDefenseProfile.java b/sdk/java/src/main/java/com/pulumi/f5bigip/SaasBotDefenseProfile.java new file mode 100644 index 00000000..de159eab --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/SaasBotDefenseProfile.java @@ -0,0 +1,207 @@ +// *** 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.f5bigip; + +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.f5bigip.SaasBotDefenseProfileArgs; +import com.pulumi.f5bigip.Utilities; +import com.pulumi.f5bigip.inputs.SaasBotDefenseProfileState; +import com.pulumi.f5bigip.outputs.SaasBotDefenseProfileProtectedEndpoint; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile") +public class SaasBotDefenseProfile extends com.pulumi.resources.CustomResource { + /** + * Specifies the API key, enter the value provided by F5 Support. + * + */ + @Export(name="apiKey", refs={String.class}, tree="[0]") + private Output apiKey; + + /** + * @return Specifies the API key, enter the value provided by F5 Support. + * + */ + public Output apiKey() { + return this.apiKey; + } + /** + * Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + */ + @Export(name="applicationId", refs={String.class}, tree="[0]") + private Output applicationId; + + /** + * @return Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + */ + public Output applicationId() { + return this.applicationId; + } + /** + * Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + */ + @Export(name="defaultsFrom", refs={String.class}, tree="[0]") + private Output defaultsFrom; + + /** + * @return Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + */ + public Output> defaultsFrom() { + return Codegen.optional(this.defaultsFrom); + } + /** + * Specifies descriptive text that identifies the BD profile. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return Specifies descriptive text that identifies the BD profile. + * + */ + public Output description() { + return this.description; + } + /** + * Unique name for the Distributed Cloud Services Bot Defense profile + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return Unique name for the Distributed Cloud Services Bot Defense profile + * + */ + public Output name() { + return this.name; + } + /** + * Use these settings to configure which pages on the website will be protected by BD + * + */ + @Export(name="protectedEndpoints", refs={List.class,SaasBotDefenseProfileProtectedEndpoint.class}, tree="[0,1]") + private Output> protectedEndpoints; + + /** + * @return Use these settings to configure which pages on the website will be protected by BD + * + */ + public Output> protectedEndpoints() { + return this.protectedEndpoints; + } + /** + * Specifies the web hostname to which API requests are made + * + */ + @Export(name="shapeProtectionPool", refs={String.class}, tree="[0]") + private Output shapeProtectionPool; + + /** + * @return Specifies the web hostname to which API requests are made + * + */ + public Output shapeProtectionPool() { + return this.shapeProtectionPool; + } + /** + * Specifies a server-side SSL profile that is different from what the application pool uses + * + */ + @Export(name="sslProfile", refs={String.class}, tree="[0]") + private Output sslProfile; + + /** + * @return Specifies a server-side SSL profile that is different from what the application pool uses + * + */ + public Output sslProfile() { + return this.sslProfile; + } + /** + * Specifies the tenant ID, enter the value provided by F5 Support + * + */ + @Export(name="tenantId", refs={String.class}, tree="[0]") + private Output tenantId; + + /** + * @return Specifies the tenant ID, enter the value provided by F5 Support + * + */ + public Output tenantId() { + return this.tenantId; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public SaasBotDefenseProfile(java.lang.String name) { + this(name, SaasBotDefenseProfileArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public SaasBotDefenseProfile(java.lang.String name, SaasBotDefenseProfileArgs 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 SaasBotDefenseProfile(java.lang.String name, SaasBotDefenseProfileArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private SaasBotDefenseProfile(java.lang.String name, Output id, @Nullable SaasBotDefenseProfileState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile", name, state, makeResourceOptions(options, id), false); + } + + private static SaasBotDefenseProfileArgs makeArgs(SaasBotDefenseProfileArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? SaasBotDefenseProfileArgs.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()) + .additionalSecretOutputs(List.of( + "apiKey", + "applicationId" + )) + .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 SaasBotDefenseProfile get(java.lang.String name, Output id, @Nullable SaasBotDefenseProfileState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new SaasBotDefenseProfile(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/SaasBotDefenseProfileArgs.java b/sdk/java/src/main/java/com/pulumi/f5bigip/SaasBotDefenseProfileArgs.java new file mode 100644 index 00000000..f6e0b0fa --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/SaasBotDefenseProfileArgs.java @@ -0,0 +1,413 @@ +// *** 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.f5bigip; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.f5bigip.inputs.SaasBotDefenseProfileProtectedEndpointArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SaasBotDefenseProfileArgs extends com.pulumi.resources.ResourceArgs { + + public static final SaasBotDefenseProfileArgs Empty = new SaasBotDefenseProfileArgs(); + + /** + * Specifies the API key, enter the value provided by F5 Support. + * + */ + @Import(name="apiKey", required=true) + private Output apiKey; + + /** + * @return Specifies the API key, enter the value provided by F5 Support. + * + */ + public Output apiKey() { + return this.apiKey; + } + + /** + * Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + */ + @Import(name="applicationId", required=true) + private Output applicationId; + + /** + * @return Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + */ + public Output applicationId() { + return this.applicationId; + } + + /** + * Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + */ + @Import(name="defaultsFrom") + private @Nullable Output defaultsFrom; + + /** + * @return Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + */ + public Optional> defaultsFrom() { + return Optional.ofNullable(this.defaultsFrom); + } + + /** + * Specifies descriptive text that identifies the BD profile. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Specifies descriptive text that identifies the BD profile. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Unique name for the Distributed Cloud Services Bot Defense profile + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return Unique name for the Distributed Cloud Services Bot Defense profile + * + */ + public Output name() { + return this.name; + } + + /** + * Use these settings to configure which pages on the website will be protected by BD + * + */ + @Import(name="protectedEndpoints", required=true) + private Output> protectedEndpoints; + + /** + * @return Use these settings to configure which pages on the website will be protected by BD + * + */ + public Output> protectedEndpoints() { + return this.protectedEndpoints; + } + + /** + * Specifies the web hostname to which API requests are made + * + */ + @Import(name="shapeProtectionPool", required=true) + private Output shapeProtectionPool; + + /** + * @return Specifies the web hostname to which API requests are made + * + */ + public Output shapeProtectionPool() { + return this.shapeProtectionPool; + } + + /** + * Specifies a server-side SSL profile that is different from what the application pool uses + * + */ + @Import(name="sslProfile", required=true) + private Output sslProfile; + + /** + * @return Specifies a server-side SSL profile that is different from what the application pool uses + * + */ + public Output sslProfile() { + return this.sslProfile; + } + + /** + * Specifies the tenant ID, enter the value provided by F5 Support + * + */ + @Import(name="tenantId", required=true) + private Output tenantId; + + /** + * @return Specifies the tenant ID, enter the value provided by F5 Support + * + */ + public Output tenantId() { + return this.tenantId; + } + + private SaasBotDefenseProfileArgs() {} + + private SaasBotDefenseProfileArgs(SaasBotDefenseProfileArgs $) { + this.apiKey = $.apiKey; + this.applicationId = $.applicationId; + this.defaultsFrom = $.defaultsFrom; + this.description = $.description; + this.name = $.name; + this.protectedEndpoints = $.protectedEndpoints; + this.shapeProtectionPool = $.shapeProtectionPool; + this.sslProfile = $.sslProfile; + this.tenantId = $.tenantId; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SaasBotDefenseProfileArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SaasBotDefenseProfileArgs $; + + public Builder() { + $ = new SaasBotDefenseProfileArgs(); + } + + public Builder(SaasBotDefenseProfileArgs defaults) { + $ = new SaasBotDefenseProfileArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param apiKey Specifies the API key, enter the value provided by F5 Support. + * + * @return builder + * + */ + public Builder apiKey(Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey Specifies the API key, enter the value provided by F5 Support. + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param applicationId Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder applicationId(Output applicationId) { + $.applicationId = applicationId; + return this; + } + + /** + * @param applicationId Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder applicationId(String applicationId) { + return applicationId(Output.of(applicationId)); + } + + /** + * @param defaultsFrom Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + * @return builder + * + */ + public Builder defaultsFrom(@Nullable Output defaultsFrom) { + $.defaultsFrom = defaultsFrom; + return this; + } + + /** + * @param defaultsFrom Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + * @return builder + * + */ + public Builder defaultsFrom(String defaultsFrom) { + return defaultsFrom(Output.of(defaultsFrom)); + } + + /** + * @param description Specifies descriptive text that identifies the BD profile. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Specifies descriptive text that identifies the BD profile. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param name Unique name for the Distributed Cloud Services Bot Defense profile + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name Unique name for the Distributed Cloud Services Bot Defense profile + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param protectedEndpoints Use these settings to configure which pages on the website will be protected by BD + * + * @return builder + * + */ + public Builder protectedEndpoints(Output> protectedEndpoints) { + $.protectedEndpoints = protectedEndpoints; + return this; + } + + /** + * @param protectedEndpoints Use these settings to configure which pages on the website will be protected by BD + * + * @return builder + * + */ + public Builder protectedEndpoints(List protectedEndpoints) { + return protectedEndpoints(Output.of(protectedEndpoints)); + } + + /** + * @param protectedEndpoints Use these settings to configure which pages on the website will be protected by BD + * + * @return builder + * + */ + public Builder protectedEndpoints(SaasBotDefenseProfileProtectedEndpointArgs... protectedEndpoints) { + return protectedEndpoints(List.of(protectedEndpoints)); + } + + /** + * @param shapeProtectionPool Specifies the web hostname to which API requests are made + * + * @return builder + * + */ + public Builder shapeProtectionPool(Output shapeProtectionPool) { + $.shapeProtectionPool = shapeProtectionPool; + return this; + } + + /** + * @param shapeProtectionPool Specifies the web hostname to which API requests are made + * + * @return builder + * + */ + public Builder shapeProtectionPool(String shapeProtectionPool) { + return shapeProtectionPool(Output.of(shapeProtectionPool)); + } + + /** + * @param sslProfile Specifies a server-side SSL profile that is different from what the application pool uses + * + * @return builder + * + */ + public Builder sslProfile(Output sslProfile) { + $.sslProfile = sslProfile; + return this; + } + + /** + * @param sslProfile Specifies a server-side SSL profile that is different from what the application pool uses + * + * @return builder + * + */ + public Builder sslProfile(String sslProfile) { + return sslProfile(Output.of(sslProfile)); + } + + /** + * @param tenantId Specifies the tenant ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder tenantId(Output tenantId) { + $.tenantId = tenantId; + return this; + } + + /** + * @param tenantId Specifies the tenant ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder tenantId(String tenantId) { + return tenantId(Output.of(tenantId)); + } + + public SaasBotDefenseProfileArgs build() { + if ($.apiKey == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileArgs", "apiKey"); + } + if ($.applicationId == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileArgs", "applicationId"); + } + if ($.name == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileArgs", "name"); + } + if ($.protectedEndpoints == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileArgs", "protectedEndpoints"); + } + if ($.shapeProtectionPool == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileArgs", "shapeProtectionPool"); + } + if ($.sslProfile == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileArgs", "sslProfile"); + } + if ($.tenantId == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileArgs", "tenantId"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/As3State.java b/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/As3State.java index f5a44c9e..4f3c1503 100644 --- a/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/As3State.java +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/As3State.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import java.lang.Boolean; import java.lang.String; +import java.util.Map; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -46,6 +47,21 @@ public Optional> as3Json() { return Optional.ofNullable(this.as3Json); } + /** + * A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + */ + @Import(name="controls") + private @Nullable Output> controls; + + /** + * @return A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + */ + public Optional>> controls() { + return Optional.ofNullable(this.controls); + } + /** * Set True if you want to ignore metadata changes during update. By default it is set to false * @@ -151,6 +167,7 @@ private As3State() {} private As3State(As3State $) { this.applicationList = $.applicationList; this.as3Json = $.as3Json; + this.controls = $.controls; this.ignoreMetadata = $.ignoreMetadata; this.perAppMode = $.perAppMode; this.taskId = $.taskId; @@ -219,6 +236,27 @@ public Builder as3Json(String as3Json) { return as3Json(Output.of(as3Json)); } + /** + * @param controls A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + * @return builder + * + */ + public Builder controls(@Nullable Output> controls) { + $.controls = controls; + return this; + } + + /** + * @param controls A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + * + * @return builder + * + */ + public Builder controls(Map controls) { + return controls(Output.of(controls)); + } + /** * @param ignoreMetadata Set True if you want to ignore metadata changes during update. By default it is set to false * diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/SaasBotDefenseProfileProtectedEndpointArgs.java b/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/SaasBotDefenseProfileProtectedEndpointArgs.java new file mode 100644 index 00000000..4a37809f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/SaasBotDefenseProfileProtectedEndpointArgs.java @@ -0,0 +1,272 @@ +// *** 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.f5bigip.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 SaasBotDefenseProfileProtectedEndpointArgs extends com.pulumi.resources.ResourceArgs { + + public static final SaasBotDefenseProfileProtectedEndpointArgs Empty = new SaasBotDefenseProfileProtectedEndpointArgs(); + + /** + * Specifies the path to the web page to be protected by BD. For example, `/login`. + * + */ + @Import(name="endpoint") + private @Nullable Output endpoint; + + /** + * @return Specifies the path to the web page to be protected by BD. For example, `/login`. + * + */ + public Optional> endpoint() { + return Optional.ofNullable(this.endpoint); + } + + /** + * hostname or IP address of the web page to be protected by the Bot Defense + * + */ + @Import(name="host") + private @Nullable Output host; + + /** + * @return hostname or IP address of the web page to be protected by the Bot Defense + * + */ + public Optional> host() { + return Optional.ofNullable(this.host); + } + + /** + * Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + * + */ + @Import(name="mitigationAction") + private @Nullable Output mitigationAction; + + /** + * @return Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + * + */ + public Optional> mitigationAction() { + return Optional.ofNullable(this.mitigationAction); + } + + /** + * Unique name for the protected endpoint + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return Unique name for the protected endpoint + * + */ + public Output name() { + return this.name; + } + + /** + * POST field to protect the path when it has a POST method, `enabled` or `disabled` + * + */ + @Import(name="post") + private @Nullable Output post; + + /** + * @return POST field to protect the path when it has a POST method, `enabled` or `disabled` + * + */ + public Optional> post() { + return Optional.ofNullable(this.post); + } + + /** + * PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + * + */ + @Import(name="put") + private @Nullable Output put; + + /** + * @return PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + * + */ + public Optional> put() { + return Optional.ofNullable(this.put); + } + + private SaasBotDefenseProfileProtectedEndpointArgs() {} + + private SaasBotDefenseProfileProtectedEndpointArgs(SaasBotDefenseProfileProtectedEndpointArgs $) { + this.endpoint = $.endpoint; + this.host = $.host; + this.mitigationAction = $.mitigationAction; + this.name = $.name; + this.post = $.post; + this.put = $.put; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SaasBotDefenseProfileProtectedEndpointArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SaasBotDefenseProfileProtectedEndpointArgs $; + + public Builder() { + $ = new SaasBotDefenseProfileProtectedEndpointArgs(); + } + + public Builder(SaasBotDefenseProfileProtectedEndpointArgs defaults) { + $ = new SaasBotDefenseProfileProtectedEndpointArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param endpoint Specifies the path to the web page to be protected by BD. For example, `/login`. + * + * @return builder + * + */ + public Builder endpoint(@Nullable Output endpoint) { + $.endpoint = endpoint; + return this; + } + + /** + * @param endpoint Specifies the path to the web page to be protected by BD. For example, `/login`. + * + * @return builder + * + */ + public Builder endpoint(String endpoint) { + return endpoint(Output.of(endpoint)); + } + + /** + * @param host hostname or IP address of the web page to be protected by the Bot Defense + * + * @return builder + * + */ + public Builder host(@Nullable Output host) { + $.host = host; + return this; + } + + /** + * @param host hostname or IP address of the web page to be protected by the Bot Defense + * + * @return builder + * + */ + public Builder host(String host) { + return host(Output.of(host)); + } + + /** + * @param mitigationAction Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + * + * @return builder + * + */ + public Builder mitigationAction(@Nullable Output mitigationAction) { + $.mitigationAction = mitigationAction; + return this; + } + + /** + * @param mitigationAction Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + * + * @return builder + * + */ + public Builder mitigationAction(String mitigationAction) { + return mitigationAction(Output.of(mitigationAction)); + } + + /** + * @param name Unique name for the protected endpoint + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name Unique name for the protected endpoint + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param post POST field to protect the path when it has a POST method, `enabled` or `disabled` + * + * @return builder + * + */ + public Builder post(@Nullable Output post) { + $.post = post; + return this; + } + + /** + * @param post POST field to protect the path when it has a POST method, `enabled` or `disabled` + * + * @return builder + * + */ + public Builder post(String post) { + return post(Output.of(post)); + } + + /** + * @param put PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + * + * @return builder + * + */ + public Builder put(@Nullable Output put) { + $.put = put; + return this; + } + + /** + * @param put PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + * + * @return builder + * + */ + public Builder put(String put) { + return put(Output.of(put)); + } + + public SaasBotDefenseProfileProtectedEndpointArgs build() { + if ($.name == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileProtectedEndpointArgs", "name"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/SaasBotDefenseProfileState.java b/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/SaasBotDefenseProfileState.java new file mode 100644 index 00000000..65dd472b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/inputs/SaasBotDefenseProfileState.java @@ -0,0 +1,391 @@ +// *** 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.f5bigip.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.f5bigip.inputs.SaasBotDefenseProfileProtectedEndpointArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SaasBotDefenseProfileState extends com.pulumi.resources.ResourceArgs { + + public static final SaasBotDefenseProfileState Empty = new SaasBotDefenseProfileState(); + + /** + * Specifies the API key, enter the value provided by F5 Support. + * + */ + @Import(name="apiKey") + private @Nullable Output apiKey; + + /** + * @return Specifies the API key, enter the value provided by F5 Support. + * + */ + public Optional> apiKey() { + return Optional.ofNullable(this.apiKey); + } + + /** + * Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + */ + @Import(name="applicationId") + private @Nullable Output applicationId; + + /** + * @return Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + */ + public Optional> applicationId() { + return Optional.ofNullable(this.applicationId); + } + + /** + * Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + */ + @Import(name="defaultsFrom") + private @Nullable Output defaultsFrom; + + /** + * @return Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + */ + public Optional> defaultsFrom() { + return Optional.ofNullable(this.defaultsFrom); + } + + /** + * Specifies descriptive text that identifies the BD profile. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Specifies descriptive text that identifies the BD profile. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Unique name for the Distributed Cloud Services Bot Defense profile + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Unique name for the Distributed Cloud Services Bot Defense profile + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Use these settings to configure which pages on the website will be protected by BD + * + */ + @Import(name="protectedEndpoints") + private @Nullable Output> protectedEndpoints; + + /** + * @return Use these settings to configure which pages on the website will be protected by BD + * + */ + public Optional>> protectedEndpoints() { + return Optional.ofNullable(this.protectedEndpoints); + } + + /** + * Specifies the web hostname to which API requests are made + * + */ + @Import(name="shapeProtectionPool") + private @Nullable Output shapeProtectionPool; + + /** + * @return Specifies the web hostname to which API requests are made + * + */ + public Optional> shapeProtectionPool() { + return Optional.ofNullable(this.shapeProtectionPool); + } + + /** + * Specifies a server-side SSL profile that is different from what the application pool uses + * + */ + @Import(name="sslProfile") + private @Nullable Output sslProfile; + + /** + * @return Specifies a server-side SSL profile that is different from what the application pool uses + * + */ + public Optional> sslProfile() { + return Optional.ofNullable(this.sslProfile); + } + + /** + * Specifies the tenant ID, enter the value provided by F5 Support + * + */ + @Import(name="tenantId") + private @Nullable Output tenantId; + + /** + * @return Specifies the tenant ID, enter the value provided by F5 Support + * + */ + public Optional> tenantId() { + return Optional.ofNullable(this.tenantId); + } + + private SaasBotDefenseProfileState() {} + + private SaasBotDefenseProfileState(SaasBotDefenseProfileState $) { + this.apiKey = $.apiKey; + this.applicationId = $.applicationId; + this.defaultsFrom = $.defaultsFrom; + this.description = $.description; + this.name = $.name; + this.protectedEndpoints = $.protectedEndpoints; + this.shapeProtectionPool = $.shapeProtectionPool; + this.sslProfile = $.sslProfile; + this.tenantId = $.tenantId; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SaasBotDefenseProfileState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SaasBotDefenseProfileState $; + + public Builder() { + $ = new SaasBotDefenseProfileState(); + } + + public Builder(SaasBotDefenseProfileState defaults) { + $ = new SaasBotDefenseProfileState(Objects.requireNonNull(defaults)); + } + + /** + * @param apiKey Specifies the API key, enter the value provided by F5 Support. + * + * @return builder + * + */ + public Builder apiKey(@Nullable Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey Specifies the API key, enter the value provided by F5 Support. + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param applicationId Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder applicationId(@Nullable Output applicationId) { + $.applicationId = applicationId; + return this; + } + + /** + * @param applicationId Specifies the Bot Defense API application ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder applicationId(String applicationId) { + return applicationId(Output.of(applicationId)); + } + + /** + * @param defaultsFrom Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + * @return builder + * + */ + public Builder defaultsFrom(@Nullable Output defaultsFrom) { + $.defaultsFrom = defaultsFrom; + return this; + } + + /** + * @param defaultsFrom Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + * + * @return builder + * + */ + public Builder defaultsFrom(String defaultsFrom) { + return defaultsFrom(Output.of(defaultsFrom)); + } + + /** + * @param description Specifies descriptive text that identifies the BD profile. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Specifies descriptive text that identifies the BD profile. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param name Unique name for the Distributed Cloud Services Bot Defense profile + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Unique name for the Distributed Cloud Services Bot Defense profile + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param protectedEndpoints Use these settings to configure which pages on the website will be protected by BD + * + * @return builder + * + */ + public Builder protectedEndpoints(@Nullable Output> protectedEndpoints) { + $.protectedEndpoints = protectedEndpoints; + return this; + } + + /** + * @param protectedEndpoints Use these settings to configure which pages on the website will be protected by BD + * + * @return builder + * + */ + public Builder protectedEndpoints(List protectedEndpoints) { + return protectedEndpoints(Output.of(protectedEndpoints)); + } + + /** + * @param protectedEndpoints Use these settings to configure which pages on the website will be protected by BD + * + * @return builder + * + */ + public Builder protectedEndpoints(SaasBotDefenseProfileProtectedEndpointArgs... protectedEndpoints) { + return protectedEndpoints(List.of(protectedEndpoints)); + } + + /** + * @param shapeProtectionPool Specifies the web hostname to which API requests are made + * + * @return builder + * + */ + public Builder shapeProtectionPool(@Nullable Output shapeProtectionPool) { + $.shapeProtectionPool = shapeProtectionPool; + return this; + } + + /** + * @param shapeProtectionPool Specifies the web hostname to which API requests are made + * + * @return builder + * + */ + public Builder shapeProtectionPool(String shapeProtectionPool) { + return shapeProtectionPool(Output.of(shapeProtectionPool)); + } + + /** + * @param sslProfile Specifies a server-side SSL profile that is different from what the application pool uses + * + * @return builder + * + */ + public Builder sslProfile(@Nullable Output sslProfile) { + $.sslProfile = sslProfile; + return this; + } + + /** + * @param sslProfile Specifies a server-side SSL profile that is different from what the application pool uses + * + * @return builder + * + */ + public Builder sslProfile(String sslProfile) { + return sslProfile(Output.of(sslProfile)); + } + + /** + * @param tenantId Specifies the tenant ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder tenantId(@Nullable Output tenantId) { + $.tenantId = tenantId; + return this; + } + + /** + * @param tenantId Specifies the tenant ID, enter the value provided by F5 Support + * + * @return builder + * + */ + public Builder tenantId(String tenantId) { + return tenantId(Output.of(tenantId)); + } + + public SaasBotDefenseProfileState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/ltm/ProfileHttp.java b/sdk/java/src/main/java/com/pulumi/f5bigip/ltm/ProfileHttp.java index 7260a37b..8522525f 100644 --- a/sdk/java/src/main/java/com/pulumi/f5bigip/ltm/ProfileHttp.java +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/ltm/ProfileHttp.java @@ -194,14 +194,14 @@ public Output> enforcements() { * */ @Export(name="fallbackHost", refs={String.class}, tree="[0]") - private Output fallbackHost; + private Output fallbackHost; /** * @return Specifies an HTTP fallback host. HTTP redirection allows you to redirect HTTP traffic to another protocol identifier, host name, port number * */ - public Output fallbackHost() { - return this.fallbackHost; + public Output> fallbackHost() { + return Codegen.optional(this.fallbackHost); } /** * Specifies one or more three-digit status codes that can be returned by an HTTP server,that should trigger a redirection to the fallback host. diff --git a/sdk/java/src/main/java/com/pulumi/f5bigip/outputs/SaasBotDefenseProfileProtectedEndpoint.java b/sdk/java/src/main/java/com/pulumi/f5bigip/outputs/SaasBotDefenseProfileProtectedEndpoint.java new file mode 100644 index 00000000..4e957b19 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/f5bigip/outputs/SaasBotDefenseProfileProtectedEndpoint.java @@ -0,0 +1,165 @@ +// *** 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.f5bigip.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 SaasBotDefenseProfileProtectedEndpoint { + /** + * @return Specifies the path to the web page to be protected by BD. For example, `/login`. + * + */ + private @Nullable String endpoint; + /** + * @return hostname or IP address of the web page to be protected by the Bot Defense + * + */ + private @Nullable String host; + /** + * @return Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + * + */ + private @Nullable String mitigationAction; + /** + * @return Unique name for the protected endpoint + * + */ + private String name; + /** + * @return POST field to protect the path when it has a POST method, `enabled` or `disabled` + * + */ + private @Nullable String post; + /** + * @return PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + * + */ + private @Nullable String put; + + private SaasBotDefenseProfileProtectedEndpoint() {} + /** + * @return Specifies the path to the web page to be protected by BD. For example, `/login`. + * + */ + public Optional endpoint() { + return Optional.ofNullable(this.endpoint); + } + /** + * @return hostname or IP address of the web page to be protected by the Bot Defense + * + */ + public Optional host() { + return Optional.ofNullable(this.host); + } + /** + * @return Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + * + */ + public Optional mitigationAction() { + return Optional.ofNullable(this.mitigationAction); + } + /** + * @return Unique name for the protected endpoint + * + */ + public String name() { + return this.name; + } + /** + * @return POST field to protect the path when it has a POST method, `enabled` or `disabled` + * + */ + public Optional post() { + return Optional.ofNullable(this.post); + } + /** + * @return PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + * + */ + public Optional put() { + return Optional.ofNullable(this.put); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SaasBotDefenseProfileProtectedEndpoint defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String endpoint; + private @Nullable String host; + private @Nullable String mitigationAction; + private String name; + private @Nullable String post; + private @Nullable String put; + public Builder() {} + public Builder(SaasBotDefenseProfileProtectedEndpoint defaults) { + Objects.requireNonNull(defaults); + this.endpoint = defaults.endpoint; + this.host = defaults.host; + this.mitigationAction = defaults.mitigationAction; + this.name = defaults.name; + this.post = defaults.post; + this.put = defaults.put; + } + + @CustomType.Setter + public Builder endpoint(@Nullable String endpoint) { + + this.endpoint = endpoint; + return this; + } + @CustomType.Setter + public Builder host(@Nullable String host) { + + this.host = host; + return this; + } + @CustomType.Setter + public Builder mitigationAction(@Nullable String mitigationAction) { + + this.mitigationAction = mitigationAction; + return this; + } + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("SaasBotDefenseProfileProtectedEndpoint", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder post(@Nullable String post) { + + this.post = post; + return this; + } + @CustomType.Setter + public Builder put(@Nullable String put) { + + this.put = put; + return this; + } + public SaasBotDefenseProfileProtectedEndpoint build() { + final var _resultValue = new SaasBotDefenseProfileProtectedEndpoint(); + _resultValue.endpoint = endpoint; + _resultValue.host = host; + _resultValue.mitigationAction = mitigationAction; + _resultValue.name = name; + _resultValue.post = post; + _resultValue.put = put; + return _resultValue; + } + } +} diff --git a/sdk/nodejs/as3.ts b/sdk/nodejs/as3.ts index 9589ca75..728068cb 100644 --- a/sdk/nodejs/as3.ts +++ b/sdk/nodejs/as3.ts @@ -401,6 +401,10 @@ export class As3 extends pulumi.CustomResource { * Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function */ public readonly as3Json!: pulumi.Output; + /** + * A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + */ + public readonly controls!: pulumi.Output<{[key: string]: string} | undefined>; /** * Set True if you want to ignore metadata changes during update. By default it is set to false * @@ -619,6 +623,7 @@ export class As3 extends pulumi.CustomResource { const state = argsOrState as As3State | undefined; resourceInputs["applicationList"] = state ? state.applicationList : undefined; resourceInputs["as3Json"] = state ? state.as3Json : undefined; + resourceInputs["controls"] = state ? state.controls : undefined; resourceInputs["ignoreMetadata"] = state ? state.ignoreMetadata : undefined; resourceInputs["perAppMode"] = state ? state.perAppMode : undefined; resourceInputs["taskId"] = state ? state.taskId : undefined; @@ -629,6 +634,7 @@ export class As3 extends pulumi.CustomResource { const args = argsOrState as As3Args | undefined; resourceInputs["applicationList"] = args ? args.applicationList : undefined; resourceInputs["as3Json"] = args ? args.as3Json : undefined; + resourceInputs["controls"] = args ? args.controls : undefined; resourceInputs["ignoreMetadata"] = args ? args.ignoreMetadata : undefined; resourceInputs["taskId"] = args ? args.taskId : undefined; resourceInputs["tenantFilter"] = args ? args.tenantFilter : undefined; @@ -653,6 +659,10 @@ export interface As3State { * Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function */ as3Json?: pulumi.Input; + /** + * A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + */ + controls?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * Set True if you want to ignore metadata changes during update. By default it is set to false * @@ -869,6 +879,10 @@ export interface As3Args { * Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function */ as3Json?: pulumi.Input; + /** + * A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + */ + controls?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * Set True if you want to ignore metadata changes during update. By default it is set to false * diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index 180a347d..60bb3643 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -95,6 +95,11 @@ export type Provider = import("./provider").Provider; export const Provider: typeof import("./provider").Provider = null as any; utilities.lazyLoad(exports, ["Provider"], () => require("./provider")); +export { SaasBotDefenseProfileArgs, SaasBotDefenseProfileState } from "./saasBotDefenseProfile"; +export type SaasBotDefenseProfile = import("./saasBotDefenseProfile").SaasBotDefenseProfile; +export const SaasBotDefenseProfile: typeof import("./saasBotDefenseProfile").SaasBotDefenseProfile = null as any; +utilities.lazyLoad(exports, ["SaasBotDefenseProfile"], () => require("./saasBotDefenseProfile")); + export { SslKeyCertArgs, SslKeyCertState } from "./sslKeyCert"; export type SslKeyCert = import("./sslKeyCert").SslKeyCert; export const SslKeyCert: typeof import("./sslKeyCert").SslKeyCert = null as any; @@ -172,6 +177,8 @@ const _module = { return new NetTunnel(name, undefined, { urn }) case "f5bigip:index/partition:Partition": return new Partition(name, undefined, { urn }) + case "f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile": + return new SaasBotDefenseProfile(name, undefined, { urn }) case "f5bigip:index/sslKeyCert:SslKeyCert": return new SslKeyCert(name, undefined, { urn }) case "f5bigip:index/trafficSelector:TrafficSelector": @@ -200,6 +207,7 @@ pulumi.runtime.registerResourceModule("f5bigip", "index/ipsecProfile", _module) pulumi.runtime.registerResourceModule("f5bigip", "index/netIkePeer", _module) pulumi.runtime.registerResourceModule("f5bigip", "index/netTunnel", _module) pulumi.runtime.registerResourceModule("f5bigip", "index/partition", _module) +pulumi.runtime.registerResourceModule("f5bigip", "index/saasBotDefenseProfile", _module) pulumi.runtime.registerResourceModule("f5bigip", "index/sslKeyCert", _module) pulumi.runtime.registerResourceModule("f5bigip", "index/trafficSelector", _module) pulumi.runtime.registerResourceModule("f5bigip", "index/wafPolicy", _module) diff --git a/sdk/nodejs/ltm/profileHttp.ts b/sdk/nodejs/ltm/profileHttp.ts index 6997dac8..ea7502d6 100644 --- a/sdk/nodejs/ltm/profileHttp.ts +++ b/sdk/nodejs/ltm/profileHttp.ts @@ -102,7 +102,7 @@ export class ProfileHttp extends pulumi.CustomResource { /** * Specifies an HTTP fallback host. HTTP redirection allows you to redirect HTTP traffic to another protocol identifier, host name, port number */ - public readonly fallbackHost!: pulumi.Output; + public readonly fallbackHost!: pulumi.Output; /** * Specifies one or more three-digit status codes that can be returned by an HTTP server,that should trigger a redirection to the fallback host. */ diff --git a/sdk/nodejs/saasBotDefenseProfile.ts b/sdk/nodejs/saasBotDefenseProfile.ts new file mode 100644 index 00000000..4df237ce --- /dev/null +++ b/sdk/nodejs/saasBotDefenseProfile.ts @@ -0,0 +1,218 @@ +// *** 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"; + +export class SaasBotDefenseProfile extends pulumi.CustomResource { + /** + * Get an existing SaasBotDefenseProfile 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?: SaasBotDefenseProfileState, opts?: pulumi.CustomResourceOptions): SaasBotDefenseProfile { + return new SaasBotDefenseProfile(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile'; + + /** + * Returns true if the given object is an instance of SaasBotDefenseProfile. 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 SaasBotDefenseProfile { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === SaasBotDefenseProfile.__pulumiType; + } + + /** + * Specifies the API key, enter the value provided by F5 Support. + */ + public readonly apiKey!: pulumi.Output; + /** + * Specifies the Bot Defense API application ID, enter the value provided by F5 Support + */ + public readonly applicationId!: pulumi.Output; + /** + * Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + */ + public readonly defaultsFrom!: pulumi.Output; + /** + * Specifies descriptive text that identifies the BD profile. + */ + public readonly description!: pulumi.Output; + /** + * Unique name for the Distributed Cloud Services Bot Defense profile + */ + public readonly name!: pulumi.Output; + /** + * Use these settings to configure which pages on the website will be protected by BD + */ + public readonly protectedEndpoints!: pulumi.Output; + /** + * Specifies the web hostname to which API requests are made + */ + public readonly shapeProtectionPool!: pulumi.Output; + /** + * Specifies a server-side SSL profile that is different from what the application pool uses + */ + public readonly sslProfile!: pulumi.Output; + /** + * Specifies the tenant ID, enter the value provided by F5 Support + */ + public readonly tenantId!: pulumi.Output; + + /** + * Create a SaasBotDefenseProfile 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: SaasBotDefenseProfileArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: SaasBotDefenseProfileArgs | SaasBotDefenseProfileState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as SaasBotDefenseProfileState | undefined; + resourceInputs["apiKey"] = state ? state.apiKey : undefined; + resourceInputs["applicationId"] = state ? state.applicationId : undefined; + resourceInputs["defaultsFrom"] = state ? state.defaultsFrom : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["protectedEndpoints"] = state ? state.protectedEndpoints : undefined; + resourceInputs["shapeProtectionPool"] = state ? state.shapeProtectionPool : undefined; + resourceInputs["sslProfile"] = state ? state.sslProfile : undefined; + resourceInputs["tenantId"] = state ? state.tenantId : undefined; + } else { + const args = argsOrState as SaasBotDefenseProfileArgs | undefined; + if ((!args || args.apiKey === undefined) && !opts.urn) { + throw new Error("Missing required property 'apiKey'"); + } + if ((!args || args.applicationId === undefined) && !opts.urn) { + throw new Error("Missing required property 'applicationId'"); + } + if ((!args || args.name === undefined) && !opts.urn) { + throw new Error("Missing required property 'name'"); + } + if ((!args || args.protectedEndpoints === undefined) && !opts.urn) { + throw new Error("Missing required property 'protectedEndpoints'"); + } + if ((!args || args.shapeProtectionPool === undefined) && !opts.urn) { + throw new Error("Missing required property 'shapeProtectionPool'"); + } + if ((!args || args.sslProfile === undefined) && !opts.urn) { + throw new Error("Missing required property 'sslProfile'"); + } + if ((!args || args.tenantId === undefined) && !opts.urn) { + throw new Error("Missing required property 'tenantId'"); + } + resourceInputs["apiKey"] = args?.apiKey ? pulumi.secret(args.apiKey) : undefined; + resourceInputs["applicationId"] = args?.applicationId ? pulumi.secret(args.applicationId) : undefined; + resourceInputs["defaultsFrom"] = args ? args.defaultsFrom : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["protectedEndpoints"] = args ? args.protectedEndpoints : undefined; + resourceInputs["shapeProtectionPool"] = args ? args.shapeProtectionPool : undefined; + resourceInputs["sslProfile"] = args ? args.sslProfile : undefined; + resourceInputs["tenantId"] = args ? args.tenantId : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["apiKey", "applicationId"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(SaasBotDefenseProfile.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering SaasBotDefenseProfile resources. + */ +export interface SaasBotDefenseProfileState { + /** + * Specifies the API key, enter the value provided by F5 Support. + */ + apiKey?: pulumi.Input; + /** + * Specifies the Bot Defense API application ID, enter the value provided by F5 Support + */ + applicationId?: pulumi.Input; + /** + * Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + */ + defaultsFrom?: pulumi.Input; + /** + * Specifies descriptive text that identifies the BD profile. + */ + description?: pulumi.Input; + /** + * Unique name for the Distributed Cloud Services Bot Defense profile + */ + name?: pulumi.Input; + /** + * Use these settings to configure which pages on the website will be protected by BD + */ + protectedEndpoints?: pulumi.Input[]>; + /** + * Specifies the web hostname to which API requests are made + */ + shapeProtectionPool?: pulumi.Input; + /** + * Specifies a server-side SSL profile that is different from what the application pool uses + */ + sslProfile?: pulumi.Input; + /** + * Specifies the tenant ID, enter the value provided by F5 Support + */ + tenantId?: pulumi.Input; +} + +/** + * The set of arguments for constructing a SaasBotDefenseProfile resource. + */ +export interface SaasBotDefenseProfileArgs { + /** + * Specifies the API key, enter the value provided by F5 Support. + */ + apiKey: pulumi.Input; + /** + * Specifies the Bot Defense API application ID, enter the value provided by F5 Support + */ + applicationId: pulumi.Input; + /** + * Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + */ + defaultsFrom?: pulumi.Input; + /** + * Specifies descriptive text that identifies the BD profile. + */ + description?: pulumi.Input; + /** + * Unique name for the Distributed Cloud Services Bot Defense profile + */ + name: pulumi.Input; + /** + * Use these settings to configure which pages on the website will be protected by BD + */ + protectedEndpoints: pulumi.Input[]>; + /** + * Specifies the web hostname to which API requests are made + */ + shapeProtectionPool: pulumi.Input; + /** + * Specifies a server-side SSL profile that is different from what the application pool uses + */ + sslProfile: pulumi.Input; + /** + * Specifies the tenant ID, enter the value provided by F5 Support + */ + tenantId: pulumi.Input; +} diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 512bdf67..30a3f557 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -85,6 +85,7 @@ "netTunnel.ts", "partition.ts", "provider.ts", + "saasBotDefenseProfile.ts", "ssl/certificate.ts", "ssl/getCertificate.ts", "ssl/getVWanConfig.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index b57b8650..b3a03a89 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -268,6 +268,33 @@ export interface FastUdpAppVirtualServer { port: pulumi.Input; } +export interface SaasBotDefenseProfileProtectedEndpoint { + /** + * Specifies the path to the web page to be protected by BD. For example, `/login`. + */ + endpoint?: pulumi.Input; + /** + * hostname or IP address of the web page to be protected by the Bot Defense + */ + host?: pulumi.Input; + /** + * Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + */ + mitigationAction?: pulumi.Input; + /** + * Unique name for the protected endpoint + */ + name: pulumi.Input; + /** + * POST field to protect the path when it has a POST method, `enabled` or `disabled` + */ + post?: pulumi.Input; + /** + * PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + */ + put?: pulumi.Input; +} + export interface WafPolicyFileType { /** * Determines whether the file type is allowed or disallowed. In either of these cases the VIOL_FILETYPE violation is issued (if enabled) for an incoming request- diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 2a46d63e..e5e4bf54 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -268,6 +268,33 @@ export interface FastUdpAppVirtualServer { port: number; } +export interface SaasBotDefenseProfileProtectedEndpoint { + /** + * Specifies the path to the web page to be protected by BD. For example, `/login`. + */ + endpoint: string; + /** + * hostname or IP address of the web page to be protected by the Bot Defense + */ + host: string; + /** + * Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + */ + mitigationAction: string; + /** + * Unique name for the protected endpoint + */ + name: string; + /** + * POST field to protect the path when it has a POST method, `enabled` or `disabled` + */ + post: string; + /** + * PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + */ + put: string; +} + export interface WafPolicyFileType { /** * Determines whether the file type is allowed or disallowed. In either of these cases the VIOL_FILETYPE violation is issued (if enabled) for an incoming request- diff --git a/sdk/python/pulumi_f5bigip/__init__.py b/sdk/python/pulumi_f5bigip/__init__.py index 1ed9f635..c7ba4569 100644 --- a/sdk/python/pulumi_f5bigip/__init__.py +++ b/sdk/python/pulumi_f5bigip/__init__.py @@ -23,6 +23,7 @@ from .net_tunnel import * from .partition import * from .provider import * +from .saas_bot_defense_profile import * from .ssl_key_cert import * from .traffic_selector import * from .waf_policy import * @@ -212,6 +213,14 @@ "f5bigip:index/partition:Partition": "Partition" } }, + { + "pkg": "f5bigip", + "mod": "index/saasBotDefenseProfile", + "fqn": "pulumi_f5bigip", + "classes": { + "f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile": "SaasBotDefenseProfile" + } + }, { "pkg": "f5bigip", "mod": "index/sslKeyCert", diff --git a/sdk/python/pulumi_f5bigip/_inputs.py b/sdk/python/pulumi_f5bigip/_inputs.py index 184b5b00..36dd1c6c 100644 --- a/sdk/python/pulumi_f5bigip/_inputs.py +++ b/sdk/python/pulumi_f5bigip/_inputs.py @@ -49,6 +49,8 @@ 'FastUdpAppPoolMemberArgsDict', 'FastUdpAppVirtualServerArgs', 'FastUdpAppVirtualServerArgsDict', + 'SaasBotDefenseProfileProtectedEndpointArgs', + 'SaasBotDefenseProfileProtectedEndpointArgsDict', 'WafPolicyFileTypeArgs', 'WafPolicyFileTypeArgsDict', 'WafPolicyGraphqlProfileArgs', @@ -1313,6 +1315,137 @@ def port(self, value: pulumi.Input[int]): pulumi.set(self, "port", value) +if not MYPY: + class SaasBotDefenseProfileProtectedEndpointArgsDict(TypedDict): + name: pulumi.Input[str] + """ + Unique name for the protected endpoint + """ + endpoint: NotRequired[pulumi.Input[str]] + """ + Specifies the path to the web page to be protected by BD. For example, `/login`. + """ + host: NotRequired[pulumi.Input[str]] + """ + hostname or IP address of the web page to be protected by the Bot Defense + """ + mitigation_action: NotRequired[pulumi.Input[str]] + """ + Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + """ + post: NotRequired[pulumi.Input[str]] + """ + POST field to protect the path when it has a POST method, `enabled` or `disabled` + """ + put: NotRequired[pulumi.Input[str]] + """ + PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + """ +elif False: + SaasBotDefenseProfileProtectedEndpointArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class SaasBotDefenseProfileProtectedEndpointArgs: + def __init__(__self__, *, + name: pulumi.Input[str], + endpoint: Optional[pulumi.Input[str]] = None, + host: Optional[pulumi.Input[str]] = None, + mitigation_action: Optional[pulumi.Input[str]] = None, + post: Optional[pulumi.Input[str]] = None, + put: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] name: Unique name for the protected endpoint + :param pulumi.Input[str] endpoint: Specifies the path to the web page to be protected by BD. For example, `/login`. + :param pulumi.Input[str] host: hostname or IP address of the web page to be protected by the Bot Defense + :param pulumi.Input[str] mitigation_action: Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + :param pulumi.Input[str] post: POST field to protect the path when it has a POST method, `enabled` or `disabled` + :param pulumi.Input[str] put: PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + """ + pulumi.set(__self__, "name", name) + if endpoint is not None: + pulumi.set(__self__, "endpoint", endpoint) + if host is not None: + pulumi.set(__self__, "host", host) + if mitigation_action is not None: + pulumi.set(__self__, "mitigation_action", mitigation_action) + if post is not None: + pulumi.set(__self__, "post", post) + if put is not None: + pulumi.set(__self__, "put", put) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + Unique name for the protected endpoint + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def endpoint(self) -> Optional[pulumi.Input[str]]: + """ + Specifies the path to the web page to be protected by BD. For example, `/login`. + """ + return pulumi.get(self, "endpoint") + + @endpoint.setter + def endpoint(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "endpoint", value) + + @property + @pulumi.getter + def host(self) -> Optional[pulumi.Input[str]]: + """ + hostname or IP address of the web page to be protected by the Bot Defense + """ + return pulumi.get(self, "host") + + @host.setter + def host(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "host", value) + + @property + @pulumi.getter(name="mitigationAction") + def mitigation_action(self) -> Optional[pulumi.Input[str]]: + """ + Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + """ + return pulumi.get(self, "mitigation_action") + + @mitigation_action.setter + def mitigation_action(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "mitigation_action", value) + + @property + @pulumi.getter + def post(self) -> Optional[pulumi.Input[str]]: + """ + POST field to protect the path when it has a POST method, `enabled` or `disabled` + """ + return pulumi.get(self, "post") + + @post.setter + def post(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "post", value) + + @property + @pulumi.getter + def put(self) -> Optional[pulumi.Input[str]]: + """ + PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + """ + return pulumi.get(self, "put") + + @put.setter + def put(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "put", value) + + if not MYPY: class WafPolicyFileTypeArgsDict(TypedDict): allowed: NotRequired[pulumi.Input[bool]] diff --git a/sdk/python/pulumi_f5bigip/as3.py b/sdk/python/pulumi_f5bigip/as3.py index 52e95dae..4a5e81aa 100644 --- a/sdk/python/pulumi_f5bigip/as3.py +++ b/sdk/python/pulumi_f5bigip/as3.py @@ -21,6 +21,7 @@ class As3Args: def __init__(__self__, *, application_list: Optional[pulumi.Input[str]] = None, as3_json: Optional[pulumi.Input[str]] = None, + controls: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, ignore_metadata: Optional[pulumi.Input[bool]] = None, task_id: Optional[pulumi.Input[str]] = None, tenant_filter: Optional[pulumi.Input[str]] = None, @@ -30,6 +31,7 @@ def __init__(__self__, *, The set of arguments for constructing a As3 resource. :param pulumi.Input[str] application_list: List of applications currently deployed on the Big-Ip :param pulumi.Input[str] as3_json: Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] controls: A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. :param pulumi.Input[bool] ignore_metadata: Set True if you want to ignore metadata changes during update. By default it is set to false * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -218,6 +220,8 @@ def __init__(__self__, *, pulumi.set(__self__, "application_list", application_list) if as3_json is not None: pulumi.set(__self__, "as3_json", as3_json) + if controls is not None: + pulumi.set(__self__, "controls", controls) if ignore_metadata is not None: pulumi.set(__self__, "ignore_metadata", ignore_metadata) if task_id is not None: @@ -253,6 +257,18 @@ def as3_json(self) -> Optional[pulumi.Input[str]]: def as3_json(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "as3_json", value) + @property + @pulumi.getter + def controls(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + """ + return pulumi.get(self, "controls") + + @controls.setter + def controls(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "controls", value) + @property @pulumi.getter(name="ignoreMetadata") def ignore_metadata(self) -> Optional[pulumi.Input[bool]]: @@ -497,6 +513,7 @@ class _As3State: def __init__(__self__, *, application_list: Optional[pulumi.Input[str]] = None, as3_json: Optional[pulumi.Input[str]] = None, + controls: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, ignore_metadata: Optional[pulumi.Input[bool]] = None, per_app_mode: Optional[pulumi.Input[bool]] = None, task_id: Optional[pulumi.Input[str]] = None, @@ -507,6 +524,7 @@ def __init__(__self__, *, Input properties used for looking up and filtering As3 resources. :param pulumi.Input[str] application_list: List of applications currently deployed on the Big-Ip :param pulumi.Input[str] as3_json: Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] controls: A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. :param pulumi.Input[bool] ignore_metadata: Set True if you want to ignore metadata changes during update. By default it is set to false * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -696,6 +714,8 @@ def __init__(__self__, *, pulumi.set(__self__, "application_list", application_list) if as3_json is not None: pulumi.set(__self__, "as3_json", as3_json) + if controls is not None: + pulumi.set(__self__, "controls", controls) if ignore_metadata is not None: pulumi.set(__self__, "ignore_metadata", ignore_metadata) if per_app_mode is not None: @@ -733,6 +753,18 @@ def as3_json(self) -> Optional[pulumi.Input[str]]: def as3_json(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "as3_json", value) + @property + @pulumi.getter + def controls(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + """ + return pulumi.get(self, "controls") + + @controls.setter + def controls(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "controls", value) + @property @pulumi.getter(name="ignoreMetadata") def ignore_metadata(self) -> Optional[pulumi.Input[bool]]: @@ -991,6 +1023,7 @@ def __init__(__self__, opts: Optional[pulumi.ResourceOptions] = None, application_list: Optional[pulumi.Input[str]] = None, as3_json: Optional[pulumi.Input[str]] = None, + controls: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, ignore_metadata: Optional[pulumi.Input[bool]] = None, task_id: Optional[pulumi.Input[str]] = None, tenant_filter: Optional[pulumi.Input[str]] = None, @@ -1362,6 +1395,7 @@ class = "ADC" :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] application_list: List of applications currently deployed on the Big-Ip :param pulumi.Input[str] as3_json: Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] controls: A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. :param pulumi.Input[bool] ignore_metadata: Set True if you want to ignore metadata changes during update. By default it is set to false * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -1930,6 +1964,7 @@ def _internal_init(__self__, opts: Optional[pulumi.ResourceOptions] = None, application_list: Optional[pulumi.Input[str]] = None, as3_json: Optional[pulumi.Input[str]] = None, + controls: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, ignore_metadata: Optional[pulumi.Input[bool]] = None, task_id: Optional[pulumi.Input[str]] = None, tenant_filter: Optional[pulumi.Input[str]] = None, @@ -1946,6 +1981,7 @@ def _internal_init(__self__, __props__.__dict__["application_list"] = application_list __props__.__dict__["as3_json"] = as3_json + __props__.__dict__["controls"] = controls __props__.__dict__["ignore_metadata"] = ignore_metadata __props__.__dict__["task_id"] = task_id __props__.__dict__["tenant_filter"] = tenant_filter @@ -1964,6 +2000,7 @@ def get(resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, application_list: Optional[pulumi.Input[str]] = None, as3_json: Optional[pulumi.Input[str]] = None, + controls: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, ignore_metadata: Optional[pulumi.Input[bool]] = None, per_app_mode: Optional[pulumi.Input[bool]] = None, task_id: Optional[pulumi.Input[str]] = None, @@ -1979,6 +2016,7 @@ def get(resource_name: str, :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] application_list: List of applications currently deployed on the Big-Ip :param pulumi.Input[str] as3_json: Path/Filename of Declarative AS3 JSON which is a json file used with builtin ```file``` function + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] controls: A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. :param pulumi.Input[bool] ignore_metadata: Set True if you want to ignore metadata changes during update. By default it is set to false * `as3_example1.json` - Example AS3 Declarative JSON file with single tenant @@ -2170,6 +2208,7 @@ def get(resource_name: str, __props__.__dict__["application_list"] = application_list __props__.__dict__["as3_json"] = as3_json + __props__.__dict__["controls"] = controls __props__.__dict__["ignore_metadata"] = ignore_metadata __props__.__dict__["per_app_mode"] = per_app_mode __props__.__dict__["task_id"] = task_id @@ -2194,6 +2233,14 @@ def as3_json(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "as3_json") + @property + @pulumi.getter + def controls(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + A map that allows you to configure specific behavior controls for the AS3 declaration. Each key represents a particular control setting, and the corresponding value defines its configuration. + """ + return pulumi.get(self, "controls") + @property @pulumi.getter(name="ignoreMetadata") def ignore_metadata(self) -> pulumi.Output[Optional[bool]]: diff --git a/sdk/python/pulumi_f5bigip/ltm/profile_http.py b/sdk/python/pulumi_f5bigip/ltm/profile_http.py index db3e0a40..c7284b8a 100644 --- a/sdk/python/pulumi_f5bigip/ltm/profile_http.py +++ b/sdk/python/pulumi_f5bigip/ltm/profile_http.py @@ -1365,7 +1365,7 @@ def enforcements(self) -> pulumi.Output[Sequence['outputs.ProfileHttpEnforcement @property @pulumi.getter(name="fallbackHost") - def fallback_host(self) -> pulumi.Output[str]: + def fallback_host(self) -> pulumi.Output[Optional[str]]: """ Specifies an HTTP fallback host. HTTP redirection allows you to redirect HTTP traffic to another protocol identifier, host name, port number """ diff --git a/sdk/python/pulumi_f5bigip/outputs.py b/sdk/python/pulumi_f5bigip/outputs.py index b5462e2f..e2698b50 100644 --- a/sdk/python/pulumi_f5bigip/outputs.py +++ b/sdk/python/pulumi_f5bigip/outputs.py @@ -33,6 +33,7 @@ 'FastUdpAppMonitor', 'FastUdpAppPoolMember', 'FastUdpAppVirtualServer', + 'SaasBotDefenseProfileProtectedEndpoint', 'WafPolicyFileType', 'WafPolicyGraphqlProfile', 'WafPolicyGraphqlProfileDefenseAttribute', @@ -958,6 +959,101 @@ def port(self) -> int: return pulumi.get(self, "port") +@pulumi.output_type +class SaasBotDefenseProfileProtectedEndpoint(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "mitigationAction": + suggest = "mitigation_action" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in SaasBotDefenseProfileProtectedEndpoint. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + SaasBotDefenseProfileProtectedEndpoint.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + SaasBotDefenseProfileProtectedEndpoint.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + name: str, + endpoint: Optional[str] = None, + host: Optional[str] = None, + mitigation_action: Optional[str] = None, + post: Optional[str] = None, + put: Optional[str] = None): + """ + :param str name: Unique name for the protected endpoint + :param str endpoint: Specifies the path to the web page to be protected by BD. For example, `/login`. + :param str host: hostname or IP address of the web page to be protected by the Bot Defense + :param str mitigation_action: Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + :param str post: POST field to protect the path when it has a POST method, `enabled` or `disabled` + :param str put: PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + """ + pulumi.set(__self__, "name", name) + if endpoint is not None: + pulumi.set(__self__, "endpoint", endpoint) + if host is not None: + pulumi.set(__self__, "host", host) + if mitigation_action is not None: + pulumi.set(__self__, "mitigation_action", mitigation_action) + if post is not None: + pulumi.set(__self__, "post", post) + if put is not None: + pulumi.set(__self__, "put", put) + + @property + @pulumi.getter + def name(self) -> str: + """ + Unique name for the protected endpoint + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def endpoint(self) -> Optional[str]: + """ + Specifies the path to the web page to be protected by BD. For example, `/login`. + """ + return pulumi.get(self, "endpoint") + + @property + @pulumi.getter + def host(self) -> Optional[str]: + """ + hostname or IP address of the web page to be protected by the Bot Defense + """ + return pulumi.get(self, "host") + + @property + @pulumi.getter(name="mitigationAction") + def mitigation_action(self) -> Optional[str]: + """ + Specifies whether the BIG-IP or F5 XC Bot Defense handles mitigation of malicious HTTP requests. This field is enabled only if the Service Level field is set to Advanced/Premium + """ + return pulumi.get(self, "mitigation_action") + + @property + @pulumi.getter + def post(self) -> Optional[str]: + """ + POST field to protect the path when it has a POST method, `enabled` or `disabled` + """ + return pulumi.get(self, "post") + + @property + @pulumi.getter + def put(self) -> Optional[str]: + """ + PUT field to protect the path when it has a PUT method,`enabled` or `disabled` + """ + return pulumi.get(self, "put") + + @pulumi.output_type class WafPolicyFileType(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_f5bigip/saas_bot_defense_profile.py b/sdk/python/pulumi_f5bigip/saas_bot_defense_profile.py new file mode 100644 index 00000000..b3e6539a --- /dev/null +++ b/sdk/python/pulumi_f5bigip/saas_bot_defense_profile.py @@ -0,0 +1,535 @@ +# 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 sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from . import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['SaasBotDefenseProfileArgs', 'SaasBotDefenseProfile'] + +@pulumi.input_type +class SaasBotDefenseProfileArgs: + def __init__(__self__, *, + api_key: pulumi.Input[str], + application_id: pulumi.Input[str], + name: pulumi.Input[str], + protected_endpoints: pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]], + shape_protection_pool: pulumi.Input[str], + ssl_profile: pulumi.Input[str], + tenant_id: pulumi.Input[str], + defaults_from: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a SaasBotDefenseProfile resource. + :param pulumi.Input[str] api_key: Specifies the API key, enter the value provided by F5 Support. + :param pulumi.Input[str] application_id: Specifies the Bot Defense API application ID, enter the value provided by F5 Support + :param pulumi.Input[str] name: Unique name for the Distributed Cloud Services Bot Defense profile + :param pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]] protected_endpoints: Use these settings to configure which pages on the website will be protected by BD + :param pulumi.Input[str] shape_protection_pool: Specifies the web hostname to which API requests are made + :param pulumi.Input[str] ssl_profile: Specifies a server-side SSL profile that is different from what the application pool uses + :param pulumi.Input[str] tenant_id: Specifies the tenant ID, enter the value provided by F5 Support + :param pulumi.Input[str] defaults_from: Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + :param pulumi.Input[str] description: Specifies descriptive text that identifies the BD profile. + """ + pulumi.set(__self__, "api_key", api_key) + pulumi.set(__self__, "application_id", application_id) + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "protected_endpoints", protected_endpoints) + pulumi.set(__self__, "shape_protection_pool", shape_protection_pool) + pulumi.set(__self__, "ssl_profile", ssl_profile) + pulumi.set(__self__, "tenant_id", tenant_id) + if defaults_from is not None: + pulumi.set(__self__, "defaults_from", defaults_from) + if description is not None: + pulumi.set(__self__, "description", description) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> pulumi.Input[str]: + """ + Specifies the API key, enter the value provided by F5 Support. + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: pulumi.Input[str]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Input[str]: + """ + Specifies the Bot Defense API application ID, enter the value provided by F5 Support + """ + return pulumi.get(self, "application_id") + + @application_id.setter + def application_id(self, value: pulumi.Input[str]): + pulumi.set(self, "application_id", value) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + Unique name for the Distributed Cloud Services Bot Defense profile + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="protectedEndpoints") + def protected_endpoints(self) -> pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]]: + """ + Use these settings to configure which pages on the website will be protected by BD + """ + return pulumi.get(self, "protected_endpoints") + + @protected_endpoints.setter + def protected_endpoints(self, value: pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]]): + pulumi.set(self, "protected_endpoints", value) + + @property + @pulumi.getter(name="shapeProtectionPool") + def shape_protection_pool(self) -> pulumi.Input[str]: + """ + Specifies the web hostname to which API requests are made + """ + return pulumi.get(self, "shape_protection_pool") + + @shape_protection_pool.setter + def shape_protection_pool(self, value: pulumi.Input[str]): + pulumi.set(self, "shape_protection_pool", value) + + @property + @pulumi.getter(name="sslProfile") + def ssl_profile(self) -> pulumi.Input[str]: + """ + Specifies a server-side SSL profile that is different from what the application pool uses + """ + return pulumi.get(self, "ssl_profile") + + @ssl_profile.setter + def ssl_profile(self, value: pulumi.Input[str]): + pulumi.set(self, "ssl_profile", value) + + @property + @pulumi.getter(name="tenantId") + def tenant_id(self) -> pulumi.Input[str]: + """ + Specifies the tenant ID, enter the value provided by F5 Support + """ + return pulumi.get(self, "tenant_id") + + @tenant_id.setter + def tenant_id(self, value: pulumi.Input[str]): + pulumi.set(self, "tenant_id", value) + + @property + @pulumi.getter(name="defaultsFrom") + def defaults_from(self) -> Optional[pulumi.Input[str]]: + """ + Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + """ + return pulumi.get(self, "defaults_from") + + @defaults_from.setter + def defaults_from(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "defaults_from", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Specifies descriptive text that identifies the BD profile. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + +@pulumi.input_type +class _SaasBotDefenseProfileState: + def __init__(__self__, *, + api_key: Optional[pulumi.Input[str]] = None, + application_id: Optional[pulumi.Input[str]] = None, + defaults_from: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + protected_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]]] = None, + shape_protection_pool: Optional[pulumi.Input[str]] = None, + ssl_profile: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering SaasBotDefenseProfile resources. + :param pulumi.Input[str] api_key: Specifies the API key, enter the value provided by F5 Support. + :param pulumi.Input[str] application_id: Specifies the Bot Defense API application ID, enter the value provided by F5 Support + :param pulumi.Input[str] defaults_from: Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + :param pulumi.Input[str] description: Specifies descriptive text that identifies the BD profile. + :param pulumi.Input[str] name: Unique name for the Distributed Cloud Services Bot Defense profile + :param pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]] protected_endpoints: Use these settings to configure which pages on the website will be protected by BD + :param pulumi.Input[str] shape_protection_pool: Specifies the web hostname to which API requests are made + :param pulumi.Input[str] ssl_profile: Specifies a server-side SSL profile that is different from what the application pool uses + :param pulumi.Input[str] tenant_id: Specifies the tenant ID, enter the value provided by F5 Support + """ + if api_key is not None: + pulumi.set(__self__, "api_key", api_key) + if application_id is not None: + pulumi.set(__self__, "application_id", application_id) + if defaults_from is not None: + pulumi.set(__self__, "defaults_from", defaults_from) + if description is not None: + pulumi.set(__self__, "description", description) + if name is not None: + pulumi.set(__self__, "name", name) + if protected_endpoints is not None: + pulumi.set(__self__, "protected_endpoints", protected_endpoints) + if shape_protection_pool is not None: + pulumi.set(__self__, "shape_protection_pool", shape_protection_pool) + if ssl_profile is not None: + pulumi.set(__self__, "ssl_profile", ssl_profile) + if tenant_id is not None: + pulumi.set(__self__, "tenant_id", tenant_id) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> Optional[pulumi.Input[str]]: + """ + Specifies the API key, enter the value provided by F5 Support. + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> Optional[pulumi.Input[str]]: + """ + Specifies the Bot Defense API application ID, enter the value provided by F5 Support + """ + return pulumi.get(self, "application_id") + + @application_id.setter + def application_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "application_id", value) + + @property + @pulumi.getter(name="defaultsFrom") + def defaults_from(self) -> Optional[pulumi.Input[str]]: + """ + Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + """ + return pulumi.get(self, "defaults_from") + + @defaults_from.setter + def defaults_from(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "defaults_from", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Specifies descriptive text that identifies the BD profile. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Unique name for the Distributed Cloud Services Bot Defense profile + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="protectedEndpoints") + def protected_endpoints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]]]: + """ + Use these settings to configure which pages on the website will be protected by BD + """ + return pulumi.get(self, "protected_endpoints") + + @protected_endpoints.setter + def protected_endpoints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SaasBotDefenseProfileProtectedEndpointArgs']]]]): + pulumi.set(self, "protected_endpoints", value) + + @property + @pulumi.getter(name="shapeProtectionPool") + def shape_protection_pool(self) -> Optional[pulumi.Input[str]]: + """ + Specifies the web hostname to which API requests are made + """ + return pulumi.get(self, "shape_protection_pool") + + @shape_protection_pool.setter + def shape_protection_pool(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "shape_protection_pool", value) + + @property + @pulumi.getter(name="sslProfile") + def ssl_profile(self) -> Optional[pulumi.Input[str]]: + """ + Specifies a server-side SSL profile that is different from what the application pool uses + """ + return pulumi.get(self, "ssl_profile") + + @ssl_profile.setter + def ssl_profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ssl_profile", value) + + @property + @pulumi.getter(name="tenantId") + def tenant_id(self) -> Optional[pulumi.Input[str]]: + """ + Specifies the tenant ID, enter the value provided by F5 Support + """ + return pulumi.get(self, "tenant_id") + + @tenant_id.setter + def tenant_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "tenant_id", value) + + +class SaasBotDefenseProfile(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + api_key: Optional[pulumi.Input[str]] = None, + application_id: Optional[pulumi.Input[str]] = None, + defaults_from: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + protected_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SaasBotDefenseProfileProtectedEndpointArgs', 'SaasBotDefenseProfileProtectedEndpointArgsDict']]]]] = None, + shape_protection_pool: Optional[pulumi.Input[str]] = None, + ssl_profile: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a SaasBotDefenseProfile resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] api_key: Specifies the API key, enter the value provided by F5 Support. + :param pulumi.Input[str] application_id: Specifies the Bot Defense API application ID, enter the value provided by F5 Support + :param pulumi.Input[str] defaults_from: Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + :param pulumi.Input[str] description: Specifies descriptive text that identifies the BD profile. + :param pulumi.Input[str] name: Unique name for the Distributed Cloud Services Bot Defense profile + :param pulumi.Input[Sequence[pulumi.Input[Union['SaasBotDefenseProfileProtectedEndpointArgs', 'SaasBotDefenseProfileProtectedEndpointArgsDict']]]] protected_endpoints: Use these settings to configure which pages on the website will be protected by BD + :param pulumi.Input[str] shape_protection_pool: Specifies the web hostname to which API requests are made + :param pulumi.Input[str] ssl_profile: Specifies a server-side SSL profile that is different from what the application pool uses + :param pulumi.Input[str] tenant_id: Specifies the tenant ID, enter the value provided by F5 Support + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: SaasBotDefenseProfileArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a SaasBotDefenseProfile resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param SaasBotDefenseProfileArgs 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(SaasBotDefenseProfileArgs, 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, + api_key: Optional[pulumi.Input[str]] = None, + application_id: Optional[pulumi.Input[str]] = None, + defaults_from: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + protected_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SaasBotDefenseProfileProtectedEndpointArgs', 'SaasBotDefenseProfileProtectedEndpointArgsDict']]]]] = None, + shape_protection_pool: Optional[pulumi.Input[str]] = None, + ssl_profile: Optional[pulumi.Input[str]] = None, + tenant_id: 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__ = SaasBotDefenseProfileArgs.__new__(SaasBotDefenseProfileArgs) + + if api_key is None and not opts.urn: + raise TypeError("Missing required property 'api_key'") + __props__.__dict__["api_key"] = None if api_key is None else pulumi.Output.secret(api_key) + if application_id is None and not opts.urn: + raise TypeError("Missing required property 'application_id'") + __props__.__dict__["application_id"] = None if application_id is None else pulumi.Output.secret(application_id) + __props__.__dict__["defaults_from"] = defaults_from + __props__.__dict__["description"] = description + if name is None and not opts.urn: + raise TypeError("Missing required property 'name'") + __props__.__dict__["name"] = name + if protected_endpoints is None and not opts.urn: + raise TypeError("Missing required property 'protected_endpoints'") + __props__.__dict__["protected_endpoints"] = protected_endpoints + if shape_protection_pool is None and not opts.urn: + raise TypeError("Missing required property 'shape_protection_pool'") + __props__.__dict__["shape_protection_pool"] = shape_protection_pool + if ssl_profile is None and not opts.urn: + raise TypeError("Missing required property 'ssl_profile'") + __props__.__dict__["ssl_profile"] = ssl_profile + if tenant_id is None and not opts.urn: + raise TypeError("Missing required property 'tenant_id'") + __props__.__dict__["tenant_id"] = tenant_id + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["apiKey", "applicationId"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(SaasBotDefenseProfile, __self__).__init__( + 'f5bigip:index/saasBotDefenseProfile:SaasBotDefenseProfile', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + api_key: Optional[pulumi.Input[str]] = None, + application_id: Optional[pulumi.Input[str]] = None, + defaults_from: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + protected_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SaasBotDefenseProfileProtectedEndpointArgs', 'SaasBotDefenseProfileProtectedEndpointArgsDict']]]]] = None, + shape_protection_pool: Optional[pulumi.Input[str]] = None, + ssl_profile: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None) -> 'SaasBotDefenseProfile': + """ + Get an existing SaasBotDefenseProfile 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] api_key: Specifies the API key, enter the value provided by F5 Support. + :param pulumi.Input[str] application_id: Specifies the Bot Defense API application ID, enter the value provided by F5 Support + :param pulumi.Input[str] defaults_from: Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + :param pulumi.Input[str] description: Specifies descriptive text that identifies the BD profile. + :param pulumi.Input[str] name: Unique name for the Distributed Cloud Services Bot Defense profile + :param pulumi.Input[Sequence[pulumi.Input[Union['SaasBotDefenseProfileProtectedEndpointArgs', 'SaasBotDefenseProfileProtectedEndpointArgsDict']]]] protected_endpoints: Use these settings to configure which pages on the website will be protected by BD + :param pulumi.Input[str] shape_protection_pool: Specifies the web hostname to which API requests are made + :param pulumi.Input[str] ssl_profile: Specifies a server-side SSL profile that is different from what the application pool uses + :param pulumi.Input[str] tenant_id: Specifies the tenant ID, enter the value provided by F5 Support + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _SaasBotDefenseProfileState.__new__(_SaasBotDefenseProfileState) + + __props__.__dict__["api_key"] = api_key + __props__.__dict__["application_id"] = application_id + __props__.__dict__["defaults_from"] = defaults_from + __props__.__dict__["description"] = description + __props__.__dict__["name"] = name + __props__.__dict__["protected_endpoints"] = protected_endpoints + __props__.__dict__["shape_protection_pool"] = shape_protection_pool + __props__.__dict__["ssl_profile"] = ssl_profile + __props__.__dict__["tenant_id"] = tenant_id + return SaasBotDefenseProfile(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> pulumi.Output[str]: + """ + Specifies the API key, enter the value provided by F5 Support. + """ + return pulumi.get(self, "api_key") + + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Output[str]: + """ + Specifies the Bot Defense API application ID, enter the value provided by F5 Support + """ + return pulumi.get(self, "application_id") + + @property + @pulumi.getter(name="defaultsFrom") + def defaults_from(self) -> pulumi.Output[Optional[str]]: + """ + Distributed Cloud Services Bot Defense parent profile from which this profile will inherit settings. + """ + return pulumi.get(self, "defaults_from") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[str]: + """ + Specifies descriptive text that identifies the BD profile. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + Unique name for the Distributed Cloud Services Bot Defense profile + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="protectedEndpoints") + def protected_endpoints(self) -> pulumi.Output[Sequence['outputs.SaasBotDefenseProfileProtectedEndpoint']]: + """ + Use these settings to configure which pages on the website will be protected by BD + """ + return pulumi.get(self, "protected_endpoints") + + @property + @pulumi.getter(name="shapeProtectionPool") + def shape_protection_pool(self) -> pulumi.Output[str]: + """ + Specifies the web hostname to which API requests are made + """ + return pulumi.get(self, "shape_protection_pool") + + @property + @pulumi.getter(name="sslProfile") + def ssl_profile(self) -> pulumi.Output[str]: + """ + Specifies a server-side SSL profile that is different from what the application pool uses + """ + return pulumi.get(self, "ssl_profile") + + @property + @pulumi.getter(name="tenantId") + def tenant_id(self) -> pulumi.Output[str]: + """ + Specifies the tenant ID, enter the value provided by F5 Support + """ + return pulumi.get(self, "tenant_id") +