{
    "name": "ionoscloud",
    "displayName": "IonosCloud",
    "description": "A Pulumi package for creating and managing ionoscloud cloud resources.",
    "keywords": [
        "ionos-cloud",
        "ionoscloud",
        "category/cloud"
    ],
    "homepage": "https://www.pulumi.com",
    "license": "Apache-2.0",
    "attribution": "This Pulumi package is based on the [`ionoscloud` Terraform Provider](https://github.com/ionos-cloud/terraform-provider-ionoscloud).",
    "repository": "https://github.com/ionos-cloud/pulumi-ionoscloud",
    "logoUrl": "https://raw.githubusercontent.com/ionos-cloud/pulumi-ionoscloud/refs/heads/main/.github/LOGO_IONOS_Blue_RGB.png",
    "pluginDownloadURL": "github://api.github.com/ionos-cloud",
    "publisher": "ionos-cloud",
    "meta": {
        "moduleFormat": "(.*)(?:/[^/]*)"
    },
    "language": {
        "csharp": {
            "packageReferences": {
                "Pulumi": "3.*"
            },
            "compatibility": "tfbridge20",
            "rootNamespace": "Ionoscloud.Pulumi",
            "respectSchemaVersion": true
        },
        "go": {
            "importBasePath": "github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud",
            "generateResourceContainerTypes": true,
            "generateExtraInputTypes": true,
            "respectSchemaVersion": true
        },
        "java": {
            "basePackage": "com.ionoscloud.pulumi",
            "buildFiles": "",
            "gradleNexusPublishPluginVersion": "",
            "gradleTest": ""
        },
        "nodejs": {
            "packageName": "@ionos-cloud/sdk-pulumi",
            "packageDescription": "A Pulumi package for creating and managing ionoscloud cloud resources.",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/ionos-cloud/terraform-provider-ionoscloud)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-ionoscloud` repo](https://github.com/ionos-cloud/pulumi-ionoscloud/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-ionoscloud` repo](https://github.com/ionos-cloud/terraform-provider-ionoscloud/issues).",
            "dependencies": {
                "@pulumi/pulumi": "^3.0.0"
            },
            "devDependencies": {
                "@types/mime": "^2.0.0",
                "@types/node": "^10.0.0"
            },
            "compatibility": "tfbridge20",
            "disableUnionOutputTypes": true,
            "respectSchemaVersion": true
        },
        "python": {
            "packageName": "pulumi_ionoscloud",
            "requires": {
                "pulumi": "\u003e=3.0.0,\u003c4.0.0"
            },
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/ionos-cloud/terraform-provider-ionoscloud)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-ionoscloud` repo](https://github.com/ionos-cloud/pulumi-ionoscloud/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-ionoscloud` repo](https://github.com/ionos-cloud/terraform-provider-ionoscloud/issues).",
            "compatibility": "tfbridge20",
            "respectSchemaVersion": true,
            "pyproject": {
                "enabled": true
            },
            "inputTypes": "classes-and-dicts"
        }
    },
    "config": {
        "variables": {
            "contractNumber": {
                "type": "string",
                "description": "To be set only for reseller accounts. Allows to run terraform on a contract number under a reseller account."
            },
            "endpoint": {
                "type": "string",
                "description": "IonosCloud REST API URL. Usually not necessary to be set, SDKs know internally how to route requests to the API."
            },
            "insecure": {
                "type": "boolean",
                "description": "This field is to be set only for testing purposes. It is not recommended to set this field in production environments."
            },
            "password": {
                "type": "string",
                "description": "IonosCloud password for API operations. If token is provided, token is preferred"
            },
            "retries": {
                "type": "integer",
                "deprecationMessage": "Timeout is used instead of this functionality"
            },
            "s3AccessKey": {
                "type": "string",
                "description": "Access key for IONOS Object Storage operations."
            },
            "s3Region": {
                "type": "string",
                "description": "Region for IONOS Object Storage operations."
            },
            "s3SecretKey": {
                "type": "string",
                "description": "Secret key for IONOS Object Storage operations."
            },
            "token": {
                "type": "string",
                "description": "IonosCloud bearer token for API operations."
            },
            "username": {
                "type": "string",
                "description": "IonosCloud username for API operations. If token is provided, token is preferred"
            }
        }
    },
    "types": {
        "ionoscloud:alb/BalancerFlowlog:BalancerFlowlog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "[string] Specifies the action to be taken when the rule is matched. Possible values: ACCEPTED, REJECTED, ALL. Immutable, forces re-creation.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "[string] Specifies the IONOS Object Storage bucket where the flow log data will be stored. The bucket must exist. Immutable, forces re-creation.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "[string] Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL. Immutable, forces re-creation.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The resource's unique identifier.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] Specifies the name of the flow log.\n\n⚠️ **Note:** Removing the \u003cspan pulumi-lang-nodejs=\"`flowlog`\" pulumi-lang-dotnet=\"`Flowlog`\" pulumi-lang-go=\"`flowlog`\" pulumi-lang-python=\"`flowlog`\" pulumi-lang-yaml=\"`flowlog`\" pulumi-lang-java=\"`flowlog`\"\u003e`flowlog`\u003c/span\u003e forces re-creation of the application load balancer resource.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "bucket",
                        "direction",
                        "id",
                        "name"
                    ]
                }
            }
        },
        "ionoscloud:alb/ForwardingRuleHttpRule:ForwardingRuleHttpRule": {
            "properties": {
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:alb/ForwardingRuleHttpRuleCondition:ForwardingRuleHttpRuleCondition"
                    },
                    "description": "[list] - An array of items in the collection.The action is only performed if each and every condition is met; if no conditions are set, the rule will always be performed.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "[string] Valid only for STATIC actions.\n"
                },
                "dropQuery": {
                    "type": "boolean",
                    "description": "[bool] Default is false; valid only for REDIRECT actions.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location for redirecting; mandatory and valid only for REDIRECT actions.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The unique name of the Application Load Balancer HTTP rule.\n"
                },
                "responseMessage": {
                    "type": "string",
                    "description": "[string] The response message of the request; mandatory for STATIC action.\n"
                },
                "statusCode": {
                    "type": "integer",
                    "description": "[int] Valid only for REDIRECT and STATIC actions. For REDIRECT actions, default is 301 and possible values are 301, 302, 303, 307, and 308. For STATIC actions, default is 503 and valid range is 200 to 599.\n"
                },
                "targetGroup": {
                    "type": "string",
                    "description": "[string] The UUID of the target group; mandatory for FORWARD action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] Type of the Http Rule.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "conditions",
                        "contentType",
                        "name",
                        "statusCode",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:alb/ForwardingRuleHttpRuleCondition:ForwardingRuleHttpRuleCondition": {
            "properties": {
                "condition": {
                    "type": "string",
                    "description": "[string] Matching rule for the HTTP rule condition attribute; mandatory for HEADER, PATH, QUERY, METHOD, HOST, and COOKIE types; must be null when type is SOURCE_IP.\n"
                },
                "key": {
                    "type": "string",
                    "description": "[string] Must be null when type is PATH, METHOD, HOST, or SOURCE_IP. Key can only be set when type is COOKIES, HEADER, or QUERY.\n"
                },
                "negate": {
                    "type": "boolean",
                    "description": "[bool] Specifies whether the condition is negated or not; the default is False.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] Type of the Http Rule condition.\n"
                },
                "value": {
                    "type": "string",
                    "description": "[string] Mandatory for conditions CONTAINS, EQUALS, MATCHES, STARTS_WITH, ENDS_WITH; must be null when condition is EXISTS; should be a valid CIDR if provided and if type is SOURCE_IP.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "ionoscloud:alb/getBalancerFlowlog:getBalancerFlowlog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Specifies the action to be taken when the rule is matched. Possible values: ACCEPTED, REJECTED, ALL. Immutable, forces re-creation.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "Specifies the IONOS Object Storage bucket where the flow log data will be stored. The bucket must exist. Immutable, forces re-creation.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL. Immutable, forces re-creation.\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the application load balancer you want to search for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing application load balancer that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:alb/getForwardingRuleHttpRule:getForwardingRuleHttpRule": {
            "properties": {
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:alb/getForwardingRuleHttpRuleCondition:getForwardingRuleHttpRuleCondition"
                    },
                    "description": "An array of items in the collection.The action is only performed if each and every condition is met; if no conditions are set, the rule will always be performed.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "Valid only for STATIC actions.\n"
                },
                "dropQuery": {
                    "type": "boolean",
                    "description": "Default is false; valid only for REDIRECT actions.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location for redirecting; mandatory and valid only for REDIRECT actions.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing application load balancer that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                },
                "responseMessage": {
                    "type": "string",
                    "description": "The response message of the request; mandatory for STATIC action.\n"
                },
                "statusCode": {
                    "type": "integer",
                    "description": "Valid only for REDIRECT and STATIC actions. For REDIRECT actions, default is 301 and possible values are 301, 302, 303, 307, and 308. For STATIC actions, default is 503 and valid range is 200 to 599.\n"
                },
                "targetGroup": {
                    "type": "string",
                    "description": "The UUID of the target group; mandatory for FORWARD action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Http Rule condition.\n"
                }
            },
            "type": "object",
            "required": [
                "conditions",
                "contentType",
                "dropQuery",
                "location",
                "name",
                "responseMessage",
                "statusCode",
                "targetGroup",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:alb/getForwardingRuleHttpRuleCondition:getForwardingRuleHttpRuleCondition": {
            "properties": {
                "condition": {
                    "type": "string",
                    "description": "Matching rule for the HTTP rule condition attribute; mandatory for HEADER, PATH, QUERY, METHOD, HOST, and COOKIE types; must be null when type is SOURCE_IP.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Must be null when type is PATH, METHOD, HOST, or SOURCE_IP. Key can only be set when type is COOKIES, HEADER, or QUERY.\n"
                },
                "negate": {
                    "type": "boolean",
                    "description": "Specifies whether the condition is negated or not; the default is False.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Http Rule condition.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Mandatory for conditions CONTAINS, EQUALS, MATCHES, STARTS_WITH, ENDS_WITH; must be null when condition is EXISTS; should be a valid CIDR if provided and if type is SOURCE_IP.\n"
                }
            },
            "type": "object",
            "required": [
                "condition",
                "key",
                "negate",
                "type",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/GroupPolicy:GroupPolicy": {
            "properties": {
                "metric": {
                    "type": "string",
                    "description": "[string] The Metric that should trigger the scaling actions. Metric values are checked at fixed intervals. Possible values: `INSTANCE_CPU_UTILIZATION_AVERAGE`, `INSTANCE_NETWORK_IN_BYTES`, `INSTANCE_NETWORK_IN_PACKETS`, `INSTANCE_NETWORK_OUT_BYTES`, `INSTANCE_NETWORK_OUT_PACKETS`\n"
                },
                "range": {
                    "type": "string",
                    "description": "[string] Defines the time range, for which the samples will be aggregated. Default is 120s. *Note that when you set it to values like 5m the API will automatically transform it in PT5M, so the plan will show you a diff in state that should be ignored.*\n"
                },
                "scaleInAction": {
                    "$ref": "#/types/ionoscloud:autoscaling/GroupPolicyScaleInAction:GroupPolicyScaleInAction",
                    "description": "[list] Specifies the action to take when the `scaleInThreshold` is exceeded. Hereby, scaling in is always about removing VMs that are currently associated with this autoscaling group. Default termination policy is OLDEST_SERVER_FIRST.\n"
                },
                "scaleInThreshold": {
                    "type": "integer",
                    "description": "[int] A lower threshold on the value of \u003cspan pulumi-lang-nodejs=\"`metric`\" pulumi-lang-dotnet=\"`Metric`\" pulumi-lang-go=\"`metric`\" pulumi-lang-python=\"`metric`\" pulumi-lang-yaml=\"`metric`\" pulumi-lang-java=\"`metric`\"\u003e`metric`\u003c/span\u003e. Will be used with `less than` (\u003c) operator. Exceeding this will start a Scale-In Action as specified by the `scaleInAction` property. The value must have a higher minimum delta to the `scaleOutThreshold` depending on the \u003cspan pulumi-lang-nodejs=\"`metric`\" pulumi-lang-dotnet=\"`Metric`\" pulumi-lang-go=\"`metric`\" pulumi-lang-python=\"`metric`\" pulumi-lang-yaml=\"`metric`\" pulumi-lang-java=\"`metric`\"\u003e`metric`\u003c/span\u003e to avoid competitive actions at the same time.\n"
                },
                "scaleOutAction": {
                    "$ref": "#/types/ionoscloud:autoscaling/GroupPolicyScaleOutAction:GroupPolicyScaleOutAction",
                    "description": "[list] Specifies the action to take when the `scaleOutThreshold` is exceeded. Hereby, scaling out is always about adding new VMs to this autoscaling group.\n"
                },
                "scaleOutThreshold": {
                    "type": "integer",
                    "description": "[int] The upper threshold for the value of the \u003cspan pulumi-lang-nodejs=\"`metric`\" pulumi-lang-dotnet=\"`Metric`\" pulumi-lang-go=\"`metric`\" pulumi-lang-python=\"`metric`\" pulumi-lang-yaml=\"`metric`\" pulumi-lang-java=\"`metric`\"\u003e`metric`\u003c/span\u003e. Used with the `greater than` (\u003e) operator. A scale-out action is triggered when this value is exceeded, specified by the `scaleOutAction` property. The value must have a lower minimum delta to the `scaleInThreshold`, depending on the metric, to avoid competing for actions simultaneously. If `properties.policy.unit=TOTAL`, a value \u003e= 40 must be chosen.\n"
                },
                "unit": {
                    "type": "string",
                    "description": "[string] Units of the applied Metric. Possible values are: `PER_HOUR`, `PER_MINUTE`, `PER_SECOND`, `TOTAL`.\n"
                }
            },
            "type": "object",
            "required": [
                "metric",
                "scaleInAction",
                "scaleInThreshold",
                "scaleOutAction",
                "scaleOutThreshold",
                "unit"
            ]
        },
        "ionoscloud:autoscaling/GroupPolicyScaleInAction:GroupPolicyScaleInAction": {
            "properties": {
                "amount": {
                    "type": "integer",
                    "description": "[int] When `amountType == ABSOLUTE`, this is the number of VMs removed in one step. When `amountType == PERCENTAGE`, this is a percentage value, which will be applied to the autoscaling group's current `targetReplicaCount` in order to derive the number of VMs that will be removed in one step. There will always be at least one VM removed. For SCALE_IN operation new volumes are NOT deleted after the server deletion.\n"
                },
                "amountType": {
                    "type": "string",
                    "description": "[string] The type for the given amount. Possible values are: `ABSOLUTE`, `PERCENTAGE`.\n"
                },
                "cooldownPeriod": {
                    "type": "string",
                    "description": "[string] Minimum time to pass after this Scaling action has started, until the next Scaling action will be started. Additionally, if a Scaling action is currently in progress, no second Scaling action will be started for the same autoscaling group. Instead, the Metric will be re-evaluated after the current Scaling action is completed (either successfully or with failures). This is validated with a minimum value of 2 minutes and a maximum of 24 hours currently. Default value is 5 minutes if not given. *Note that when you set it to values like 5m the API will automatically transform it in PT5M, so the plan will show you a diff in state that should be ignored.*\n"
                },
                "deleteVolumes": {
                    "type": "boolean",
                    "description": "[bool] If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, when deleting a replica during scale in, any attached volume will also be deleted. When set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, all volumes remain in the datacenter and must be deleted manually. Note that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.\n"
                },
                "terminationPolicyType": {
                    "type": "string",
                    "description": "[string] The type of the termination policy for the autoscaling group so that a specific pattern is followed for Scaling-In replicas. Default termination policy is `OLDEST_SERVER_FIRST`. Possible values are: `OLDEST_SERVER_FIRST`, `NEWEST_SERVER_FIRST`, `RANDOM`\n"
                }
            },
            "type": "object",
            "required": [
                "amount",
                "amountType",
                "deleteVolumes"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "amount",
                        "amountType",
                        "cooldownPeriod",
                        "deleteVolumes",
                        "terminationPolicyType"
                    ]
                }
            }
        },
        "ionoscloud:autoscaling/GroupPolicyScaleOutAction:GroupPolicyScaleOutAction": {
            "properties": {
                "amount": {
                    "type": "integer",
                    "description": "[int] When `amountType=ABSOLUTE` specifies the absolute number of VMs that are added. The value must be between 1 to 10. `amountType=PERCENTAGE` specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200. At least one VM is always added.\n"
                },
                "amountType": {
                    "type": "string",
                    "description": "[string] The type for the given amount. Possible values are: `ABSOLUTE`, `PERCENTAGE`.\n"
                },
                "cooldownPeriod": {
                    "type": "string",
                    "description": "[string] Minimum time to pass after this Scaling action has started, until the next Scaling action will be started. Additionally, if a Scaling action is currently in progress, no second Scaling action will be started for the same autoscaling group. Instead, the Metric will be re-evaluated after the current Scaling action is completed (either successfully or with failures). This is validated with a minimum value of 2 minutes and a maximum of 24 hours currently. Default value is 5 minutes if not given. *Note that when you set it to values like 5m the API will automatically transform it in PT5M, so the plan will show you a diff in state that should be ignored.*\n"
                }
            },
            "type": "object",
            "required": [
                "amount",
                "amountType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "amount",
                        "amountType",
                        "cooldownPeriod"
                    ]
                }
            }
        },
        "ionoscloud:autoscaling/GroupReplicaConfiguration:GroupReplicaConfiguration": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The zone where the VMs are created using this configuration. Possible values are: `AUTO`, `ZONE_1`, `ZONE_2`.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "[int] The total number of cores for the VMs.\n"
                },
                "cpuFamily": {
                    "type": "string",
                    "description": "[string] CPU family for the VMs created using this configuration. If null, the VM will be created with the default CPU family for the assigned location. Possible values are: `INTEL_SKYLAKE`, `INTEL_XEON`.\n"
                },
                "nics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfigurationNic:GroupReplicaConfigurationNic"
                    },
                    "description": "Set of NICs associated with this Replica.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[int] The amount of memory for the VMs in MB, e.g. 2048. Size must be specified in multiples of 256 MB with a minimum of 256 MB; however, if you set ramHotPlug to TRUE then you must use a minimum of 1024 MB. If you set the RAM size more than 240GB, then ramHotPlug will be set to FALSE and can not be set to TRUE unless RAM size not set to less than 240GB.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfigurationVolume:GroupReplicaConfigurationVolume"
                    },
                    "description": "[list] List of volumes associated with this Replica.\n"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "cores",
                "ram"
            ]
        },
        "ionoscloud:autoscaling/GroupReplicaConfigurationNic:GroupReplicaConfigurationNic": {
            "properties": {
                "dhcp": {
                    "type": "boolean",
                    "description": "Dhcp flag for this replica Nic. This is an optional attribute with default value of 'true' if not given in the request payload or given as null.\n"
                },
                "firewallActive": {
                    "type": "boolean",
                    "description": "Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.\n"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfigurationNicFirewallRule:GroupReplicaConfigurationNicFirewallRule"
                    },
                    "description": "List of all firewall rules for the specified NIC.\n"
                },
                "firewallType": {
                    "type": "string",
                    "description": "The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.\n"
                },
                "flowLogs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfigurationNicFlowLog:GroupReplicaConfigurationNicFlowLog"
                    },
                    "description": "List of all flow logs for the specified NIC.\n"
                },
                "lan": {
                    "type": "integer",
                    "description": "Lan ID for this replica Nic.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] User-defined name for the Autoscaling Group.\n"
                },
                "targetGroup": {
                    "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfigurationNicTargetGroup:GroupReplicaConfigurationNicTargetGroup",
                    "description": "In order to link VM to ALB, target group must be provided.\n"
                }
            },
            "type": "object",
            "required": [
                "lan",
                "name"
            ]
        },
        "ionoscloud:autoscaling/GroupReplicaConfigurationNicFirewallRule:GroupReplicaConfigurationNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer",
                    "description": "Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null' allows all codes.\n"
                },
                "icmpType": {
                    "type": "integer",
                    "description": "Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] User-defined name for the Autoscaling Group.\n"
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'port_range_start' and 'port_range_end' allows all ports.\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'port_range_start' and 'port_range_end' allows all ports.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The firewall rule type. If not specified, the default value 'INGRESS' is used.\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "protocol",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:autoscaling/GroupReplicaConfigurationNicFlowLog:GroupReplicaConfigurationNicFlowLog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: ACCEPTED, REJECTED, ALL. Immutable, forces re-recreation of the nic resource.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "The bucket name of an existing IONOS Object Storage bucket. Immutable, forces re-recreation of the nic resource.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL. Immutable, forces re-recreation of the nic resource.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The resource's unique identifier.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] User-defined name for the Autoscaling Group.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "bucket",
                        "direction",
                        "id",
                        "name"
                    ]
                }
            }
        },
        "ionoscloud:autoscaling/GroupReplicaConfigurationNicTargetGroup:GroupReplicaConfigurationNicTargetGroup": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The port for the target group.\n"
                },
                "targetGroupId": {
                    "type": "string",
                    "description": "The ID of the target group.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight for the target group.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "targetGroupId",
                "weight"
            ]
        },
        "ionoscloud:autoscaling/GroupReplicaConfigurationVolume:GroupReplicaConfigurationVolume": {
            "properties": {
                "backupUnitId": {
                    "type": "string",
                    "description": "[string] The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either `public image` or `imageAlias` in conjunction with this property.\n"
                },
                "bootOrder": {
                    "type": "string",
                    "description": "[string] Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the volume as boot volume.\nNotice that exactly one volume can be set to PRIMARY or all of them set to AUTO.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "[string] The bus type of the volume. Default setting is `VIRTIO`. The bus type `IDE` is also supported.\n"
                },
                "image": {
                    "type": "string",
                    "description": "[string] The image installed on the volume. Only the UUID of the image is presently supported.\n"
                },
                "imageAlias": {
                    "type": "string",
                    "description": "[string] The image installed on the volume. Must be an `imageAlias` as specified via the images API. Note that one of \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e or `imageAlias` must be set, but not both.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Image password for this replica volume.\n",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name for this replica volume.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "[int] Name for this replica volume.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of ssh keys, supports values or paths to files. Cannot be changed at update.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] Storage Type for this replica volume. Possible values: `SSD`, `HDD`, `SSD_STANDARD` or `SSD_PREMIUM`.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "[string] User-data (Cloud Init) for this replica volume. Make sure you provide a Cloud Init compatible image in conjunction with this parameter.\n"
                }
            },
            "type": "object",
            "required": [
                "bootOrder",
                "name",
                "size",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "backupUnitId",
                        "bootOrder",
                        "name",
                        "size",
                        "type",
                        "userData"
                    ]
                }
            }
        },
        "ionoscloud:autoscaling/getGroupPolicy:getGroupPolicy": {
            "properties": {
                "metric": {
                    "type": "string",
                    "description": "The Metric that should trigger Scaling Actions. The values of the Metric are checked in fixed intervals.\n"
                },
                "range": {
                    "type": "string",
                    "description": "Defines the range of time from which samples will be aggregated. Default is 120s.\n*Note that when you set it to values like 5m the API will automatically transform it in PT5M, so the plan will show you a diff in state that should be ignored.*\n"
                },
                "scaleInActions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/getGroupPolicyScaleInAction:getGroupPolicyScaleInAction"
                    },
                    "description": "Specifies the Action to take when the `scaleInThreshold`\n"
                },
                "scaleInThreshold": {
                    "type": "integer",
                    "description": "A lower threshold on the value of \u003cspan pulumi-lang-nodejs=\"`metric`\" pulumi-lang-dotnet=\"`Metric`\" pulumi-lang-go=\"`metric`\" pulumi-lang-python=\"`metric`\" pulumi-lang-yaml=\"`metric`\" pulumi-lang-java=\"`metric`\"\u003e`metric`\u003c/span\u003e. Will be used with `less than` (\u003c) operator. Exceeding this will start a Scale-In Action as specified by the `scaleInAction` property. The value must have a higher minimum delta to the `scaleOutThreshold` depending on the \u003cspan pulumi-lang-nodejs=\"`metric`\" pulumi-lang-dotnet=\"`Metric`\" pulumi-lang-go=\"`metric`\" pulumi-lang-python=\"`metric`\" pulumi-lang-yaml=\"`metric`\" pulumi-lang-java=\"`metric`\"\u003e`metric`\u003c/span\u003e to avoid competitive actions at the same time.\n"
                },
                "scaleOutActions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/getGroupPolicyScaleOutAction:getGroupPolicyScaleOutAction"
                    },
                    "description": "Specifies the action to take when the `scaleOutThreshold` is exceeded. Hereby, scaling out is always about adding new VMs to this autoscaling group\n"
                },
                "scaleOutThreshold": {
                    "type": "integer",
                    "description": "The upper threshold for the value of the \u003cspan pulumi-lang-nodejs=\"`metric`\" pulumi-lang-dotnet=\"`Metric`\" pulumi-lang-go=\"`metric`\" pulumi-lang-python=\"`metric`\" pulumi-lang-yaml=\"`metric`\" pulumi-lang-java=\"`metric`\"\u003e`metric`\u003c/span\u003e. Used with the `greater than` (\u003e) operator. A scale-out action is triggered when this value is exceeded, specified by the `scaleOutAction` property. The value must have a lower minimum delta to the `scaleInThreshold`, depending on the metric, to avoid competing for actions simultaneously. If `properties.policy.unit=TOTAL`, a value \u003e= 40 must be chosen.\n"
                },
                "unit": {
                    "type": "string",
                    "description": "Specifies the Action to take when the `scaleInThreshold` is exceeded. Hereby, scaling in is always about removing VMs that are currently associated with this Autoscaling Group.\n"
                }
            },
            "type": "object",
            "required": [
                "metric",
                "range",
                "scaleInActions",
                "scaleInThreshold",
                "scaleOutActions",
                "scaleOutThreshold",
                "unit"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupPolicyScaleInAction:getGroupPolicyScaleInAction": {
            "properties": {
                "amount": {
                    "type": "integer",
                    "description": "When `amountType == ABSOLUTE`, this is the number of VMs added or removed in one step. When `amountType == PERCENTAGE`, this is a percentage value, which will be applied to the Autoscaling Group's current `targetReplicaCount` in order to derive the number of VMs that will be added or removed in one step. There will always be at least one VM added or removed.\n"
                },
                "amountType": {
                    "type": "string",
                    "description": "The type for the given amount. Possible values are: [ABSOLUTE, PERCENTAGE].\n"
                },
                "cooldownPeriod": {
                    "type": "string",
                    "description": "Minimum time to pass after this Scaling Action has started, until the next Scaling Action will be started. Additionally, if a Scaling Action is currently in progress, no second Scaling Action will be started for the same Autoscaling Group. Instead, the Metric will be re-evaluated after the current Scaling Action completed (either successful or with failures).\n*Note that when you set it to values like 5m the API will automatically transform it in PT5M, so the plan will show you a diff in state that should be ignored.*\n"
                },
                "deleteVolumes": {
                    "type": "boolean",
                    "description": "If set to 'true', when deleting an replica during scale in, any attached volume will also be deleted. When set to 'false', all volumes remain in the datacenter and must be deleted manually. Note that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.\n"
                },
                "terminationPolicyType": {
                    "type": "string",
                    "description": "The type of the termination policy for the autoscaling group so that a specific pattern is followed for Scaling-In instances. Default termination policy is OLDEST_SERVER_FIRST.\n"
                }
            },
            "type": "object",
            "required": [
                "amount",
                "amountType",
                "cooldownPeriod",
                "deleteVolumes",
                "terminationPolicyType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupPolicyScaleOutAction:getGroupPolicyScaleOutAction": {
            "properties": {
                "amount": {
                    "type": "integer",
                    "description": "When `amountType == ABSOLUTE`, this is the number of VMs added or removed in one step. When `amountType == PERCENTAGE`, this is a percentage value, which will be applied to the Autoscaling Group's current `targetReplicaCount` in order to derive the number of VMs that will be added or removed in one step. There will always be at least one VM added or removed.\n"
                },
                "amountType": {
                    "type": "string",
                    "description": "The type for the given amount. Possible values are: [ABSOLUTE, PERCENTAGE].\n"
                },
                "cooldownPeriod": {
                    "type": "string",
                    "description": "Minimum time to pass after this Scaling Action has started, until the next Scaling Action will be started. Additionally, if a Scaling Action is currently in progress, no second Scaling Action will be started for the same Autoscaling Group. Instead, the Metric will be re-evaluated after the current Scaling Action completed (either successful or with failures).\n*Note that when you set it to values like 5m the API will automatically transform it in PT5M, so the plan will show you a diff in state that should be ignored.*\n"
                }
            },
            "type": "object",
            "required": [
                "amount",
                "amountType",
                "cooldownPeriod"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupReplicaConfiguration:getGroupReplicaConfiguration": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "The zone where the VMs are created using this configuration.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "The total number of cores for the VMs.\n"
                },
                "cpuFamily": {
                    "type": "string",
                    "description": "The zone where the VMs are created using this configuration.\n"
                },
                "nics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/getGroupReplicaConfigurationNic:getGroupReplicaConfigurationNic"
                    },
                    "description": "List of NICs associated with this Replica.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "The amount of memory for the VMs in MB, e.g. 2048. Size must be specified in multiples of 256 MB with a minimum of 256 MB; however, if you set ramHotPlug to TRUE then you must use a minimum of 1024 MB. If you set the RAM size more than 240GB, then ramHotPlug will be set to FALSE and can not be set to TRUE unless RAM size not set to less than 240GB.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/getGroupReplicaConfigurationVolume:getGroupReplicaConfigurationVolume"
                    },
                    "description": "List of volumes associated with this Replica. Only a single volume is currently supported.\n"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "cores",
                "cpuFamily",
                "nics",
                "ram",
                "volumes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupReplicaConfigurationNic:getGroupReplicaConfigurationNic": {
            "properties": {
                "dhcp": {
                    "type": "boolean",
                    "description": "Dhcp flag for this replica Nic. This is an optional attribute with default value of 'true' if not given in the request payload or given as null.\n"
                },
                "firewallActive": {
                    "type": "boolean",
                    "description": "Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.\n"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/getGroupReplicaConfigurationNicFirewallRule:getGroupReplicaConfigurationNicFirewallRule"
                    },
                    "description": "List of all firewall rules for the specified NIC.\n"
                },
                "firewallType": {
                    "type": "string",
                    "description": "The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.\n"
                },
                "flowLogs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/getGroupReplicaConfigurationNicFlowLog:getGroupReplicaConfigurationNicFlowLog"
                    },
                    "description": "Flow log configuration for the NIC. By default, the flow log is inactive. If you want to activate the flow log, you must specify the target resource and the type of traffic to log.\n"
                },
                "lan": {
                    "type": "integer",
                    "description": "Lan ID for this replica Nic.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing Autoscaling Group that you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n"
                },
                "targetGroups": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:autoscaling/getGroupReplicaConfigurationNicTargetGroup:getGroupReplicaConfigurationNicTargetGroup"
                    },
                    "description": "In order to link VM to ALB, target group must be provided.\n"
                }
            },
            "type": "object",
            "required": [
                "dhcp",
                "firewallActive",
                "firewallRules",
                "firewallType",
                "flowLogs",
                "lan",
                "name",
                "targetGroups"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupReplicaConfigurationNicFirewallRule:getGroupReplicaConfigurationNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer",
                    "description": "Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null' allows all codes.\n"
                },
                "icmpType": {
                    "type": "integer",
                    "description": "Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing Autoscaling Group that you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n"
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'port_range_start' and 'port_range_end' allows all ports.\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'port_range_start' and 'port_range_end' allows all ports.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of resource\n"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupReplicaConfigurationNicFlowLog:getGroupReplicaConfigurationNicFlowLog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: ACCEPTED, REJECTED, ALL.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "The bucket name of an existing IONOS Object Storage bucket.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Id of an existing Autoscaling Group that you want to search for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing Autoscaling Group that you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupReplicaConfigurationNicTargetGroup:getGroupReplicaConfigurationNicTargetGroup": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The port for the target group.\n"
                },
                "targetGroupId": {
                    "type": "string",
                    "description": "The ID of the target group.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight for the target group.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "targetGroupId",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getGroupReplicaConfigurationVolume:getGroupReplicaConfigurationVolume": {
            "properties": {
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to.\n"
                },
                "bootOrder": {
                    "type": "string",
                    "description": "Determines whether the volume will be used as a boot volume: NONE - the volume will not be used as boot volume, PRIMARY - the volume will be used as boot volume, AUTO - will delegate the decision to the provisioning engine to decide whether to use the volume as boot volume.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The image installed on the volume. Only the UUID of the image is presently supported.\n"
                },
                "imageAlias": {
                    "type": "string",
                    "description": "The image installed on the volume. Must be an 'imageAlias' as specified via the images API.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing Autoscaling Group that you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "User-defined size for this replica volume in GB.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "type": {
                    "type": "string",
                    "description": "Type of resource\n"
                }
            },
            "type": "object",
            "required": [
                "backupUnitId",
                "bootOrder",
                "bus",
                "image",
                "imageAlias",
                "name",
                "size",
                "sshKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:autoscaling/getServersServer:getServersServer": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The unique ID of the server.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:cdn/DistributionRoutingRule:DistributionRoutingRule": {
            "properties": {
                "prefix": {
                    "type": "string",
                    "description": "[string] The prefix of the routing rule.\n"
                },
                "scheme": {
                    "type": "string",
                    "description": "[string] The scheme of the routing rule.\n"
                },
                "upstream": {
                    "$ref": "#/types/ionoscloud:cdn/DistributionRoutingRuleUpstream:DistributionRoutingRuleUpstream",
                    "description": "[map] - A map of properties for the rule\n"
                }
            },
            "type": "object",
            "required": [
                "prefix",
                "scheme",
                "upstream"
            ]
        },
        "ionoscloud:cdn/DistributionRoutingRuleUpstream:DistributionRoutingRuleUpstream": {
            "properties": {
                "caching": {
                    "type": "boolean",
                    "description": "[bool] Enable or disable caching. If enabled, the CDN will cache the responses from the upstream host. Subsequent requests for the same resource will be served from the cache.\n"
                },
                "geoRestrictions": {
                    "$ref": "#/types/ionoscloud:cdn/DistributionRoutingRuleUpstreamGeoRestrictions:DistributionRoutingRuleUpstreamGeoRestrictions",
                    "description": "[map] - A map of geo_restrictions\n"
                },
                "host": {
                    "type": "string",
                    "description": "[string] The upstream host that handles the requests if not already cached. This host will be protected by the WAF if the option is enabled.\n"
                },
                "rateLimitClass": {
                    "type": "string",
                    "description": "[string] Rate limit class that will be applied to limit the number of incoming requests per IP.\n"
                },
                "sniMode": {
                    "type": "string",
                    "description": "[string] The SNI (Server Name Indication) mode of the upstream. It supports two modes: 1) \u003cspan pulumi-lang-nodejs=\"`distribution`\" pulumi-lang-dotnet=\"`Distribution`\" pulumi-lang-go=\"`distribution`\" pulumi-lang-python=\"`distribution`\" pulumi-lang-yaml=\"`distribution`\" pulumi-lang-java=\"`distribution`\"\u003e`distribution`\u003c/span\u003e: for outgoing connections to the upstream host, the CDN requires the upstream host to present a valid certificate that matches the configured domain of the CDN distribution; 2) \u003cspan pulumi-lang-nodejs=\"`origin`\" pulumi-lang-dotnet=\"`Origin`\" pulumi-lang-go=\"`origin`\" pulumi-lang-python=\"`origin`\" pulumi-lang-yaml=\"`origin`\" pulumi-lang-java=\"`origin`\"\u003e`origin`\u003c/span\u003e: for outgoing connections to the upstream host, the CDN requires the upstream host to present a valid certificate that matches the configured upstream/origin hostname.\n"
                },
                "waf": {
                    "type": "boolean",
                    "description": "[bool] Enable or disable WAF to protect the upstream host.\n"
                }
            },
            "type": "object",
            "required": [
                "caching",
                "host",
                "rateLimitClass",
                "sniMode",
                "waf"
            ]
        },
        "ionoscloud:cdn/DistributionRoutingRuleUpstreamGeoRestrictions:DistributionRoutingRuleUpstreamGeoRestrictions": {
            "properties": {
                "allowLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[string] List of allowed countries\n"
                },
                "blockLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[string] List of blocked countries\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:cdn/getDistributionRoutingRule:getDistributionRoutingRule": {
            "properties": {
                "prefix": {
                    "type": "string",
                    "description": "The prefix of the routing rule.\n"
                },
                "scheme": {
                    "type": "string",
                    "description": "The scheme of the routing rule.\n"
                },
                "upstreams": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:cdn/getDistributionRoutingRuleUpstream:getDistributionRoutingRuleUpstream"
                    },
                    "description": "A map of properties for the rule\n"
                }
            },
            "type": "object",
            "required": [
                "prefix",
                "scheme",
                "upstreams"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:cdn/getDistributionRoutingRuleUpstream:getDistributionRoutingRuleUpstream": {
            "properties": {
                "caching": {
                    "type": "boolean",
                    "description": "Enable or disable caching. If enabled, the CDN will cache the responses from the upstream host. Subsequent requests for the same resource will be served from the cache.\n"
                },
                "geoRestrictions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:cdn/getDistributionRoutingRuleUpstreamGeoRestriction:getDistributionRoutingRuleUpstreamGeoRestriction"
                    },
                    "description": "A map of geo_restrictions\n"
                },
                "host": {
                    "type": "string",
                    "description": "The upstream host that handles the requests if not already cached. This host will be protected by the WAF if the option is enabled.\n"
                },
                "rateLimitClass": {
                    "type": "string",
                    "description": "Rate limit class that will be applied to limit the number of incoming requests per IP.\n"
                },
                "sniMode": {
                    "type": "string",
                    "description": "The SNI (Server Name Indication) mode of the upstream. It supports two modes: 1) \u003cspan pulumi-lang-nodejs=\"`distribution`\" pulumi-lang-dotnet=\"`Distribution`\" pulumi-lang-go=\"`distribution`\" pulumi-lang-python=\"`distribution`\" pulumi-lang-yaml=\"`distribution`\" pulumi-lang-java=\"`distribution`\"\u003e`distribution`\u003c/span\u003e: for outgoing connections to the upstream host, the CDN requires the upstream host to present a valid certificate that matches the configured domain of the CDN distribution; 2) \u003cspan pulumi-lang-nodejs=\"`origin`\" pulumi-lang-dotnet=\"`Origin`\" pulumi-lang-go=\"`origin`\" pulumi-lang-python=\"`origin`\" pulumi-lang-yaml=\"`origin`\" pulumi-lang-java=\"`origin`\"\u003e`origin`\u003c/span\u003e: for outgoing connections to the upstream host, the CDN requires the upstream host to present a valid certificate that matches the configured upstream/origin hostname.\n"
                },
                "waf": {
                    "type": "boolean",
                    "description": "Enable or disable WAF to protect the upstream host.\n"
                }
            },
            "type": "object",
            "required": [
                "caching",
                "geoRestrictions",
                "host",
                "rateLimitClass",
                "sniMode",
                "waf"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:cdn/getDistributionRoutingRuleUpstreamGeoRestriction:getDistributionRoutingRuleUpstreamGeoRestriction": {
            "properties": {
                "allowLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of allowed countries\n"
                },
                "blockLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of blocked countries\n"
                }
            },
            "type": "object",
            "required": [
                "allowLists",
                "blockLists"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:cert/AutoCertificateProviderExternalAccountBinding:AutoCertificateProviderExternalAccountBinding": {
            "properties": {
                "keyId": {
                    "type": "string",
                    "description": "[string] The key ID of the external account binding.\n",
                    "willReplaceOnChanges": true
                },
                "keySecret": {
                    "type": "string",
                    "description": "[string] The key secret of the external account binding\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "keyId",
                "keySecret"
            ]
        },
        "ionoscloud:cert/getAutoCertificateProviderExternalAccountBinding:getAutoCertificateProviderExternalAccountBinding": {
            "properties": {
                "keyId": {
                    "type": "string",
                    "description": "[string] The key ID of the external account binding.\n"
                }
            },
            "type": "object",
            "required": [
                "keyId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/CrossconnectConnectableDatacenter:CrossconnectConnectableDatacenter": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The UUID of the connectable datacenter\n"
                },
                "location": {
                    "type": "string",
                    "description": "The physical location of the connectable datacenter\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the cross-connection.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "location",
                        "name"
                    ]
                }
            }
        },
        "ionoscloud:compute/CrossconnectPeer:CrossconnectPeer": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "The id of the cross-connected datacenter\n"
                },
                "datacenterName": {
                    "type": "string",
                    "description": "The name of the cross-connected datacenter\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "The id of the cross-connected LAN\n"
                },
                "lanName": {
                    "type": "string",
                    "description": "The name of the cross-connected LAN\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the cross-connected datacenter\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datacenterId",
                        "datacenterName",
                        "lanId",
                        "lanName",
                        "location"
                    ]
                }
            }
        },
        "ionoscloud:compute/CubeServerNic:CubeServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean",
                    "description": "Indicates whether this NIC receives an IPv6 address through DHCP.\n"
                },
                "firewall": {
                    "$ref": "#/types/ionoscloud:compute/CubeServerNicFirewall:CubeServerNicFirewall",
                    "description": "Firewall rules created in the server resource. The rules can also be created as separate resources outside the server resource\n"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "IPv6 CIDR block assigned to the NIC.\n"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.\n"
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "lan"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceNumber",
                        "firewallType",
                        "id",
                        "ips",
                        "ipv6CidrBlock",
                        "ipv6Ips",
                        "lan",
                        "mac",
                        "pciSlot"
                    ]
                }
            }
        },
        "ionoscloud:compute/CubeServerNicFirewall:CubeServerNicFirewall": {
            "properties": {
                "icmpCode": {
                    "type": "string"
                },
                "icmpType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "protocol",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:compute/CubeServerVolume:CubeServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string"
                },
                "cpuHotPlug": {
                    "type": "boolean"
                },
                "deviceNumber": {
                    "type": "integer"
                },
                "discVirtioHotPlug": {
                    "type": "boolean"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean"
                },
                "diskType": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" imagePassword \" pulumi-lang-dotnet=\" ImagePassword \" pulumi-lang-go=\" imagePassword \" pulumi-lang-python=\" image_password \" pulumi-lang-yaml=\" imagePassword \" pulumi-lang-java=\" imagePassword \"\u003e imagePassword \u003c/span\u003eunder server level"
                },
                "licenceType": {
                    "type": "string",
                    "description": "[string] Sets the OS type of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nicHotPlug": {
                    "type": "boolean"
                },
                "nicHotUnplug": {
                    "type": "boolean"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "ramHotPlug": {
                    "type": "boolean"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eunder server level"
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "diskType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "availabilityZone",
                        "backupUnitId",
                        "bootServer",
                        "bus",
                        "cpuHotPlug",
                        "deviceNumber",
                        "discVirtioHotPlug",
                        "discVirtioHotUnplug",
                        "diskType",
                        "exposeSerial",
                        "licenceType",
                        "nicHotPlug",
                        "nicHotUnplug",
                        "pciSlot",
                        "ramHotPlug",
                        "requireLegacyBios",
                        "sshKeyPaths",
                        "userData"
                    ]
                }
            }
        },
        "ionoscloud:compute/DatacenterCpuArchitecture:DatacenterCpuArchitecture": {
            "properties": {
                "cpuFamily": {
                    "type": "string",
                    "description": "A valid CPU family name\n"
                },
                "maxCores": {
                    "type": "integer",
                    "description": "The maximum number of cores available\n"
                },
                "maxRam": {
                    "type": "integer",
                    "description": "The maximum number of RAM in MB\n"
                },
                "vendor": {
                    "type": "string",
                    "description": "A valid CPU vendor name\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpuFamily",
                        "maxCores",
                        "maxRam",
                        "vendor"
                    ]
                }
            }
        },
        "ionoscloud:compute/GPUServerNic:GPUServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean",
                    "description": "Indicates whether this NIC receives an IPv6 address through DHCP.\n"
                },
                "firewall": {
                    "$ref": "#/types/ionoscloud:compute/GPUServerNicFirewall:GPUServerNicFirewall",
                    "description": "Firewall rules created in the server resource. The rules can also be created as separate resources outside the server resource\n"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "IPv6 CIDR block assigned to the NIC.\n"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.\n"
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "lan"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceNumber",
                        "firewallType",
                        "id",
                        "ips",
                        "ipv6CidrBlock",
                        "ipv6Ips",
                        "lan",
                        "mac",
                        "pciSlot"
                    ]
                }
            }
        },
        "ionoscloud:compute/GPUServerNicFirewall:GPUServerNicFirewall": {
            "properties": {
                "icmpCode": {
                    "type": "string"
                },
                "icmpType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "protocol",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:compute/GPUServerVolume:GPUServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string"
                },
                "cpuHotPlug": {
                    "type": "boolean"
                },
                "deviceNumber": {
                    "type": "integer"
                },
                "discVirtioHotPlug": {
                    "type": "boolean"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean"
                },
                "diskType": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "[string] Sets the OS type of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nicHotPlug": {
                    "type": "boolean"
                },
                "nicHotUnplug": {
                    "type": "boolean"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "ramHotPlug": {
                    "type": "boolean"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "availabilityZone",
                        "backupUnitId",
                        "bootServer",
                        "bus",
                        "cpuHotPlug",
                        "deviceNumber",
                        "discVirtioHotPlug",
                        "discVirtioHotUnplug",
                        "diskType",
                        "exposeSerial",
                        "licenceType",
                        "nicHotPlug",
                        "nicHotUnplug",
                        "pciSlot",
                        "ramHotPlug",
                        "requireLegacyBios",
                        "userData"
                    ]
                }
            }
        },
        "ionoscloud:compute/GroupUser:GroupUser": {
            "properties": {
                "administrator": {
                    "type": "boolean"
                },
                "email": {
                    "type": "string"
                },
                "firstName": {
                    "type": "string"
                },
                "forceSecAuth": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "lastName": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "administrator",
                        "email",
                        "firstName",
                        "forceSecAuth",
                        "id",
                        "lastName"
                    ]
                }
            }
        },
        "ionoscloud:compute/IPBlockIpConsumer:IPBlockIpConsumer": {
            "properties": {
                "datacenterId": {
                    "type": "string"
                },
                "datacenterName": {
                    "type": "string"
                },
                "ip": {
                    "type": "string"
                },
                "k8sClusterUuid": {
                    "type": "string"
                },
                "k8sNodepoolUuid": {
                    "type": "string"
                },
                "mac": {
                    "type": "string"
                },
                "nicId": {
                    "type": "string"
                },
                "serverId": {
                    "type": "string"
                },
                "serverName": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datacenterId",
                        "datacenterName",
                        "ip",
                        "k8sClusterUuid",
                        "k8sNodepoolUuid",
                        "mac",
                        "nicId",
                        "serverId",
                        "serverName"
                    ]
                }
            }
        },
        "ionoscloud:compute/LanIpFailover:LanIpFailover": {
            "properties": {
                "ip": {
                    "type": "string"
                },
                "nicUuid": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ip",
                        "nicUuid"
                    ]
                }
            }
        },
        "ionoscloud:compute/NatGatewayLan:NatGatewayLan": {
            "properties": {
                "gatewayIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of gateway IP addresses of the NAT gateway. Will be auto-generated if not provided. Should ideally be an IP belonging to the same subnet as the LAN.\n"
                },
                "id": {
                    "type": "integer",
                    "description": "[int] Id for the LAN connected to the NAT gateway.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "gatewayIps",
                        "id"
                    ]
                }
            }
        },
        "ionoscloud:compute/NatGatewayRuleTargetPortRange:NatGatewayRuleTargetPortRange": {
            "properties": {
                "end": {
                    "type": "integer",
                    "description": "[int] Target port range end associated with the NAT gateway rule.\n"
                },
                "start": {
                    "type": "integer",
                    "description": "[int] Target port range start associated with the NAT gateway rule.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "end",
                        "start"
                    ]
                }
            }
        },
        "ionoscloud:compute/NicFlowlog:NicFlowlog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Specifies the action to be taken when the rule is matched. Possible values: ACCEPTED, REJECTED, ALL. Immutable, update forces re-creation.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "Specifies the IONOS Object Storage bucket where the flow log data will be stored. The bucket must exist. Immutable, update forces re-creation.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL. Immutable, update forces re-creation.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the NIC.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Specifies the name of the flow log.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "bucket",
                        "direction",
                        "id",
                        "name"
                    ]
                }
            }
        },
        "ionoscloud:compute/ServerLabel:ServerLabel": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "[string] The key of the label.\n"
                },
                "value": {
                    "type": "string",
                    "description": "[string] The value of the label.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ]
        },
        "ionoscloud:compute/ServerNic:ServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean",
                    "description": "Indicates whether this NIC receives an IPv6 address through DHCP.\n"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallType": {
                    "type": "string"
                },
                "firewalls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/ServerNicFirewall:ServerNicFirewall"
                    },
                    "description": "Allows to define firewall rules inline in the server. See the Firewall section.\n"
                },
                "id": {
                    "type": "string"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "IPv6 CIDR block assigned to the NIC.\n"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.\n"
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the\n"
                }
            },
            "type": "object",
            "required": [
                "lan"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceNumber",
                        "firewallType",
                        "id",
                        "ips",
                        "ipv6CidrBlock",
                        "ipv6Ips",
                        "lan",
                        "mac",
                        "pciSlot"
                    ]
                }
            }
        },
        "ionoscloud:compute/ServerNicFirewall:ServerNicFirewall": {
            "properties": {
                "icmpCode": {
                    "type": "string"
                },
                "icmpType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "description": "(Computed)[string] Server usages: * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - Server usages: [ENTERPRISE](https://docs.ionos.com/cloud/compute-services/compute-engine/dedicated-core) now named dedicated core, [CUBE](https://docs.ionos.com/cloud/compute-services/cubes) or [VCPU](https://docs.ionos.com/cloud/compute-services/compute-engine/vcpu-server). This property is immutable.\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "protocol",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:compute/ServerVolume:ServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string"
                },
                "cpuHotPlug": {
                    "type": "boolean"
                },
                "deviceNumber": {
                    "type": "integer"
                },
                "discVirtioHotPlug": {
                    "type": "boolean"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean"
                },
                "diskType": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" imagePassword \" pulumi-lang-dotnet=\" ImagePassword \" pulumi-lang-go=\" imagePassword \" pulumi-lang-python=\" image_password \" pulumi-lang-yaml=\" imagePassword \" pulumi-lang-java=\" imagePassword \"\u003e imagePassword \u003c/span\u003eunder server level"
                },
                "licenceType": {
                    "type": "string",
                    "description": "[string] Sets the OS type of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nicHotPlug": {
                    "type": "boolean"
                },
                "nicHotUnplug": {
                    "type": "boolean"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "ramHotPlug": {
                    "type": "boolean"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume in GB.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images.  Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. Does not support `~` expansion to homedir in the given path. This property is immutable.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eunder server level"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support `~` expansion to homedir in the given path.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003eunder server level",
                    "willReplaceOnChanges": true
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "diskType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "availabilityZone",
                        "backupUnitId",
                        "bootServer",
                        "bus",
                        "cpuHotPlug",
                        "deviceNumber",
                        "discVirtioHotPlug",
                        "discVirtioHotUnplug",
                        "diskType",
                        "exposeSerial",
                        "licenceType",
                        "nicHotPlug",
                        "nicHotUnplug",
                        "pciSlot",
                        "ramHotPlug",
                        "requireLegacyBios",
                        "size",
                        "sshKeys",
                        "userData"
                    ]
                }
            }
        },
        "ionoscloud:compute/TargetGroupHealthCheck:TargetGroupHealthCheck": {
            "properties": {
                "checkInterval": {
                    "type": "integer",
                    "description": "[int] The interval in milliseconds between consecutive health checks; default is 2000.\n"
                },
                "checkTimeout": {
                    "type": "integer",
                    "description": "[int] The maximum time in milliseconds to wait for a target to respond to a check. For target VMs with 'Check Interval' set, the lesser of the two  values is used once the TCP connection is established.\n"
                },
                "retries": {
                    "type": "integer",
                    "description": "[int] The maximum number of attempts to reconnect to a target after a connection failure. Valid range is 0 to 65535, and default is three reconnection.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "checkInterval",
                        "checkTimeout",
                        "retries"
                    ]
                }
            }
        },
        "ionoscloud:compute/TargetGroupHttpHealthCheck:TargetGroupHttpHealthCheck": {
            "properties": {
                "matchType": {
                    "type": "string",
                    "description": "[string]\n"
                },
                "method": {
                    "type": "string",
                    "description": "[string] The method for the HTTP health check.\n"
                },
                "negate": {
                    "type": "boolean",
                    "description": "[bool]\n"
                },
                "path": {
                    "type": "string",
                    "description": "[string] The path (destination URL) for the HTTP health check request; the default is /.\n"
                },
                "regex": {
                    "type": "boolean",
                    "description": "[bool]\n"
                },
                "response": {
                    "type": "string",
                    "description": "[string] The response returned by the request, depending on the match type.\n"
                }
            },
            "type": "object",
            "required": [
                "matchType",
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "matchType",
                        "method",
                        "path",
                        "response"
                    ]
                }
            }
        },
        "ionoscloud:compute/TargetGroupTarget:TargetGroupTarget": {
            "properties": {
                "healthCheckEnabled": {
                    "type": "boolean",
                    "description": "[bool] Makes the target available only if it accepts periodic health check TCP connection attempts; when turned off, the target is considered always available. The health check only consists of a connection attempt to the address and port of the target. Default is True.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "[string] The IP of the balanced target VM.\n"
                },
                "maintenanceEnabled": {
                    "type": "boolean",
                    "description": "[bool] Maintenance mode prevents the target from receiving balanced traffic.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "[int] The port of the balanced target service; valid range is 1 to 65535.\n"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "[string] The proxy protocol version. Accepted values are \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`v1`\" pulumi-lang-dotnet=\"`V1`\" pulumi-lang-go=\"`v1`\" pulumi-lang-python=\"`v1`\" pulumi-lang-yaml=\"`v1`\" pulumi-lang-java=\"`v1`\"\u003e`v1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`v2`\" pulumi-lang-dotnet=\"`V2`\" pulumi-lang-go=\"`v2`\" pulumi-lang-python=\"`v2`\" pulumi-lang-yaml=\"`v2`\" pulumi-lang-java=\"`v2`\"\u003e`v2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`v2ssl`\" pulumi-lang-dotnet=\"`V2ssl`\" pulumi-lang-go=\"`v2ssl`\" pulumi-lang-python=\"`v2ssl`\" pulumi-lang-yaml=\"`v2ssl`\" pulumi-lang-java=\"`v2ssl`\"\u003e`v2ssl`\u003c/span\u003e. If unspecified, the default value of \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e is used.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "[int] Traffic is distributed in proportion to target weight, relative to the combined weight of all targets. A target with higher weight receives a greater share of traffic. Valid range is 0 to 256 and default is 1; targets with weight of 0 do not participate in load balancing but still accept persistent connections. It is best use values in the middle of the range to leave room for later adjustments.\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "port",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "healthCheckEnabled",
                        "ip",
                        "port",
                        "weight"
                    ]
                }
            }
        },
        "ionoscloud:compute/VCPUServerLabel:VCPUServerLabel": {
            "properties": {
                "key": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ]
        },
        "ionoscloud:compute/VCPUServerNic:VCPUServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean",
                    "description": "Indicates whether this NIC receives an IPv6 address through DHCP.\n"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallType": {
                    "type": "string"
                },
                "firewalls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/VCPUServerNicFirewall:VCPUServerNicFirewall"
                    },
                    "description": "Allows to define firewall rules inline in the server. See the Firewall section.\n"
                },
                "id": {
                    "type": "string"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "IPv6 CIDR block assigned to the NIC.\n"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.\n"
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "lan"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceNumber",
                        "firewallType",
                        "id",
                        "ips",
                        "ipv6CidrBlock",
                        "ipv6Ips",
                        "lan",
                        "mac",
                        "pciSlot"
                    ]
                }
            }
        },
        "ionoscloud:compute/VCPUServerNicFirewall:VCPUServerNicFirewall": {
            "properties": {
                "icmpCode": {
                    "type": "string"
                },
                "icmpType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "protocol",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:compute/VCPUServerVolume:VCPUServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string"
                },
                "cpuHotPlug": {
                    "type": "boolean"
                },
                "deviceNumber": {
                    "type": "integer"
                },
                "discVirtioHotPlug": {
                    "type": "boolean"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean"
                },
                "diskType": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "[string] Sets the OS type of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nicHotPlug": {
                    "type": "boolean"
                },
                "nicHotUnplug": {
                    "type": "boolean"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "ramHotPlug": {
                    "type": "boolean"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume in GB.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "diskType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "availabilityZone",
                        "backupUnitId",
                        "bootServer",
                        "bus",
                        "cpuHotPlug",
                        "deviceNumber",
                        "discVirtioHotPlug",
                        "discVirtioHotUnplug",
                        "diskType",
                        "exposeSerial",
                        "licenceType",
                        "nicHotPlug",
                        "nicHotUnplug",
                        "pciSlot",
                        "ramHotPlug",
                        "requireLegacyBios",
                        "size",
                        "userData"
                    ]
                }
            }
        },
        "ionoscloud:compute/getCrossconnectConnectableDatacenter:getCrossconnectConnectableDatacenter": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the cross connect you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The physical location of the connectable datacenter\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing cross connect that you want to search for.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "location",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getCrossconnectPeer:getCrossconnectPeer": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "The id of the cross-connected datacenter\n"
                },
                "datacenterName": {
                    "type": "string",
                    "description": "The name of the cross-connected datacenter\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "The id of the cross-connected LAN\n"
                },
                "lanName": {
                    "type": "string",
                    "description": "The name of the cross-connected LAN\n"
                },
                "location": {
                    "type": "string",
                    "description": "The physical location of the connectable datacenter\n"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "datacenterName",
                "lanId",
                "lanName",
                "location"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getCubeServerCdrom:getCubeServerCdrom": {
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Cloud init compatibility\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "cpuHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot unplug (no reboot required)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of cdrom\n"
                },
                "discScsiHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot plug (no reboot required)\n"
                },
                "discScsiHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot unplug (no reboot required)\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageAliases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of image aliases mapped for this Image\n"
                },
                "imageType": {
                    "type": "string",
                    "description": "Type of image\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of that image/snapshot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Indicates if the image is part of the public repository or not\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "ramHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot unplug (no reboot required)\n"
                },
                "size": {
                    "type": "number",
                    "description": "The size of the image in GB\n"
                }
            },
            "type": "object",
            "required": [
                "cloudInit",
                "cpuHotPlug",
                "cpuHotUnplug",
                "description",
                "discScsiHotPlug",
                "discScsiHotUnplug",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageAliases",
                "imageType",
                "licenceType",
                "location",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "public",
                "ramHotPlug",
                "ramHotUnplug",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getCubeServerNic:getCubeServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number (LUN) of the storage volume\n"
                },
                "dhcp": {
                    "type": "boolean",
                    "description": "Indicates if the nic will reserve an IP using DHCP\n"
                },
                "dhcpv6": {
                    "type": "boolean"
                },
                "firewallActive": {
                    "type": "boolean",
                    "description": "Activate or deactivate the firewall\n"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getCubeServerNicFirewallRule:getCubeServerNicFirewallRule"
                    },
                    "description": "list of\n"
                },
                "firewallType": {
                    "type": "string",
                    "description": "The type of firewall rules that will be allowed on the NIC\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic\n"
                },
                "ipv6CidrBlock": {
                    "type": "string"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "lan": {
                    "type": "integer",
                    "description": "The LAN ID the NIC will sit on\n"
                },
                "mac": {
                    "type": "string",
                    "description": "The MAC address of the NIC\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the Nic\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceNumber",
                "dhcp",
                "firewallActive",
                "firewallRules",
                "firewallType",
                "id",
                "ips",
                "ipv6CidrBlock",
                "ipv6Ips",
                "lan",
                "mac",
                "name",
                "pciSlot",
                "securityGroupsIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getCubeServerNicFirewallRule:getCubeServerNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer",
                    "description": "Defines the allowed code (from 0 to 254) if protocol ICMP is chosen\n"
                },
                "icmpType": {
                    "type": "integer",
                    "description": "Defines the allowed type (from 0 to 254) if the protocol ICMP is chosen\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "he protocol for the rule\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "Only traffic originating from the respective MAC address is allowed\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of firewall rule\n"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "id",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getCubeServerVolume:getCubeServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "The availability zone in which the volume should exist\n"
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to\n"
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "The bus type of the volume\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number (LUN) of the storage volume\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageName": {
                    "type": "string"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "Initial password to be set for installed OS\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the Nic\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of firewall rule\n"
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string\n"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "backupUnitId",
                "bootServer",
                "bus",
                "cpuHotPlug",
                "deviceNumber",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageName",
                "imagePassword",
                "licenceType",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "pciSlot",
                "ramHotPlug",
                "requireLegacyBios",
                "sshKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getDatacenterCpuArchitecture:getDatacenterCpuArchitecture": {
            "properties": {
                "cpuFamily": {
                    "type": "string",
                    "description": "A valid CPU family name\n"
                },
                "maxCores": {
                    "type": "integer",
                    "description": "The maximum number of cores available\n"
                },
                "maxRam": {
                    "type": "integer",
                    "description": "The maximum number of RAM in MB\n"
                },
                "vendor": {
                    "type": "string",
                    "description": "A valid CPU vendor name\n"
                }
            },
            "type": "object",
            "required": [
                "cpuFamily",
                "maxCores",
                "maxRam",
                "vendor"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getGPUServerCdrom:getGPUServerCdrom": {
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Cloud init compatibility\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "cpuHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot unplug (no reboot required)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of cdrom\n"
                },
                "discScsiHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot plug (no reboot required)\n"
                },
                "discScsiHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot unplug (no reboot required)\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageAliases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of image aliases mapped for this Image\n"
                },
                "imageType": {
                    "type": "string",
                    "description": "Type of image\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of that image/snapshot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Indicates if the image is part of the public repository or not\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "ramHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot unplug (no reboot required)\n"
                },
                "size": {
                    "type": "number",
                    "description": "The size of the image in GB\n"
                }
            },
            "type": "object",
            "required": [
                "cloudInit",
                "cpuHotPlug",
                "cpuHotUnplug",
                "description",
                "discScsiHotPlug",
                "discScsiHotUnplug",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageAliases",
                "imageType",
                "licenceType",
                "location",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "public",
                "ramHotPlug",
                "ramHotUnplug",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getGPUServerNic:getGPUServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number of the storage volume\n"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getGPUServerNicFirewallRule:getGPUServerNicFirewallRule"
                    }
                },
                "firewallType": {
                    "type": "string"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "ipv6CidrBlock": {
                    "type": "string"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the storage volume\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "deviceNumber",
                "dhcp",
                "firewallActive",
                "firewallRules",
                "firewallType",
                "id",
                "ips",
                "ipv6CidrBlock",
                "ipv6Ips",
                "lan",
                "mac",
                "name",
                "pciSlot",
                "securityGroupsIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getGPUServerNicFirewallRule:getGPUServerNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer"
                },
                "icmpType": {
                    "type": "integer"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "description": "Hardware type of the volume.\n"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "id",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getGPUServerVolume:getGPUServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "The availability zone in which the volume should exist\n"
                },
                "backupUnitId": {
                    "type": "string"
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "The bus type of the volume\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number of the storage volume\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageName": {
                    "type": "string"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "Initial password to be set for installed OS\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the storage volume\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key\n"
                },
                "type": {
                    "type": "string",
                    "description": "Hardware type of the volume.\n"
                },
                "userData": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "backupUnitId",
                "bootServer",
                "bus",
                "cpuHotPlug",
                "deviceNumber",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageName",
                "imagePassword",
                "licenceType",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "pciSlot",
                "ramHotPlug",
                "requireLegacyBios",
                "sshKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getGpusGpus:getGpusGpus": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The id of the GPU.\n"
                },
                "model": {
                    "type": "string",
                    "description": "The model of the GPU.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the GPU.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the GPU.\n"
                },
                "vendor": {
                    "type": "string",
                    "description": "The vendor of the GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "model",
                "name",
                "type",
                "vendor"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getGroupUser:getGroupUser": {
            "properties": {
                "administrator": {
                    "type": "boolean"
                },
                "email": {
                    "type": "string"
                },
                "firstName": {
                    "type": "string"
                },
                "forceSecAuth": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the group you want to search for.\n"
                },
                "lastName": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "administrator",
                "email",
                "firstName",
                "forceSecAuth",
                "id",
                "lastName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getIPBlockIpConsumer:getIPBlockIpConsumer": {
            "properties": {
                "datacenterId": {
                    "type": "string"
                },
                "datacenterName": {
                    "type": "string"
                },
                "ip": {
                    "type": "string"
                },
                "k8sClusterUuid": {
                    "type": "string"
                },
                "k8sNodepoolUuid": {
                    "type": "string"
                },
                "mac": {
                    "type": "string"
                },
                "nicId": {
                    "type": "string"
                },
                "serverId": {
                    "type": "string"
                },
                "serverName": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "datacenterName",
                "ip",
                "k8sClusterUuid",
                "k8sNodepoolUuid",
                "mac",
                "nicId",
                "serverId",
                "serverName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getLanIpFailover:getLanIpFailover": {
            "properties": {
                "ip": {
                    "type": "string"
                },
                "nicUuid": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "nicUuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getLocationCpuArchitecture:getLocationCpuArchitecture": {
            "properties": {
                "cpuFamily": {
                    "type": "string",
                    "description": "A valid CPU family name.\n"
                },
                "maxCores": {
                    "type": "integer",
                    "description": "The maximum number of cores available.\n"
                },
                "maxRam": {
                    "type": "integer",
                    "description": "The maximum number of RAM in MB.\n"
                },
                "vendor": {
                    "type": "string",
                    "description": "A valid CPU vendor name.\n"
                }
            },
            "type": "object",
            "required": [
                "cpuFamily",
                "maxCores",
                "maxRam",
                "vendor"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getNatGatewayLan:getNatGatewayLan": {
            "properties": {
                "gatewayIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of gateway IP addresses of the NAT gateway. Will be auto-generated if not provided. Should ideally be an IP belonging to the same subnet as the LAN\n"
                },
                "id": {
                    "type": "integer",
                    "description": "ID of the network load balancer forwarding rule you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                }
            },
            "type": "object",
            "required": [
                "gatewayIps",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getNatGatewayRuleTargetPortRange:getNatGatewayRuleTargetPortRange": {
            "properties": {
                "end": {
                    "type": "integer",
                    "description": "Target port range end associated with the NAT gateway rule.\n"
                },
                "start": {
                    "type": "integer",
                    "description": "Target port range start associated with the NAT gateway rule.\n"
                }
            },
            "type": "object",
            "required": [
                "end",
                "start"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getNicFlowlog:getNicFlowlog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Specifies the action to be taken when the rule is matched. Possible values: ACCEPTED, REJECTED, ALL.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "Specifies the IONOS Object Storage bucket where the flow log data will be stored. The bucket must exist.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL.\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the nic you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided.\nIf none, are provided, the datasource will return an error.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the LAN.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServerCdrom:getServerCdrom": {
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Cloud init compatibility\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "cpuHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot unplug (no reboot required)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of cdrom\n"
                },
                "discScsiHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot plug (no reboot required)\n"
                },
                "discScsiHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot unplug (no reboot required)\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageAliases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of image aliases mapped for this Image\n"
                },
                "imageType": {
                    "type": "string",
                    "description": "Type of image\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of that image/snapshot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Indicates if the image is part of the public repository or not\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "ramHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot unplug (no reboot required)\n"
                },
                "size": {
                    "type": "number",
                    "description": "The size of the volume in GB\n"
                }
            },
            "type": "object",
            "required": [
                "cloudInit",
                "cpuHotPlug",
                "cpuHotUnplug",
                "description",
                "discScsiHotPlug",
                "discScsiHotUnplug",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageAliases",
                "imageType",
                "licenceType",
                "location",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "public",
                "ramHotPlug",
                "ramHotUnplug",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServerLabel:getServerLabel": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The key of the label\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the label\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServerNic:getServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number (LUN) of the storage volume\n"
                },
                "dhcp": {
                    "type": "boolean",
                    "description": "Indicates if the nic will reserve an IP using DHCP\n"
                },
                "dhcpv6": {
                    "type": "boolean"
                },
                "firewallActive": {
                    "type": "boolean",
                    "description": "Activate or deactivate the firewall\n"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getServerNicFirewallRule:getServerNicFirewallRule"
                    },
                    "description": "list of\n"
                },
                "firewallType": {
                    "type": "string",
                    "description": "The type of firewall rules that will be allowed on the NIC\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic\n"
                },
                "ipv6CidrBlock": {
                    "type": "string"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "lan": {
                    "type": "integer",
                    "description": "The LAN ID the NIC will sit on\n"
                },
                "mac": {
                    "type": "string",
                    "description": "The MAC address of the NIC\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the Nic\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceNumber",
                "dhcp",
                "firewallActive",
                "firewallRules",
                "firewallType",
                "id",
                "ips",
                "ipv6CidrBlock",
                "ipv6Ips",
                "lan",
                "mac",
                "name",
                "pciSlot",
                "securityGroupsIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServerNicFirewallRule:getServerNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer",
                    "description": "Defines the allowed code (from 0 to 254) if protocol ICMP is chosen\n"
                },
                "icmpType": {
                    "type": "integer",
                    "description": "Defines the allowed type (from 0 to 254) if the protocol ICMP is chosen\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "he protocol for the rule\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "Only traffic originating from the respective MAC address is allowed\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of firewall rule\n"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "id",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServerVolume:getServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "The availability zone in which the volume should exist\n"
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to\n"
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "The bus type of the volume\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number (LUN) of the storage volume\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageName": {
                    "type": "string"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "Initial password to be set for installed OS\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the Nic\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume in GB\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of firewall rule\n"
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string\n"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "backupUnitId",
                "bootServer",
                "bus",
                "cpuHotPlug",
                "deviceNumber",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "exposeSerial",
                "id",
                "imageName",
                "imagePassword",
                "licenceType",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "pciSlot",
                "ramHotPlug",
                "requireLegacyBios",
                "size",
                "sshKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServersFilter:getServersFilter": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ]
        },
        "ionoscloud:compute/getServersServer:getServersServer": {
            "properties": {
                "availabilityZone": {
                    "type": "string"
                },
                "bootCdrom": {
                    "type": "string"
                },
                "bootImage": {
                    "type": "string"
                },
                "bootVolume": {
                    "type": "string"
                },
                "cdroms": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getServersServerCdrom:getServersServerCdrom"
                    }
                },
                "cores": {
                    "type": "integer"
                },
                "cpuFamily": {
                    "type": "string"
                },
                "hostname": {
                    "type": "string"
                },
                "id": {
                    "type": "string",
                    "description": "The unique ID of the server.\n"
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getServersServerLabel:getServersServerLabel"
                    }
                },
                "name": {
                    "type": "string"
                },
                "nics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getServersServerNic:getServersServerNic"
                    }
                },
                "ram": {
                    "type": "integer"
                },
                "templateUuid": {
                    "type": "string"
                },
                "token": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "vmState": {
                    "type": "string"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getServersServerVolume:getServersServerVolume"
                    }
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "bootCdrom",
                "bootImage",
                "bootVolume",
                "cdroms",
                "cores",
                "cpuFamily",
                "hostname",
                "id",
                "labels",
                "nics",
                "ram",
                "token",
                "type",
                "vmState",
                "volumes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServersServerCdrom:getServersServerCdrom": {
            "properties": {
                "cloudInit": {
                    "type": "string"
                },
                "cpuHotPlug": {
                    "type": "boolean"
                },
                "cpuHotUnplug": {
                    "type": "boolean"
                },
                "description": {
                    "type": "string"
                },
                "discScsiHotPlug": {
                    "type": "boolean"
                },
                "discScsiHotUnplug": {
                    "type": "boolean"
                },
                "discVirtioHotPlug": {
                    "type": "boolean"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "imageAliases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "imageType": {
                    "type": "string"
                },
                "licenceType": {
                    "type": "string"
                },
                "location": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "nicHotPlug": {
                    "type": "boolean"
                },
                "nicHotUnplug": {
                    "type": "boolean"
                },
                "public": {
                    "type": "boolean"
                },
                "ramHotPlug": {
                    "type": "boolean"
                },
                "ramHotUnplug": {
                    "type": "boolean"
                },
                "size": {
                    "type": "number"
                }
            },
            "type": "object",
            "required": [
                "cloudInit",
                "cpuHotPlug",
                "cpuHotUnplug",
                "description",
                "discScsiHotPlug",
                "discScsiHotUnplug",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageAliases",
                "imageType",
                "licenceType",
                "location",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "public",
                "ramHotPlug",
                "ramHotUnplug",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServersServerLabel:getServersServerLabel": {
            "properties": {
                "id": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "id",
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServersServerNic:getServersServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getServersServerNicFirewallRule:getServersServerNicFirewallRule"
                    }
                },
                "firewallType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "ipv6CidrBlock": {
                    "type": "string"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "deviceNumber",
                "dhcp",
                "firewallActive",
                "firewallRules",
                "firewallType",
                "id",
                "ips",
                "ipv6CidrBlock",
                "ipv6Ips",
                "lan",
                "mac",
                "name",
                "pciSlot",
                "securityGroupsIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServersServerNicFirewallRule:getServersServerNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer"
                },
                "icmpType": {
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "id",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getServersServerVolume:getServersServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string"
                },
                "backupUnitId": {
                    "type": "string"
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string"
                },
                "cpuHotPlug": {
                    "type": "boolean"
                },
                "deviceNumber": {
                    "type": "integer"
                },
                "discVirtioHotPlug": {
                    "type": "boolean"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean"
                },
                "diskType": {
                    "type": "string"
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "id": {
                    "type": "string"
                },
                "imageName": {
                    "type": "string"
                },
                "imagePassword": {
                    "type": "string"
                },
                "licenceType": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "nicHotPlug": {
                    "type": "boolean"
                },
                "nicHotUnplug": {
                    "type": "boolean"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "ramHotPlug": {
                    "type": "boolean"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "size": {
                    "type": "integer"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "userData": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "backupUnitId",
                "bootServer",
                "bus",
                "cpuHotPlug",
                "deviceNumber",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "diskType",
                "exposeSerial",
                "id",
                "imageName",
                "imagePassword",
                "licenceType",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "pciSlot",
                "ramHotPlug",
                "requireLegacyBios",
                "size",
                "sshKeys"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getTargetGroupHealthCheck:getTargetGroupHealthCheck": {
            "properties": {
                "checkInterval": {
                    "type": "integer",
                    "description": "The interval in milliseconds between consecutive health checks; default is 2000.\n"
                },
                "checkTimeout": {
                    "type": "integer",
                    "description": "The maximum time in milliseconds to wait for a target to respond to a check. For target VMs with 'Check Interval' set, the lesser of the two  values is used once the TCP connection is established.\n"
                },
                "retries": {
                    "type": "integer",
                    "description": "The maximum number of attempts to reconnect to a target after a connection failure. Valid range is 0 to 65535, and default is three reconnection.\n"
                }
            },
            "type": "object",
            "required": [
                "checkInterval",
                "checkTimeout",
                "retries"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getTargetGroupHttpHealthCheck:getTargetGroupHttpHealthCheck": {
            "properties": {
                "matchType": {
                    "type": "string"
                },
                "method": {
                    "type": "string",
                    "description": "The method for the HTTP health check.\n"
                },
                "negate": {
                    "type": "boolean"
                },
                "path": {
                    "type": "string",
                    "description": "The path (destination URL) for the HTTP health check request; the default is /.\n"
                },
                "regex": {
                    "type": "boolean"
                },
                "response": {
                    "type": "string",
                    "description": "The response returned by the request, depending on the match type.\n"
                }
            },
            "type": "object",
            "required": [
                "matchType",
                "method",
                "negate",
                "path",
                "regex",
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getTargetGroupTarget:getTargetGroupTarget": {
            "properties": {
                "healthCheckEnabled": {
                    "type": "boolean",
                    "description": "Makes the target available only if it accepts periodic health check TCP connection attempts; when turned off, the target is considered always available. The health check only consists of a connection attempt to the address and port of the target. Default is True.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP of the balanced target VM.\n"
                },
                "maintenanceEnabled": {
                    "type": "boolean",
                    "description": "Maintenance mode prevents the target from receiving balanced traffic.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port of the balanced target service; valid range is 1 to 65535.\n"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "The proxy protocol version.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Traffic is distributed in proportion to target weight, relative to the combined weight of all targets. A target with higher weight receives a greater share of traffic. Valid range is 0 to 256 and default is 1; targets with weight of 0 do not participate in load balancing but still accept persistent connections. It is best use values in the middle of the range to leave room for later adjustments.\n"
                }
            },
            "type": "object",
            "required": [
                "healthCheckEnabled",
                "ip",
                "maintenanceEnabled",
                "port",
                "proxyProtocol",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getTemplateGpus:getTemplateGpus": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of GPUs\n"
                },
                "model": {
                    "type": "string",
                    "description": "The model of the GPU\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the GPU\n"
                },
                "vendor": {
                    "type": "string",
                    "description": "The vendor of the GPU\n"
                }
            },
            "type": "object",
            "required": [
                "count",
                "model",
                "type",
                "vendor"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getUserGroup:getUserGroup": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the user you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e can be provided. If no argument is set, the provider will search for the **email that was provided for the configuration**. If none is found, the provider will return an error.\n"
                },
                "name": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getVCPUServerCdrom:getVCPUServerCdrom": {
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Cloud init compatibility\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "cpuHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot unplug (no reboot required)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of cdrom\n"
                },
                "discScsiHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot plug (no reboot required)\n"
                },
                "discScsiHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot unplug (no reboot required)\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageAliases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of image aliases mapped for this Image\n"
                },
                "imageType": {
                    "type": "string",
                    "description": "Type of image\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of that image/snapshot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Indicates if the image is part of the public repository or not\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "ramHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot unplug (no reboot required)\n"
                },
                "size": {
                    "type": "number",
                    "description": "The size of the volume in GB\n"
                }
            },
            "type": "object",
            "required": [
                "cloudInit",
                "cpuHotPlug",
                "cpuHotUnplug",
                "description",
                "discScsiHotPlug",
                "discScsiHotUnplug",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageAliases",
                "imageType",
                "licenceType",
                "location",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "public",
                "ramHotPlug",
                "ramHotUnplug",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getVCPUServerLabel:getVCPUServerLabel": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The key of the label\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the label\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getVCPUServerNic:getVCPUServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number (LUN) of the storage volume\n"
                },
                "dhcp": {
                    "type": "boolean",
                    "description": "Indicates if the nic will reserve an IP using DHCP\n"
                },
                "dhcpv6": {
                    "type": "boolean"
                },
                "firewallActive": {
                    "type": "boolean",
                    "description": "Activate or deactivate the firewall\n"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/getVCPUServerNicFirewallRule:getVCPUServerNicFirewallRule"
                    },
                    "description": "list of\n"
                },
                "firewallType": {
                    "type": "string",
                    "description": "The type of firewall rules that will be allowed on the NIC\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic\n"
                },
                "ipv6CidrBlock": {
                    "type": "string"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "lan": {
                    "type": "integer",
                    "description": "The LAN ID the NIC will sit on\n"
                },
                "mac": {
                    "type": "string",
                    "description": "The MAC address of the NIC\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the Nic\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceNumber",
                "dhcp",
                "firewallActive",
                "firewallRules",
                "firewallType",
                "id",
                "ips",
                "ipv6CidrBlock",
                "ipv6Ips",
                "lan",
                "mac",
                "name",
                "pciSlot",
                "securityGroupsIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getVCPUServerNicFirewallRule:getVCPUServerNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer",
                    "description": "Defines the allowed code (from 0 to 254) if protocol ICMP is chosen\n"
                },
                "icmpType": {
                    "type": "integer",
                    "description": "Defines the allowed type (from 0 to 254) if the protocol ICMP is chosen\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "he protocol for the rule\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "Only traffic originating from the respective MAC address is allowed\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of firewall rule\n"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "id",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:compute/getVCPUServerVolume:getVCPUServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "The availability zone in which the volume should exist\n"
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to\n"
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "The bus type of the volume\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number (LUN) of the storage volume\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageName": {
                    "type": "string"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "Initial password to be set for installed OS\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the Nic\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume in GB\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of firewall rule\n"
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string\n"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "backupUnitId",
                "bootServer",
                "bus",
                "cpuHotPlug",
                "deviceNumber",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "exposeSerial",
                "id",
                "imageName",
                "imagePassword",
                "licenceType",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "pciSlot",
                "ramHotPlug",
                "requireLegacyBios",
                "size",
                "sshKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:creg/RegistryFeatures:RegistryFeatures": {
            "properties": {
                "vulnerabilityScanning": {
                    "type": "boolean",
                    "description": "[bool] Enables or disables the Vulnerability Scanning feature for the Container Registry. To disable this feature, set the attribute to false when creating the CR resource.\n\n\u003e **⚠ WARNING** `Container Registry Vulnerability Scanning` is a paid feature which is enabled by default, and cannot be turned off after activation. To disable this feature for a Container Registry, ensure \u003cspan pulumi-lang-nodejs=\"`vulnerabilityScanning`\" pulumi-lang-dotnet=\"`VulnerabilityScanning`\" pulumi-lang-go=\"`vulnerabilityScanning`\" pulumi-lang-python=\"`vulnerability_scanning`\" pulumi-lang-yaml=\"`vulnerabilityScanning`\" pulumi-lang-java=\"`vulnerabilityScanning`\"\u003e`vulnerabilityScanning`\u003c/span\u003e is set to false on resource creation.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "vulnerabilityScanning"
                    ]
                }
            }
        },
        "ionoscloud:creg/RegistryGarbageCollectionSchedule:RegistryGarbageCollectionSchedule": {
            "properties": {
                "days": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Elements of list must have one of the values: `Saturday`, `Sunday`, `Monday`, `Tuesday`,  `Wednesday`,  `Thursday`,  `Friday`\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string]\n"
                }
            },
            "type": "object",
            "required": [
                "days",
                "time"
            ]
        },
        "ionoscloud:creg/RegistryStorageUsage:RegistryStorageUsage": {
            "properties": {
                "bytes": {
                    "type": "integer"
                },
                "updatedAt": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bytes",
                        "updatedAt"
                    ]
                }
            }
        },
        "ionoscloud:creg/RegistryTokenCredential:RegistryTokenCredential": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "[string] The password/token of the container registry token which will also be saved to a file if \u003cspan pulumi-lang-nodejs=\"`savePasswordToFile`\" pulumi-lang-dotnet=\"`SavePasswordToFile`\" pulumi-lang-go=\"`savePasswordToFile`\" pulumi-lang-python=\"`save_password_to_file`\" pulumi-lang-yaml=\"`savePasswordToFile`\" pulumi-lang-java=\"`savePasswordToFile`\"\u003e`savePasswordToFile`\u003c/span\u003e is set\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "[string] The username of the container registry token\n"
                }
            },
            "type": "object",
            "required": [
                "password",
                "username"
            ]
        },
        "ionoscloud:creg/RegistryTokenScope:RegistryTokenScope": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[string] Example: [\"pull\", \"push\", \"delete\"]\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string]\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string]\n"
                }
            },
            "type": "object",
            "required": [
                "actions",
                "name",
                "type"
            ]
        },
        "ionoscloud:creg/getRegistryFeature:getRegistryFeature": {
            "properties": {
                "vulnerabilityScanning": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "vulnerabilityScanning"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:creg/getRegistryGarbageCollectionSchedule:getRegistryGarbageCollectionSchedule": {
            "properties": {
                "days": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "time": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "days",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:creg/getRegistryMaintenanceWindow:getRegistryMaintenanceWindow": {
            "properties": {
                "days": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "time": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "days",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:creg/getRegistryStorageUsage:getRegistryStorageUsage": {
            "properties": {
                "bytes": {
                    "type": "integer"
                },
                "updatedAt": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "bytes",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:creg/getRegistryTokenCredential:getRegistryTokenCredential": {
            "properties": {
                "username": {
                    "type": "string",
                    "description": "* `expiry-date`\n"
                }
            },
            "type": "object",
            "required": [
                "username"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:creg/getRegistryTokenScope:getRegistryTokenScope": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing container registry token that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "actions",
                "name",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/InMemoryDBReplicaSetConnections:InMemoryDBReplicaSetConnections": {
            "properties": {
                "cidr": {
                    "type": "string",
                    "description": "[string] The IP and subnet for your instance. Note the following unavailable IP ranges: 10.233.64.0/18, 10.233.0.0/18, 10.233.114.0/24.\n",
                    "willReplaceOnChanges": true
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The datacenter to connect your instance to.\n",
                    "willReplaceOnChanges": true
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The numeric LAN ID to connect your instance to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "cidr",
                "datacenterId",
                "lanId"
            ]
        },
        "ionoscloud:dbaas/InMemoryDBReplicaSetCredentials:InMemoryDBReplicaSetCredentials": {
            "properties": {
                "hashedPassword": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetCredentialsHashedPassword:InMemoryDBReplicaSetCredentialsHashedPassword",
                    "description": "[object] The hashed password for a InMemoryDB user.\n"
                },
                "plainTextPassword": {
                    "type": "string",
                    "description": "[string] The password for a InMemoryDB user, this is a field that is marked as `Sensitive`.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "username": {
                    "type": "string",
                    "description": "[string] The username for the initial InMemoryDB user. Some system usernames are restricted (e.g. 'admin', 'standby').\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "username"
            ]
        },
        "ionoscloud:dbaas/InMemoryDBReplicaSetCredentialsHashedPassword:InMemoryDBReplicaSetCredentialsHashedPassword": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "[string] The value can be only: \"SHA-256\".\n",
                    "willReplaceOnChanges": true
                },
                "hash": {
                    "type": "string",
                    "description": "[string] The hashed password.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "algorithm",
                "hash"
            ]
        },
        "ionoscloud:dbaas/InMemoryDBReplicaSetMaintenanceWindow:InMemoryDBReplicaSetMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:dbaas/InMemoryDBReplicaSetResources:InMemoryDBReplicaSetResources": {
            "properties": {
                "cores": {
                    "type": "integer",
                    "description": "[int] The number of CPU cores per instance.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[int] The amount of memory per instance in gigabytes (GB).\n"
                },
                "storage": {
                    "type": "integer",
                    "description": "[int] The size of the storage in GB. The size is derived from the amount of RAM and the persistence mode and is not configurable.\n"
                }
            },
            "type": "object",
            "required": [
                "cores",
                "ram"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cores",
                        "ram",
                        "storage"
                    ]
                }
            }
        },
        "ionoscloud:dbaas/MariaDBClusterBackup:MariaDBClusterBackup": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "[string] The IONOS Object Storage location where the backups will be stored.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "location"
            ]
        },
        "ionoscloud:dbaas/MariaDBClusterConnections:MariaDBClusterConnections": {
            "properties": {
                "cidr": {
                    "type": "string",
                    "description": "[true] The IP and subnet for the database. Note the following unavailable IP ranges: 10.233.64.0/18, 10.233.0.0/18, 10.233.114.0/24. Please enter in the correct format like IP/Subnet, exp: 192.168.10.0/24. See [Private IPs](https://www.ionos.com/help/server-cloud-infrastructure/private-network/private-ip-address-ranges/) and [Configuring the network](https://docs.ionos.com/cloud/compute-engine/networks/how-tos/configure-networks).\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[true] The datacenter to connect your cluster to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[true] The numeric LAN ID to connect your cluster to.\n"
                }
            },
            "type": "object",
            "required": [
                "cidr",
                "datacenterId",
                "lanId"
            ]
        },
        "ionoscloud:dbaas/MariaDBClusterCredentials:MariaDBClusterCredentials": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "[string] The password for a MariaDB user.\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "[string] The username for the initial MariaDB user. Some system usernames are restricted (e.g 'mariadb', 'admin', 'standby').\n"
                }
            },
            "type": "object",
            "required": [
                "password",
                "username"
            ]
        },
        "ionoscloud:dbaas/MariaDBClusterMaintenanceWindow:MariaDBClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:dbaas/MongoClusterBackup:MongoClusterBackup": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "[string] - The location where the cluster backups will be stored. If not set, the backup is stored in the nearest location of the cluster. Possible values are de, eu-south-2, or eu-central-2.\n"
                },
                "pointInTimeWindowHours": {
                    "type": "integer",
                    "description": "Number of hours in the past for which a point-in-time snapshot can be created.\n"
                },
                "snapshotIntervalHours": {
                    "type": "integer",
                    "description": "Number of hours between snapshots.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:dbaas/MongoClusterBiConnector:MongoClusterBiConnector": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "[bool] - The status of the BI Connector. If not set, the BI Connector is disabled.\n"
                },
                "host": {
                    "type": "string",
                    "description": "[string] - The host where this new BI Connector is installed.\n"
                },
                "port": {
                    "type": "string",
                    "description": "[string] - Port number used when connecting to this new BI Connector.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "host",
                        "port"
                    ]
                }
            }
        },
        "ionoscloud:dbaas/MongoClusterConnections:MongoClusterConnections": {
            "properties": {
                "cidrLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[List] The list of IPs and subnet for your cluster. Note the following unavailable IP ranges:10.233.64.0/18, 10.233.0.0/18, 10.233.114.0/24. example: [192.168.1.100/24, 192.168.1.101/24]. See [Private IPs](https://www.ionos.com/help/server-cloud-infrastructure/private-network/private-ip-address-ranges/) and [Cluster Setup - Preparing the network](https://docs.ionos.com/cloud/databases/mongodb/api-howtos/create-a-cluster#preparing-the-network).\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The datacenter to connect your cluster to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The LAN to connect your cluster to.\n"
                }
            },
            "type": "object",
            "required": [
                "cidrLists",
                "datacenterId",
                "lanId"
            ]
        },
        "ionoscloud:dbaas/MongoClusterMaintenanceWindow:MongoClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string]\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string]\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:dbaas/MongoUserRole:MongoUserRole": {
            "properties": {
                "database": {
                    "type": "string",
                    "description": "[true] Database on which to apply the role.\n\n**NOTE:** MongoDb users do not support update at the moment. Changing any attribute will result in the user being re-created.\n"
                },
                "role": {
                    "type": "string",
                    "description": "[true] Mongodb user role. Examples: read, readWrite, readAnyDatabase, readWriteAnyDatabase, dbAdmin, dbAdminAnyDatabase, clusterMonitor.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:dbaas/PSQLClusterConnectionPooler:PSQLClusterConnectionPooler": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "[bool]\n"
                },
                "poolMode": {
                    "type": "string",
                    "description": "[string] Represents different modes of connection pooling for the connection pooler.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "poolMode"
            ]
        },
        "ionoscloud:dbaas/PSQLClusterConnections:PSQLClusterConnections": {
            "properties": {
                "cidr": {
                    "type": "string",
                    "description": "[true] The IP and subnet for the database. Note the following unavailable IP ranges: 10.233.64.0/18, 10.233.0.0/18, 10.233.114.0/24. Please enter in the correct format like IP/Subnet, exp: 192.168.10.0/24. See [Private IPs](https://www.ionos.com/help/server-cloud-infrastructure/private-network/private-ip-address-ranges/) and [Configuring the network](https://docs.ionos.com/cloud/compute-engine/networks/how-tos/configure-networks).\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[true] The datacenter to connect your cluster to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[true] The LAN to connect your cluster to.\n"
                }
            },
            "type": "object",
            "required": [
                "cidr",
                "datacenterId",
                "lanId"
            ]
        },
        "ionoscloud:dbaas/PSQLClusterCredentials:PSQLClusterCredentials": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "[string]\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "[string] The username for the initial postgres user. Some system usernames are restricted (e.g. \"postgres\", \"admin\", \"standby\")\n"
                }
            },
            "type": "object",
            "required": [
                "password",
                "username"
            ]
        },
        "ionoscloud:dbaas/PSQLClusterFromBackup:PSQLClusterFromBackup": {
            "properties": {
                "backupId": {
                    "type": "string",
                    "description": "[string] The unique ID of the backup you want to restore.\n"
                },
                "recoveryTargetTime": {
                    "type": "string",
                    "description": "[string] If this value is supplied as ISO 8601 timestamp, the backup will be replayed up until the given timestamp. If empty, the backup will be applied completely.\n"
                }
            },
            "type": "object",
            "required": [
                "backupId"
            ]
        },
        "ionoscloud:dbaas/PSQLClusterMaintenanceWindow:PSQLClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string]\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string]\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:dbaas/getInMemoryDBReplicaSetConnection:getInMemoryDBReplicaSetConnection": {
            "properties": {
                "cidr": {
                    "type": "string",
                    "description": "[string] The IP and subnet for your instance. Note the following unavailable IP ranges: 10.233.64.0/18, 10.233.0.0/18, 10.233.114.0/24.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The datacenter to connect your instance to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The numeric LAN ID to connect your instance to.\n"
                }
            },
            "type": "object",
            "required": [
                "cidr",
                "datacenterId",
                "lanId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getInMemoryDBReplicaSetCredential:getInMemoryDBReplicaSetCredential": {
            "properties": {
                "username": {
                    "type": "string",
                    "description": "[string] The username for the initial InMemoryDB user. Some system usernames are restricted (e.g. 'admin', 'standby').\n"
                }
            },
            "type": "object",
            "required": [
                "username"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getInMemoryDBReplicaSetMaintenanceWindow:getInMemoryDBReplicaSetMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getInMemoryDBReplicaSetResource:getInMemoryDBReplicaSetResource": {
            "properties": {
                "cores": {
                    "type": "integer",
                    "description": "[int] The number of CPU cores per instance.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[int] The amount of memory per instance in gigabytes (GB).\n"
                },
                "storage": {
                    "type": "integer",
                    "description": "[int] The size of the storage in GB. The size is derived from the amount of RAM and the persistence mode and is not configurable.\n"
                }
            },
            "type": "object",
            "required": [
                "cores",
                "ram",
                "storage"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getInmemorydbSnapshotMetadata:getInmemorydbSnapshotMetadata": {
            "properties": {
                "createdDate": {
                    "type": "string",
                    "description": "The ISO 8601 creation timestamp.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "The ID of the datacenter in which the snapshot is located.\n"
                },
                "lastModifiedDate": {
                    "type": "string",
                    "description": "The ISO 8601 modified timestamp.\n"
                },
                "replicaSetId": {
                    "type": "string",
                    "description": "The ID of the replica set from which the snapshot was created.\n"
                },
                "snapshotTime": {
                    "type": "string",
                    "description": "The time at which the snapshot was taken.\n"
                }
            },
            "type": "object",
            "required": [
                "createdDate",
                "datacenterId",
                "lastModifiedDate",
                "replicaSetId",
                "snapshotTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMariaDBBackupsBackup:getMariaDBBackupsBackup": {
            "properties": {
                "baseBackups": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:dbaas/getMariaDBBackupsBackupBaseBackup:getMariaDBBackupsBackupBaseBackup"
                    },
                    "description": "The list of backups for the specified cluster\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "[string] The unique ID of the cluster.\n"
                },
                "earliestRecoveryTargetTime": {
                    "type": "string",
                    "description": "The oldest available timestamp to which you can restore.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the backup in Mebibytes (MiB). This is the size of the binary backup file that was stored\n"
                }
            },
            "type": "object",
            "required": [
                "baseBackups",
                "clusterId",
                "earliestRecoveryTargetTime",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMariaDBBackupsBackupBaseBackup:getMariaDBBackupsBackupBaseBackup": {
            "properties": {
                "created": {
                    "type": "string",
                    "description": "The ISO 8601 creation timestamp\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the backup in Mebibytes (MiB). This is the size of the binary backup file that was stored\n"
                }
            },
            "type": "object",
            "required": [
                "created",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMariaDBClusterBackup:getMariaDBClusterBackup": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "[string] The location of the cluster. Different service endpoints are used based on location, possible options are: \"de/fra\", \"de/txl\", \"es/vit\", \"fr/par\", \"gb/lhr\", \"us/ewr\", \"us/las\", \"us/mci\". If not set, the endpoint will be the one corresponding to \"de/txl\".\n\n\u003e **⚠ WARNING:** `Location` attribute will become required in the future.\n\nEither \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`displayName`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n"
                }
            },
            "type": "object",
            "required": [
                "location"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMariaDBClusterConnection:getMariaDBClusterConnection": {
            "properties": {
                "cidr": {
                    "type": "string",
                    "description": "[string] The IP and subnet for your cluster.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The datacenter to connect your cluster to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The LAN to connect your cluster to.\n"
                }
            },
            "type": "object",
            "required": [
                "cidr",
                "datacenterId",
                "lanId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMariaDBClusterMaintenanceWindow:getMariaDBClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMongoClusterBackup:getMongoClusterBackup": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The location where the cluster backups will be stored. If not set, the backup is stored in the nearest location of the cluster. Possible values are de, eu-south-2, or eu-central-2.\n"
                }
            },
            "type": "object",
            "required": [
                "location"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMongoClusterBiConnector:getMongoClusterBiConnector": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable or disable the BiConnector\n"
                },
                "host": {
                    "type": "string",
                    "description": "The host where this new BI Connector is installed\n"
                },
                "port": {
                    "type": "string",
                    "description": "Port number used when connecting to this new BI Connector\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "host",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMongoClusterConnection:getMongoClusterConnection": {
            "properties": {
                "cidrLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IPs and subnet for your cluster.\n          Note the following unavailable IP ranges:\n          10.233.64.0/18\n          10.233.0.0/18\n          10.233.114.0/24 \t\t\n example: [192.168.1.100/24, 192.168.1.101/24]\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "The datacenter to connect your cluster to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "The LAN to connect your cluster to.\n"
                }
            },
            "type": "object",
            "required": [
                "cidrLists",
                "datacenterId",
                "lanId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMongoClusterMaintenanceWindow:getMongoClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string"
                },
                "time": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getMongoUserRole:getMongoUserRole": {
            "properties": {
                "database": {
                    "type": "string",
                    "description": "[true] Database on which to apply the role.\n\n**NOTE:** MongoDb users do not support update at the moment. Changing any attribute will result in the user being re-created.\n"
                },
                "role": {
                    "type": "string",
                    "description": "[true] Mongodb user role. Examples: read, readWrite, readAnyDatabase, readWriteAnyDatabase, dbAdmin, dbAdminAnyDatabase, clusterMonitor and enableSharding.\n"
                }
            },
            "type": "object",
            "required": [
                "database",
                "role"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getPSQLBackupsClusterBackup:getPSQLBackupsClusterBackup": {
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The unique ID of the cluster.\n\n\u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e must be provided. If it is not provided, the datasource will return an error.\n"
                },
                "earliestRecoveryTargetTime": {
                    "type": "string",
                    "description": "The oldest available timestamp to which you can restore.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique ID of the resource.\n"
                },
                "isActive": {
                    "type": "boolean",
                    "description": "Whether a cluster currently backs up data to this backup.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The IONOS Object Storage location where the backups will be stored.\n"
                },
                "metadatas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:dbaas/getPSQLBackupsClusterBackupMetadata:getPSQLBackupsClusterBackupMetadata"
                    },
                    "description": "Metadata of the resource.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of all base backups including the wal size in MB.\n"
                },
                "type": {
                    "type": "string"
                },
                "version": {
                    "type": "string",
                    "description": "The PostgreSQL version this backup was created from.\n"
                }
            },
            "type": "object",
            "required": [
                "clusterId",
                "earliestRecoveryTargetTime",
                "id",
                "isActive",
                "location",
                "metadatas",
                "size",
                "type",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getPSQLBackupsClusterBackupMetadata:getPSQLBackupsClusterBackupMetadata": {
            "properties": {
                "createdDate": {
                    "type": "string",
                    "description": "The ISO 8601 creation timestamp.\n"
                }
            },
            "type": "object",
            "required": [
                "createdDate"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getPSQLClusterConnection:getPSQLClusterConnection": {
            "properties": {
                "cidr": {
                    "type": "string",
                    "description": "The IP and subnet for the database.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "The datacenter to connect your cluster to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "The LAN to connect your cluster to.\n"
                }
            },
            "type": "object",
            "required": [
                "cidr",
                "datacenterId",
                "lanId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getPSQLClusterConnectionPooler:getPSQLClusterConnectionPooler": {
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "poolMode": {
                    "type": "string",
                    "description": "Represents different modes of connection pooling for the connection pooler.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "poolMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getPSQLClusterFromBackup:getPSQLClusterFromBackup": {
            "properties": {
                "backupId": {
                    "type": "string",
                    "description": "The PostgreSQL version of your cluster.\n"
                },
                "recoveryTargetTime": {
                    "type": "string",
                    "description": "If this value is supplied as ISO 8601 timestamp, the backup will be replayed up until the given timestamp.\n"
                }
            },
            "type": "object",
            "required": [
                "backupId",
                "recoveryTargetTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getPSQLClusterMaintenanceWindow:getPSQLClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string"
                },
                "time": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:dbaas/getPSQLDatabasesDatabase:getPSQLDatabasesDatabase": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "[string] The ID of the database.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the database.\n"
                },
                "owner": {
                    "type": "string",
                    "description": "[string] Filter using a specific owner.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name",
                "owner"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/GpuServerNic:GpuServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean",
                    "description": "Indicates whether this NIC receives an IPv6 address through DHCP.\n"
                },
                "firewall": {
                    "$ref": "#/types/ionoscloud:index/GpuServerNicFirewall:GpuServerNicFirewall",
                    "description": "Firewall rules created in the server resource. The rules can also be created as separate resources outside the server resource\n"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "IPv6 CIDR block assigned to the NIC.\n"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Collection for IPv6 addresses assigned to a nic. Explicitly assigned IPv6 addresses need to come from inside the IPv6 CIDR block assigned to the nic.\n"
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "lan"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceNumber",
                        "firewallType",
                        "id",
                        "ips",
                        "ipv6CidrBlock",
                        "ipv6Ips",
                        "lan",
                        "mac",
                        "pciSlot"
                    ]
                }
            }
        },
        "ionoscloud:index/GpuServerNicFirewall:GpuServerNicFirewall": {
            "properties": {
                "icmpCode": {
                    "type": "string"
                },
                "icmpType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "protocol",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:index/GpuServerVolume:GpuServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string"
                },
                "cpuHotPlug": {
                    "type": "boolean"
                },
                "deviceNumber": {
                    "type": "integer"
                },
                "discVirtioHotPlug": {
                    "type": "boolean"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean"
                },
                "diskType": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "[string] Sets the OS type of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nicHotPlug": {
                    "type": "boolean"
                },
                "nicHotUnplug": {
                    "type": "boolean"
                },
                "pciSlot": {
                    "type": "integer"
                },
                "ramHotPlug": {
                    "type": "boolean"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' that has cloud-init compatibility in conjunction with this property.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "availabilityZone",
                        "backupUnitId",
                        "bootServer",
                        "bus",
                        "cpuHotPlug",
                        "deviceNumber",
                        "discVirtioHotPlug",
                        "discVirtioHotUnplug",
                        "diskType",
                        "exposeSerial",
                        "licenceType",
                        "nicHotPlug",
                        "nicHotUnplug",
                        "pciSlot",
                        "ramHotPlug",
                        "requireLegacyBios",
                        "userData"
                    ]
                }
            }
        },
        "ionoscloud:index/getContractsContract:getContractsContract": {
            "properties": {
                "contractNumber": {
                    "type": "integer",
                    "description": "The contract number.\n"
                },
                "owner": {
                    "type": "string",
                    "description": "The contract owner's user name.\n"
                },
                "regDomain": {
                    "type": "string",
                    "description": "The registration domain of the contract.\n"
                },
                "resourceLimits": {
                    "$ref": "#/types/ionoscloud:index/getContractsContractResourceLimits:getContractsContractResourceLimits",
                    "description": "The resource limits of the contract.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The contract status.\n"
                }
            },
            "type": "object",
            "required": [
                "contractNumber",
                "owner",
                "regDomain",
                "resourceLimits",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getContractsContractResourceLimits:getContractsContractResourceLimits": {
            "properties": {
                "coresPerContract": {
                    "type": "integer",
                    "description": "The maximum number of cores per contract.\n"
                },
                "coresPerServer": {
                    "type": "integer",
                    "description": "The maximum number of cores per server.\n"
                },
                "coresProvisioned": {
                    "type": "integer",
                    "description": "The number of cores provisioned.\n"
                },
                "dasVolumeProvisioned": {
                    "type": "integer",
                    "description": "The DAS volume provisioned.\n"
                },
                "hddLimitPerContract": {
                    "type": "integer",
                    "description": "The HDD limit per contract.\n"
                },
                "hddLimitPerVolume": {
                    "type": "integer",
                    "description": "The HDD limit per volume.\n"
                },
                "hddVolumeProvisioned": {
                    "type": "integer",
                    "description": "The HDD volume provisioned.\n"
                },
                "k8sClusterLimitTotal": {
                    "type": "integer",
                    "description": "The total Kubernetes cluster limit.\n"
                },
                "k8sClustersProvisioned": {
                    "type": "integer",
                    "description": "The number of Kubernetes clusters provisioned.\n"
                },
                "natGatewayLimitTotal": {
                    "type": "integer",
                    "description": "The total NAT gateway limit.\n"
                },
                "natGatewayProvisioned": {
                    "type": "integer",
                    "description": "The number of NAT gateways provisioned.\n"
                },
                "nlbLimitTotal": {
                    "type": "integer",
                    "description": "The total NLB limit.\n"
                },
                "nlbProvisioned": {
                    "type": "integer",
                    "description": "The number of NLBs provisioned.\n"
                },
                "ramPerContract": {
                    "type": "integer",
                    "description": "The maximum RAM per contract in MB.\n"
                },
                "ramPerServer": {
                    "type": "integer",
                    "description": "The maximum RAM per server in MB.\n"
                },
                "ramProvisioned": {
                    "type": "integer",
                    "description": "The RAM provisioned.\n"
                },
                "reservableIps": {
                    "type": "integer",
                    "description": "The number of reservable IPs.\n"
                },
                "reservedIpsInUse": {
                    "type": "integer",
                    "description": "The number of reserved IPs in use.\n"
                },
                "reservedIpsOnContract": {
                    "type": "integer",
                    "description": "The number of reserved IPs on the contract.\n"
                },
                "rulesPerSecurityGroup": {
                    "type": "integer",
                    "description": "The number of rules per security group.\n"
                },
                "securityGroupsPerResource": {
                    "type": "integer",
                    "description": "The number of security groups per resource.\n"
                },
                "securityGroupsPerVdc": {
                    "type": "integer",
                    "description": "The number of security groups per VDC.\n"
                },
                "ssdLimitPerContract": {
                    "type": "integer",
                    "description": "The SSD limit per contract.\n"
                },
                "ssdLimitPerVolume": {
                    "type": "integer",
                    "description": "The SSD limit per volume.\n"
                },
                "ssdVolumeProvisioned": {
                    "type": "integer",
                    "description": "The SSD volume provisioned.\n"
                }
            },
            "type": "object",
            "required": [
                "coresPerContract",
                "coresPerServer",
                "coresProvisioned",
                "dasVolumeProvisioned",
                "hddLimitPerContract",
                "hddLimitPerVolume",
                "hddVolumeProvisioned",
                "k8sClusterLimitTotal",
                "k8sClustersProvisioned",
                "natGatewayLimitTotal",
                "natGatewayProvisioned",
                "nlbLimitTotal",
                "nlbProvisioned",
                "ramPerContract",
                "ramPerServer",
                "ramProvisioned",
                "reservableIps",
                "reservedIpsInUse",
                "reservedIpsOnContract",
                "rulesPerSecurityGroup",
                "securityGroupsPerResource",
                "securityGroupsPerVdc",
                "ssdLimitPerContract",
                "ssdLimitPerVolume",
                "ssdVolumeProvisioned"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getDnsReverseRecordsReverseRecord:getDnsReverseRecordsReverseRecord": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description stored along with the reverse DNS record to describe its usage.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The UUID of the DNS Reverse Record.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "Specifies for which IP address the reverse record should be created. The IP addresses needs to be owned by the contract.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the DNS Reverse Record you want to search for.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getGpuServerCdrom:getGpuServerCdrom": {
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Cloud init compatibility\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "cpuHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot unplug (no reboot required)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of cdrom\n"
                },
                "discScsiHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot plug (no reboot required)\n"
                },
                "discScsiHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot unplug (no reboot required)\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageAliases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of image aliases mapped for this Image\n"
                },
                "imageType": {
                    "type": "string",
                    "description": "Type of image\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of that image/snapshot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Indicates if the image is part of the public repository or not\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "ramHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot unplug (no reboot required)\n"
                },
                "size": {
                    "type": "number",
                    "description": "The size of the image in GB\n"
                }
            },
            "type": "object",
            "required": [
                "cloudInit",
                "cpuHotPlug",
                "cpuHotUnplug",
                "description",
                "discScsiHotPlug",
                "discScsiHotUnplug",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageAliases",
                "imageType",
                "licenceType",
                "location",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "public",
                "ramHotPlug",
                "ramHotUnplug",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getGpuServerNic:getGpuServerNic": {
            "properties": {
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number of the storage volume\n"
                },
                "dhcp": {
                    "type": "boolean"
                },
                "dhcpv6": {
                    "type": "boolean"
                },
                "firewallActive": {
                    "type": "boolean"
                },
                "firewallRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:index/getGpuServerNicFirewallRule:getGpuServerNicFirewallRule"
                    }
                },
                "firewallType": {
                    "type": "string"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "ipv6CidrBlock": {
                    "type": "string"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "lan": {
                    "type": "integer"
                },
                "mac": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the storage volume\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "deviceNumber",
                "dhcp",
                "firewallActive",
                "firewallRules",
                "firewallType",
                "id",
                "ips",
                "ipv6CidrBlock",
                "ipv6Ips",
                "lan",
                "mac",
                "name",
                "pciSlot",
                "securityGroupsIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getGpuServerNicFirewallRule:getGpuServerNicFirewallRule": {
            "properties": {
                "icmpCode": {
                    "type": "integer"
                },
                "icmpType": {
                    "type": "integer"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "description": "Hardware type of the volume.\n"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "id",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getGpuServerVolume:getGpuServerVolume": {
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "The availability zone in which the volume should exist\n"
                },
                "backupUnitId": {
                    "type": "string"
                },
                "bootServer": {
                    "type": "string",
                    "description": "The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "The bus type of the volume\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot plug (no reboot required)\n"
                },
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number of the storage volume\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "imageName": {
                    "type": "string"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "Initial password to be set for installed OS\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "OS type of this volume\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing server that you want to search for.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of nic hot unplug (no reboot required)\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the storage volume\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot plug (no reboot required)\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key\n"
                },
                "type": {
                    "type": "string",
                    "description": "Hardware type of the volume.\n"
                },
                "userData": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "availabilityZone",
                "backupUnitId",
                "bootServer",
                "bus",
                "cpuHotPlug",
                "deviceNumber",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "id",
                "imageName",
                "imagePassword",
                "licenceType",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "pciSlot",
                "ramHotPlug",
                "requireLegacyBios",
                "sshKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getGpusGpus:getGpusGpus": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The id of the GPU.\n"
                },
                "model": {
                    "type": "string",
                    "description": "The model of the GPU.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the GPU.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the GPU.\n"
                },
                "vendor": {
                    "type": "string",
                    "description": "The vendor of the GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "model",
                "name",
                "type",
                "vendor"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:index/getKafkaUserCredentialsTimeouts:getKafkaUserCredentialsTimeouts": {
            "properties": {
                "read": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:index/getKafkaUsersTimeouts:getKafkaUsersTimeouts": {
            "properties": {
                "read": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:index/getKafkaUsersUser:getKafkaUsersUser": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "the ID of the user;\n"
                },
                "username": {
                    "type": "string",
                    "description": "the name of the user;\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "username"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/ClusterMaintenanceWindow:ClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] Day of the week when maintenance is allowed\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] A clock time in the day when maintenance is allowed\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:k8s/ClusterS3Bucket:ClusterS3Bucket": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Kubernetes Cluster.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:k8s/NodePoolAutoScaling:NodePoolAutoScaling": {
            "properties": {
                "maxNodeCount": {
                    "type": "integer",
                    "description": "[int] The maximum number of worker nodes that the node pool can scale to. Should be greater than min_node_count\n"
                },
                "minNodeCount": {
                    "type": "integer",
                    "description": "[int] The minimum number of worker nodes the node pool can scale down to. Should be less than max_node_count\n"
                }
            },
            "type": "object",
            "required": [
                "maxNodeCount",
                "minNodeCount"
            ]
        },
        "ionoscloud:k8s/NodePoolLan:NodePoolLan": {
            "properties": {
                "dhcp": {
                    "type": "boolean",
                    "description": "[boolean] Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP. Default value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"
                },
                "id": {
                    "type": "integer",
                    "description": "[int] The LAN ID of an existing LAN at the related datacenter\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/NodePoolLanRoute:NodePoolLanRoute"
                    },
                    "description": "An array of additional LANs attached to worker nodes\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "ionoscloud:k8s/NodePoolLanRoute:NodePoolLanRoute": {
            "properties": {
                "gatewayIp": {
                    "type": "string",
                    "description": "[string] IPv4 or IPv6 Gateway IP for the route\n"
                },
                "network": {
                    "type": "string",
                    "description": "[string] IPv4 or IPv6 CIDR to be routed via the interface\n"
                }
            },
            "type": "object",
            "required": [
                "gatewayIp",
                "network"
            ]
        },
        "ionoscloud:k8s/NodePoolMaintenanceWindow:NodePoolMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] Day of the week when maintenance is allowed\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] A clock time in the day when maintenance is allowed\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:k8s/getClusterConfig:getClusterConfig": {
            "properties": {
                "apiVersion": {
                    "type": "string",
                    "secret": true
                },
                "clusters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClusterConfigCluster:getClusterConfigCluster"
                    }
                },
                "contexts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClusterConfigContext:getClusterConfigContext"
                    }
                },
                "currentContext": {
                    "type": "string",
                    "secret": true
                },
                "kind": {
                    "type": "string"
                },
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClusterConfigUser:getClusterConfigUser"
                    }
                }
            },
            "type": "object",
            "required": [
                "apiVersion",
                "clusters",
                "contexts",
                "currentContext",
                "kind",
                "users"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClusterConfigCluster:getClusterConfigCluster": {
            "properties": {
                "cluster": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing cluster that you want to search for.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "cluster",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClusterConfigContext:getClusterConfigContext": {
            "properties": {
                "context": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing cluster that you want to search for.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "context",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClusterConfigUser:getClusterConfigUser": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of an existing cluster that you want to search for.\n",
                    "secret": true
                },
                "user": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "name",
                "user"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClusterMaintenanceWindow:getClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "Day of the week when maintenance is allowed\n"
                },
                "time": {
                    "type": "string",
                    "description": "A clock time in the day when maintenance is allowed\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClusterS3Bucket:getClusterS3Bucket": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of an existing cluster that you want to search for.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersCluster:getClustersCluster": {
            "properties": {
                "apiSubnetAllowLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Access to the K8s API server is restricted to these CIDRs. Cluster-internal traffic is not affected by this restriction. If no allowlist is specified, access is not restricted. If an IP without subnet mask is provided, the default value will be used: 32 for IPv4 and 128 for IPv6.\n"
                },
                "availableUpgradeVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of available versions for upgrading the cluster\n"
                },
                "caCrt": {
                    "type": "string",
                    "secret": true
                },
                "configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClustersClusterConfig:getClustersClusterConfig"
                    },
                    "secret": true
                },
                "id": {
                    "type": "string"
                },
                "k8sVersion": {
                    "type": "string"
                },
                "kubeConfig": {
                    "type": "string"
                },
                "location": {
                    "type": "string"
                },
                "maintenanceWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClustersClusterMaintenanceWindow:getClustersClusterMaintenanceWindow"
                    },
                    "description": "A maintenance window comprise of a day of the week and a time for maintenance to be allowed\n"
                },
                "name": {
                    "type": "string"
                },
                "natGatewayIp": {
                    "type": "string",
                    "description": "The NAT gateway IP of the cluster if the cluster is private.\n"
                },
                "nodePools": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "nodeSubnet": {
                    "type": "string",
                    "description": "The node subnet of the cluster, if the cluster is private.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "The indicator if the cluster is public or private.\n"
                },
                "s3Buckets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClustersClusterS3Bucket:getClustersClusterS3Bucket"
                    },
                    "description": "List of Object Storage bucket configured for K8s usage. For now it contains only an Object Storage bucket used to store K8s API audit logs.\n"
                },
                "server": {
                    "type": "string",
                    "secret": true
                },
                "state": {
                    "type": "string"
                },
                "userTokens": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "secret": true
                },
                "viableNodePoolVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of versions that may be used for node pools under this cluster\n"
                }
            },
            "type": "object",
            "required": [
                "apiSubnetAllowLists",
                "availableUpgradeVersions",
                "caCrt",
                "configs",
                "id",
                "k8sVersion",
                "kubeConfig",
                "location",
                "maintenanceWindows",
                "name",
                "natGatewayIp",
                "nodePools",
                "nodeSubnet",
                "public",
                "s3Buckets",
                "server",
                "state",
                "userTokens",
                "viableNodePoolVersions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersClusterConfig:getClustersClusterConfig": {
            "properties": {
                "apiVersion": {
                    "type": "string",
                    "secret": true
                },
                "clusters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClustersClusterConfigCluster:getClustersClusterConfigCluster"
                    },
                    "description": "list of Kubernetes clusters that match the provided filters. The elements of this list are structurally identical to the \u003cspan pulumi-lang-nodejs=\"`k8sCluster`\" pulumi-lang-dotnet=\"`K8sCluster`\" pulumi-lang-go=\"`k8sCluster`\" pulumi-lang-python=\"`k8s_cluster`\" pulumi-lang-yaml=\"`k8sCluster`\" pulumi-lang-java=\"`k8sCluster`\"\u003e`k8sCluster`\u003c/span\u003e datasource, which is limited to retrieving only 1 cluster in a single query.\n"
                },
                "contexts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClustersClusterConfigContext:getClustersClusterConfigContext"
                    }
                },
                "currentContext": {
                    "type": "string",
                    "secret": true
                },
                "kind": {
                    "type": "string"
                },
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getClustersClusterConfigUser:getClustersClusterConfigUser"
                    }
                }
            },
            "type": "object",
            "required": [
                "apiVersion",
                "clusters",
                "contexts",
                "currentContext",
                "kind",
                "users"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersClusterConfigCluster:getClustersClusterConfigCluster": {
            "properties": {
                "cluster": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "cluster",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersClusterConfigContext:getClustersClusterConfigContext": {
            "properties": {
                "context": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "context",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersClusterConfigUser:getClustersClusterConfigUser": {
            "properties": {
                "name": {
                    "type": "string",
                    "secret": true
                },
                "user": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "name",
                "user"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersClusterMaintenanceWindow:getClustersClusterMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "Day of the week when maintenance is allowed\n"
                },
                "time": {
                    "type": "string",
                    "description": "A clock time in the day when maintenance is allowed\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersClusterS3Bucket:getClustersClusterS3Bucket": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the Object Storage bucket\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getClustersFilter:getClustersFilter": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ]
        },
        "ionoscloud:k8s/getNodePoolAutoScaling:getNodePoolAutoScaling": {
            "properties": {
                "maxNodeCount": {
                    "type": "integer",
                    "description": "The maximum number of worker nodes that the node pool can scale to\n"
                },
                "minNodeCount": {
                    "type": "integer",
                    "description": "The minimum number of worker nodes the node pool can scale down to\n"
                }
            },
            "type": "object",
            "required": [
                "maxNodeCount",
                "minNodeCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getNodePoolLan:getNodePoolLan": {
            "properties": {
                "dhcp": {
                    "type": "boolean",
                    "description": "Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP\n"
                },
                "id": {
                    "type": "integer",
                    "description": "ID of the node pool you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`k8sClusterId`\" pulumi-lang-dotnet=\"`K8sClusterId`\" pulumi-lang-go=\"`k8sClusterId`\" pulumi-lang-python=\"`k8s_cluster_id`\" pulumi-lang-yaml=\"`k8sClusterId`\" pulumi-lang-java=\"`k8sClusterId`\"\u003e`k8sClusterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/getNodePoolLanRoute:getNodePoolLanRoute"
                    },
                    "description": "An array of additional LANs attached to worker nodes\n"
                }
            },
            "type": "object",
            "required": [
                "dhcp",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getNodePoolLanRoute:getNodePoolLanRoute": {
            "properties": {
                "gatewayIp": {
                    "type": "string",
                    "description": "IPv4 or IPv6 Gateway IP for the route\n"
                },
                "network": {
                    "type": "string",
                    "description": "IPv4 or IPv6 CIDR to be routed via the interface\n"
                }
            },
            "type": "object",
            "required": [
                "gatewayIp",
                "network"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getNodePoolMaintenanceWindow:getNodePoolMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "Day of the week when maintenance is allowed\n"
                },
                "time": {
                    "type": "string",
                    "description": "A clock time in the day when maintenance is allowed\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:k8s/getNodePoolNodesNode:getNodePoolNodesNode": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the node pool you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`k8sClusterId`\" pulumi-lang-dotnet=\"`K8sClusterId`\" pulumi-lang-go=\"`k8sClusterId`\" pulumi-lang-python=\"`k8s_cluster_id`\" pulumi-lang-yaml=\"`k8sClusterId`\" pulumi-lang-java=\"`k8sClusterId`\"\u003e`k8sClusterId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`nodePoolId`\" pulumi-lang-dotnet=\"`NodePoolId`\" pulumi-lang-go=\"`nodePoolId`\" pulumi-lang-python=\"`node_pool_id`\" pulumi-lang-yaml=\"`nodePoolId`\" pulumi-lang-java=\"`nodePoolId`\"\u003e`nodePoolId`\u003c/span\u003e must be provided.\n"
                },
                "k8sVersion": {
                    "type": "string",
                    "description": "The kubernetes version\n"
                },
                "name": {
                    "type": "string",
                    "description": "name of the node\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "private ip of the node. Only present if the k8s cluster is private.\n"
                },
                "publicIp": {
                    "type": "string",
                    "description": "public ip of the node. Only present if the k8s cluster is public\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "k8sVersion",
                "name",
                "privateIp",
                "publicIp"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:kafka/ClusterConnections:ClusterConnections": {
            "properties": {
                "brokerAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] IP addresses and subnet of cluster brokers. **Note** the following\nunavailable IP range: 10.224.0.0/11\n",
                    "willReplaceOnChanges": true
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The datacenter to connect your instance to.\n",
                    "willReplaceOnChanges": true
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The numeric LAN ID to connect your instance to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "brokerAddresses",
                "datacenterId",
                "lanId"
            ]
        },
        "ionoscloud:kafka/getClusterConnection:getClusterConnection": {
            "properties": {
                "brokerAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IP address and port of cluster brokers.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "The datacenter that your instance is connected to.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "The numeric LAN ID your instance is connected to.\n"
                }
            },
            "type": "object",
            "required": [
                "brokerAddresses",
                "datacenterId",
                "lanId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:logging/PipelineLog:PipelineLog": {
            "properties": {
                "destinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:logging/PipelineLogDestination:PipelineLogDestination"
                    },
                    "description": "[list] The configuration of the logs datastore, a list that contains elements with the following structure:\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] \"Protocol to use as intake. Possible values are: http, tcp.\"\n"
                },
                "public": {
                    "type": "boolean"
                },
                "source": {
                    "type": "string",
                    "description": "[string] The source parser to be used.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "[string] The tag is used to distinguish different pipelines. Must be unique amongst the pipeline's array items.\n"
                }
            },
            "type": "object",
            "required": [
                "protocol",
                "source",
                "tag"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destinations",
                        "protocol",
                        "public",
                        "source",
                        "tag"
                    ]
                }
            }
        },
        "ionoscloud:logging/PipelineLogDestination:PipelineLogDestination": {
            "properties": {
                "retentionInDays": {
                    "type": "integer",
                    "description": "[int] Defines the number of days a log record should be kept in loki. Works with loki destination type only. Can be one of: 7, 14, 30.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] The internal output stream to send logs to.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "retentionInDays",
                        "type"
                    ]
                }
            }
        },
        "ionoscloud:logging/getPipelineLog:getPipelineLog": {
            "properties": {
                "destinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:logging/getPipelineLogDestination:getPipelineLogDestination"
                    },
                    "description": "[list] The configuration of the logs datastore, a list that contains elements with the following structure:\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] \"Protocol to use as intake. Possible values are: http, tcp.\"\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "[bool]\n"
                },
                "source": {
                    "type": "string",
                    "description": "[string] The source parser to be used.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "[string] The tag is used to distinguish different pipelines. Must be unique amongst the pipeline's array items.\n"
                }
            },
            "type": "object",
            "required": [
                "destinations",
                "protocol",
                "public",
                "source",
                "tag"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:logging/getPipelineLogDestination:getPipelineLogDestination": {
            "properties": {
                "retentionInDays": {
                    "type": "integer",
                    "description": "[int] Defines the number of days a log record should be kept in loki. Works with loki destination type only.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] The internal output stream to send logs to.\n"
                }
            },
            "type": "object",
            "required": [
                "retentionInDays",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:monitoring/PipelineTimeouts:PipelineTimeouts": {
            "properties": {
                "create": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
                },
                "delete": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
                },
                "read": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
                },
                "update": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:nfs/ClusterConnections:ClusterConnections": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "The ID of the datacenter where the Network File Storage cluster is located.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address and prefix of the Network File Storage cluster. The IP address can be either IPv4 or IPv6. The IP address has to be given with CIDR notation.\n"
                },
                "lan": {
                    "type": "string",
                    "description": "The Private LAN to which the Network File Storage cluster must be connected.\n-\n\u003e **⚠ NOTE:** `IONOS_API_URL_NFS` can be used to set a custom API URL for the resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "ipAddress",
                "lan"
            ]
        },
        "ionoscloud:nfs/ClusterNfs:ClusterNfs": {
            "properties": {
                "minVersion": {
                    "type": "string",
                    "description": "The minimum supported version of the NFS cluster. Supported values: `4.2`. Default is `4.2`.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:nfs/ShareClientGroup:ShareClientGroup": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Optional description for the clients groups.\n"
                },
                "hosts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A singular host allowed to connect to the share. The host can be specified as IP address and can be either IPv4 or IPv6.\n"
                },
                "ipNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The allowed host or network to which the export is being shared. The IP address can be either IPv4 or IPv6 and has to be given with CIDR notation.\n"
                },
                "nfs": {
                    "$ref": "#/types/ionoscloud:nfs/ShareClientGroupNfs:ShareClientGroupNfs",
                    "description": "NFS specific configurations. Each configuration includes:\n"
                }
            },
            "type": "object",
            "required": [
                "hosts",
                "ipNetworks"
            ]
        },
        "ionoscloud:nfs/ShareClientGroupNfs:ShareClientGroupNfs": {
            "properties": {
                "squash": {
                    "type": "string",
                    "description": "The squash mode for the export. The squash mode can be:\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:nfs/getClusterConnection:getClusterConnection": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "The ID of the datacenter where the Network File Storage cluster is located.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address and prefix of the Network File Storage cluster. The IP address can be either IPv4 or IPv6. The IP address has to be given with CIDR notation.\n"
                },
                "lan": {
                    "type": "string",
                    "description": "The Private LAN to which the Network File Storage cluster must be connected.\n"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "ipAddress",
                "lan"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nfs/getClusterNf:getClusterNf": {
            "properties": {
                "minVersion": {
                    "type": "string",
                    "description": "The minimum supported version of the NFS cluster. Default is `4.2`\n"
                }
            },
            "type": "object",
            "required": [
                "minVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nfs/getShareClientGroup:getShareClientGroup": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Optional description for the clients groups.\n"
                },
                "hosts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A singular host allowed to connect to the share. The host can be specified as IP address and can be either IPv4 or IPv6.\n"
                },
                "ipNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The allowed host or network to which the export is being shared. The IP address can be either IPv4 or IPv6 and has to be given with CIDR notation.\n"
                },
                "nfs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:nfs/getShareClientGroupNf:getShareClientGroupNf"
                    },
                    "description": "The NFS configuration for the client group. Each NFS configuration supports the following:\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "hosts",
                "ipNetworks",
                "nfs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nfs/getShareClientGroupNf:getShareClientGroupNf": {
            "properties": {
                "squash": {
                    "type": "string",
                    "description": "The squash mode for the export. The squash mode can be: none - No squash mode. no mapping, root-anonymous - Map root user to anonymous uid, all-anonymous - Map all users to anonymous uid.\n"
                }
            },
            "type": "object",
            "required": [
                "squash"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nlb/BalancerFlowlog:BalancerFlowlog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "[string] Specifies the action to be taken when the rule is matched. Possible values: ACCEPTED, REJECTED, ALL. Immutable, forces re-creation.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "[string] Specifies the IONOS Object Storage bucket where the flow log data will be stored. The bucket must exist. Immutable, forces re-creation.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "[string] Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL. Immutable, forces re-creation.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The resource's unique identifier.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] Specifies the name of the flow log.\n\n⚠️ **Note:** Removing the \u003cspan pulumi-lang-nodejs=\"`flowlog`\" pulumi-lang-dotnet=\"`Flowlog`\" pulumi-lang-go=\"`flowlog`\" pulumi-lang-python=\"`flowlog`\" pulumi-lang-yaml=\"`flowlog`\" pulumi-lang-java=\"`flowlog`\"\u003e`flowlog`\u003c/span\u003e forces re-creation of the network load balancer resource.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "bucket",
                        "direction",
                        "id",
                        "name"
                    ]
                }
            }
        },
        "ionoscloud:nlb/ForwardingRuleHealthCheck:ForwardingRuleHealthCheck": {
            "properties": {
                "clientTimeout": {
                    "type": "integer",
                    "description": "[int] ClientTimeout is expressed in milliseconds. This inactivity timeout applies when the client is expected to acknowledge or send data. If unset the default of 50 seconds will be used.\n"
                },
                "connectTimeout": {
                    "type": "integer",
                    "description": "[int] It specifies the maximum time (in milliseconds) to wait for a connection attempt to a target VM to succeed. If unset, the default of 5 seconds will be used.\n"
                },
                "retries": {
                    "type": "integer",
                    "description": "[int] Retries specifies the number of retries to perform on a target VM after a connection failure. If unset, the default value of 3 will be used.\n"
                },
                "targetTimeout": {
                    "type": "integer",
                    "description": "[int] TargetTimeout specifies the maximum inactivity time (in milliseconds) on the target VM side. If unset, the default of 50 seconds will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientTimeout",
                        "connectTimeout",
                        "retries",
                        "targetTimeout"
                    ]
                }
            }
        },
        "ionoscloud:nlb/ForwardingRuleTarget:ForwardingRuleTarget": {
            "properties": {
                "healthCheck": {
                    "$ref": "#/types/ionoscloud:nlb/ForwardingRuleTargetHealthCheck:ForwardingRuleTargetHealthCheck",
                    "description": "Health check attributes for Network Load Balancer forwarding rule target.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "[string] IP of a balanced target VM.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "[int] Port of the balanced target service. (range: 1 to 65535).\n"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "[string] The proxy protocol version. Accepted values are \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`v1`\" pulumi-lang-dotnet=\"`V1`\" pulumi-lang-go=\"`v1`\" pulumi-lang-python=\"`v1`\" pulumi-lang-yaml=\"`v1`\" pulumi-lang-java=\"`v1`\"\u003e`v1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`v2`\" pulumi-lang-dotnet=\"`V2`\" pulumi-lang-go=\"`v2`\" pulumi-lang-python=\"`v2`\" pulumi-lang-yaml=\"`v2`\" pulumi-lang-java=\"`v2`\"\u003e`v2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`v2ssl`\" pulumi-lang-dotnet=\"`V2ssl`\" pulumi-lang-go=\"`v2ssl`\" pulumi-lang-python=\"`v2ssl`\" pulumi-lang-yaml=\"`v2ssl`\" pulumi-lang-java=\"`v2ssl`\"\u003e`v2ssl`\u003c/span\u003e. If unspecified, the default value of \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e is used.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "[int] Weight parameter is used to adjust the target VM's weight relative to other target VMs.\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "port",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "healthCheck",
                        "ip",
                        "port",
                        "weight"
                    ]
                }
            }
        },
        "ionoscloud:nlb/ForwardingRuleTargetHealthCheck:ForwardingRuleTargetHealthCheck": {
            "properties": {
                "check": {
                    "type": "boolean",
                    "description": "[boolean] Check specifies whether the target VM's health is checked.\n"
                },
                "checkInterval": {
                    "type": "integer",
                    "description": "[int] CheckInterval determines the duration (in milliseconds) between consecutive health checks. If unspecified a default of 2000 ms is used.\n"
                },
                "maintenance": {
                    "type": "boolean",
                    "description": "[boolean] Maintenance specifies if a target VM should be marked as down, even if it is not.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "check",
                        "checkInterval",
                        "maintenance"
                    ]
                }
            }
        },
        "ionoscloud:nlb/getBalancerFlowlog:getBalancerFlowlog": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Specifies the action to be taken when the rule is matched. Possible values: ACCEPTED, REJECTED, ALL. Immutable, forces re-creation.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "Specifies the IONOS Object Storage bucket where the flow log data will be stored. The bucket must exist. Immutable, forces re-creation.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "Specifies the traffic direction pattern. Valid values: INGRESS, EGRESS, BIDIRECTIONAL. Immutable, forces re-creation.\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the network load balancer you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing network load balancer that you want to search for.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "bucket",
                "direction",
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nlb/getForwardingRuleHealthCheck:getForwardingRuleHealthCheck": {
            "properties": {
                "clientTimeout": {
                    "type": "integer",
                    "description": "ClientTimeout is expressed in milliseconds. This inactivity timeout applies when the client is expected to acknowledge or send data. If unset the default of 50 seconds will be used.\n"
                },
                "connectTimeout": {
                    "type": "integer",
                    "description": "It specifies the maximum time (in milliseconds) to wait for a connection attempt to a target VM to succeed. If unset, the default of 5 seconds will be used.\n"
                },
                "retries": {
                    "type": "integer",
                    "description": "Retries specifies the number of retries to perform on a target VM after a connection failure. If unset, the default value of 3 will be used.\n"
                },
                "targetTimeout": {
                    "type": "integer",
                    "description": "TargetTimeout specifies the maximum inactivity time (in milliseconds) on the target VM side. If unset, the default of 50 seconds will be used.\n"
                }
            },
            "type": "object",
            "required": [
                "clientTimeout",
                "connectTimeout",
                "retries",
                "targetTimeout"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nlb/getForwardingRuleTarget:getForwardingRuleTarget": {
            "properties": {
                "healthChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:nlb/getForwardingRuleTargetHealthCheck:getForwardingRuleTargetHealthCheck"
                    },
                    "description": "Health check attributes for Network Load Balancer forwarding rule target.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IP of a balanced target VM.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port of the balanced target service. (range: 1 to 65535).\n"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "The proxy protocol version.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Weight parameter is used to adjust the target VM's weight relative to other target VMs.\n"
                }
            },
            "type": "object",
            "required": [
                "healthChecks",
                "ip",
                "port",
                "proxyProtocol",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nlb/getForwardingRuleTargetHealthCheck:getForwardingRuleTargetHealthCheck": {
            "properties": {
                "check": {
                    "type": "boolean",
                    "description": "Check specifies whether the target VM's health is checked.\n"
                },
                "checkInterval": {
                    "type": "integer",
                    "description": "CheckInterval determines the duration (in milliseconds) between consecutive health checks. If unspecified a default of 2000 ms is used.\n"
                },
                "maintenance": {
                    "type": "boolean",
                    "description": "Maintenance specifies if a target VM should be marked as down, even if it is not.\n"
                }
            },
            "type": "object",
            "required": [
                "check",
                "checkInterval",
                "maintenance"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:nsg/getNsgRule:getNsgRule": {
            "properties": {
                "icmpCode": {
                    "type": "string"
                },
                "icmpType": {
                    "type": "string"
                },
                "id": {
                    "type": "string",
                    "description": "Id of an existing Network Security Group that you want to search for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of an existing Network Security Group that you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, the datasource will return an error.\n"
                },
                "portRangeEnd": {
                    "type": "integer"
                },
                "portRangeStart": {
                    "type": "integer"
                },
                "protocol": {
                    "type": "string"
                },
                "sourceIp": {
                    "type": "string"
                },
                "sourceMac": {
                    "type": "string"
                },
                "targetIp": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "icmpCode",
                "icmpType",
                "id",
                "name",
                "portRangeEnd",
                "portRangeStart",
                "protocol",
                "sourceIp",
                "sourceMac",
                "targetIp",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:objectstorage/BucketLifecycleConfigurationRule:BucketLifecycleConfigurationRule": {
            "properties": {
                "abortIncompleteMultipartUpload": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketLifecycleConfigurationRuleAbortIncompleteMultipartUpload:BucketLifecycleConfigurationRuleAbortIncompleteMultipartUpload",
                    "description": "Specifies the days since the initiation of an incomplete multipart upload that IONOS Object Storage Object Storage will wait before permanently removing all parts of the upload.\n"
                },
                "expiration": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketLifecycleConfigurationRuleExpiration:BucketLifecycleConfigurationRuleExpiration",
                    "description": "A lifecycle rule for when an object expires.\n"
                },
                "filter": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketLifecycleConfigurationRuleFilter:BucketLifecycleConfigurationRuleFilter",
                    "description": "A filter.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier for the rule.\n"
                },
                "noncurrentVersionExpiration": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketLifecycleConfigurationRuleNoncurrentVersionExpiration:BucketLifecycleConfigurationRuleNoncurrentVersionExpiration",
                    "description": "A lifecycle rule for when non-current object versions expire.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "Object key prefix identifying one or more objects to which the rule applies.\n",
                    "deprecationMessage": "This field is deprecated and will be removed in a future version. It does nothing. Use 'filter' block instead."
                },
                "status": {
                    "type": "string",
                    "description": "Whether the rule is currently being applied. Valid values: Enabled or Disabled.\n"
                }
            },
            "type": "object",
            "required": [
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "status"
                    ]
                }
            }
        },
        "ionoscloud:objectstorage/BucketLifecycleConfigurationRuleAbortIncompleteMultipartUpload:BucketLifecycleConfigurationRuleAbortIncompleteMultipartUpload": {
            "properties": {
                "daysAfterInitiation": {
                    "type": "integer",
                    "description": "Specifies the number of days after which IONOS Object Storage Object Storage aborts an incomplete multipart upload.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/BucketLifecycleConfigurationRuleExpiration:BucketLifecycleConfigurationRuleExpiration": {
            "properties": {
                "date": {
                    "type": "string",
                    "description": "Specifies the date when the object expires. Required if 'days' is not specified.\n"
                },
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the object expires. Required if 'date' is not specified.\n"
                },
                "expiredObjectDeleteMarker": {
                    "type": "boolean",
                    "description": "Indicates whether IONOS Object Storage Object Storage will remove a delete marker with no noncurrent versions. If set to true, the delete marker will be expired; if set to false the policy takes no operation. This cannot be specified with Days or Date in a Lifecycle Expiration Policy.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/BucketLifecycleConfigurationRuleFilter:BucketLifecycleConfigurationRuleFilter": {
            "properties": {
                "prefix": {
                    "type": "string",
                    "description": "Object key prefix identifying one or more objects to which the rule applies.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/BucketLifecycleConfigurationRuleNoncurrentVersionExpiration:BucketLifecycleConfigurationRuleNoncurrentVersionExpiration": {
            "properties": {
                "noncurrentDays": {
                    "type": "integer",
                    "description": "Specifies the number of days an object is noncurrent before IONOS Object Storage can perform the associated action.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/BucketServerSideEncryptionConfigurationRule:BucketServerSideEncryptionConfigurationRule": {
            "properties": {
                "applyServerSideEncryptionByDefault": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault:BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault",
                    "description": "[block] Defines the default encryption settings.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault:BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault": {
            "properties": {
                "sseAlgorithm": {
                    "type": "string",
                    "description": "[string] Server-side encryption algorithm to use. Valid values are 'AES256'\n"
                }
            },
            "type": "object",
            "required": [
                "sseAlgorithm"
            ]
        },
        "ionoscloud:objectstorage/BucketTimeouts:BucketTimeouts": {
            "properties": {
                "create": {
                    "type": "string",
                    "description": "[string] Time to wait for the bucket to be created. Default is \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e.\n"
                },
                "delete": {
                    "type": "string",
                    "description": "[string] Time to wait for the bucket to be deleted. Default is \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e.\n"
                },
                "read": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
                },
                "update": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/BucketVersioningVersioningConfiguration:BucketVersioningVersioningConfiguration": {
            "properties": {
                "mfaDelete": {
                    "type": "string",
                    "description": "[string] Specifies whether MFA delete is enabled or not. Can be `Enabled` or `Disabled`.\n"
                },
                "status": {
                    "type": "string",
                    "description": "[string] The versioning state of the bucket. Can be `Enabled` or `Suspended`.\n"
                }
            },
            "type": "object",
            "required": [
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "mfaDelete",
                        "status"
                    ]
                }
            }
        },
        "ionoscloud:objectstorage/CorsConfigurationCorsRule:CorsConfigurationCorsRule": {
            "properties": {
                "allowedHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Specifies which headers are allowed in a preflight OPTIONS request through the Access-Control-Request-Headers header\n"
                },
                "allowedMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] An HTTP method that you allow the origin to execute. Valid values are GET, PUT, HEAD, POST, DELETE.\n"
                },
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Specifies which origins are allowed to make requests to the resource.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Specifies which headers are exposed to the browser.\n"
                },
                "id": {
                    "type": "integer",
                    "description": "[int] Container for the Contract Number of the owner\n\nDays and years are mutually exclusive. You can only specify one of them.\n"
                },
                "maxAgeSeconds": {
                    "type": "integer",
                    "description": "[int] Specifies how long the results of a pre-flight request can be cached in seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedMethods",
                "allowedOrigins"
            ]
        },
        "ionoscloud:objectstorage/ObjectLockConfigurationRule:ObjectLockConfigurationRule": {
            "properties": {
                "defaultRetention": {
                    "$ref": "#/types/ionoscloud:objectstorage/ObjectLockConfigurationRuleDefaultRetention:ObjectLockConfigurationRuleDefaultRetention",
                    "description": "[block] A block of\u003cspan pulumi-lang-nodejs=\" defaultRetention \" pulumi-lang-dotnet=\" DefaultRetention \" pulumi-lang-go=\" defaultRetention \" pulumi-lang-python=\" default_retention \" pulumi-lang-yaml=\" defaultRetention \" pulumi-lang-java=\" defaultRetention \"\u003e defaultRetention \u003c/span\u003eas defined below.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/ObjectLockConfigurationRuleDefaultRetention:ObjectLockConfigurationRuleDefaultRetention": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "[int] The default retention period of the bucket in days.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "[string] The default retention mode of the bucket. Can be `GOVERNANCE` or `COMPLIANCE`.\n"
                },
                "years": {
                    "type": "integer",
                    "description": "[int] The default retention period of the bucket in years.\n\nDays and years are mutually exclusive. You can only specify one of them.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/WebsiteConfigurationErrorDocument:WebsiteConfigurationErrorDocument": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The object key\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/WebsiteConfigurationIndexDocument:WebsiteConfigurationIndexDocument": {
            "properties": {
                "suffix": {
                    "type": "string",
                    "description": "A suffix that is appended to a request that is for a directory on the website endpoint (for example, if the suffix is index.html and you make a request to samplebucket/images/ the data that is returned will be for the object with the key name images/index.html) The suffix must not be empty and must not include a slash character. Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/WebsiteConfigurationRedirectAllRequestsTo:WebsiteConfigurationRedirectAllRequestsTo": {
            "properties": {
                "hostName": {
                    "type": "string",
                    "description": "Name of the host where requests will be redirected.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol to use (http, https).\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/WebsiteConfigurationRoutingRule:WebsiteConfigurationRoutingRule": {
            "properties": {
                "condition": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRoutingRuleCondition:WebsiteConfigurationRoutingRuleCondition",
                    "description": "A container for describing a condition that must be met for the specified redirect to apply.\n"
                },
                "redirect": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRoutingRuleRedirect:WebsiteConfigurationRoutingRuleRedirect",
                    "description": "Container for the redirect information.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/WebsiteConfigurationRoutingRuleCondition:WebsiteConfigurationRoutingRuleCondition": {
            "properties": {
                "httpErrorCodeReturnedEquals": {
                    "type": "string",
                    "description": "The HTTP error code when the redirect is applied. In the event of an error, if the error code equals this value, then the specified redirect is applied.\n"
                },
                "keyPrefixEquals": {
                    "type": "string",
                    "description": "The object key name prefix when the redirect is applied. For example, to redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html. To redirect request for all pages with the prefix example, the key prefix will be /example.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstorage/WebsiteConfigurationRoutingRuleRedirect:WebsiteConfigurationRoutingRuleRedirect": {
            "properties": {
                "hostName": {
                    "type": "string",
                    "description": "The host name to use in the redirect request.\n"
                },
                "httpRedirectCode": {
                    "type": "string",
                    "description": "The HTTP redirect code to use on the response. Not required if one of the siblings is present.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol to use (http, https).\n"
                },
                "replaceKeyPrefixWith": {
                    "type": "string",
                    "description": "The object key to be used in the redirect request. For example, redirect request to error.html, the replace key prefix will be /error.html. Not required if one of the siblings is present.\n"
                },
                "replaceKeyWith": {
                    "type": "string",
                    "description": "The specific object key to use in the redirect request. For example, redirect request for error.html, the replace key will be /error.html. Not required if one of the siblings is present.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstoragemanagement/AccesskeyTimeouts:AccesskeyTimeouts": {
            "properties": {
                "create": {
                    "type": "string",
                    "description": "[string] Time to wait for the bucket to be created. Default is \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e.\n"
                },
                "delete": {
                    "type": "string",
                    "description": "[string] Time to wait for the bucket to be deleted. Default is \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e.\n\n\u003e **⚠ WARNING:** `IONOS_API_URL_OBJECT_STORAGE_MANAGEMENT` can be used to set a custom API URL for the Object Storage Management SDK. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                },
                "read": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:objectstoragemanagement/getRegionCapability:getRegionCapability": {
            "properties": {
                "iam": {
                    "type": "boolean",
                    "description": "Indicates if IAM policy based access is supported\n"
                },
                "s3select": {
                    "type": "boolean",
                    "description": "Indicates if S3 Select is supported\n"
                }
            },
            "type": "object",
            "required": [
                "iam",
                "s3select"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/IpsecGatewayConnection:IpsecGatewayConnection": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The datacenter to connect your VPN Gateway to.\n"
                },
                "ipv4Cidr": {
                    "type": "string",
                    "description": "[string] A LAN IPv4 address in CIDR notation that will be assigned to the VPN Gateway. This will be the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "ipv6Cidr": {
                    "type": "string",
                    "description": "[string] A LAN IPv6 address in CIDR notation that will be assigned to the VPN Gateway. This will be the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The numeric LAN ID to connect your VPN Gateway to.\n"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "ipv4Cidr",
                "lanId"
            ]
        },
        "ionoscloud:vpn/IpsecGatewayMaintenanceWindow:IpsecGatewayMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:vpn/IpsecTunnelAuth:IpsecTunnelAuth": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "[string] The authentication method to use for IPSec Authentication. Possible values: `PSK`.\nDefault value: `PSK`.\n"
                },
                "pskKey": {
                    "type": "string",
                    "description": "[string] The pre-shared key to use for IPSec Authentication. **Note**: Required if method is\nPSK.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "ionoscloud:vpn/IpsecTunnelEsp:IpsecTunnelEsp": {
            "properties": {
                "diffieHellmanGroup": {
                    "type": "string",
                    "description": "[string] The Diffie-Hellman Group to use for IPSec Encryption. Possible\nvalues: `15-MODP3072`, `16-MODP4096`, `19-ECP256`, `20-ECP384`, `21-ECP521`, `28-ECP256BP`, `29-ECP384BP`, `30-ECP512BP`.\nDefault value: `16-MODP4096`.\n"
                },
                "encryptionAlgorithm": {
                    "type": "string",
                    "description": "[string] The encryption algorithm to use for IPSec Encryption. Possible\nvalues: `AES128`, `AES256`, `AES128-CTR`, `AES256-CTR`, `AES128-GCM-16`, `AES256-GCM-16`, `AES128-GCM-12`, `AES256-GCM-12`, `AES128-CCM-12`,\n`AES256-CCM-12`. Default value: `AES256`.\n"
                },
                "integrityAlgorithm": {
                    "type": "string",
                    "description": "[string] The integrity algorithm to use for IPSec Encryption. Possible\nvalues: `SHA256`, `SHA384`, `SHA512`, `AES-XCBC`. Default value: `SHA256`.\n"
                },
                "lifetime": {
                    "type": "integer",
                    "description": "[string] The phase lifetime in seconds. Minimum value: \u003cspan pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\"\u003e`3600`\u003c/span\u003e. Maximum value: \u003cspan pulumi-lang-nodejs=\"`86400`\" pulumi-lang-dotnet=\"`86400`\" pulumi-lang-go=\"`86400`\" pulumi-lang-python=\"`86400`\" pulumi-lang-yaml=\"`86400`\" pulumi-lang-java=\"`86400`\"\u003e`86400`\u003c/span\u003e.\nDefault value: \u003cspan pulumi-lang-nodejs=\"`86400`\" pulumi-lang-dotnet=\"`86400`\" pulumi-lang-go=\"`86400`\" pulumi-lang-python=\"`86400`\" pulumi-lang-yaml=\"`86400`\" pulumi-lang-java=\"`86400`\"\u003e`86400`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:vpn/IpsecTunnelIke:IpsecTunnelIke": {
            "properties": {
                "diffieHellmanGroup": {
                    "type": "string",
                    "description": "[string] The Diffie-Hellman Group to use for IPSec Encryption. Possible\nvalues: `15-MODP3072`, `16-MODP4096`, `19-ECP256`, `20-ECP384`, `21-ECP521`, `28-ECP256BP`, `29-ECP384BP`, `30-ECP512BP`.\nDefault value: `16-MODP4096`.\n"
                },
                "encryptionAlgorithm": {
                    "type": "string",
                    "description": "[string] The encryption algorithm to use for IPSec Encryption. Possible\nvalues: `AES128`, `AES256`, `AES128-CTR`, `AES256-CTR`, `AES128-GCM-16`, `AES256-GCM-16`, `AES128-GCM-12`, `AES256-GCM-12`, `AES128-CCM-12`,\n`AES256-CCM-12`. Default value: `AES256`.\n"
                },
                "integrityAlgorithm": {
                    "type": "string",
                    "description": "[string] The integrity algorithm to use for IPSec Encryption. Possible\nvalues: `SHA256`, `SHA384`, `SHA512`, `AES-XCBC`. Default value: `SHA256`.\n"
                },
                "lifetime": {
                    "type": "integer",
                    "description": "[string] The phase lifetime in seconds. Minimum value: \u003cspan pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\"\u003e`3600`\u003c/span\u003e. Maximum value: \u003cspan pulumi-lang-nodejs=\"`86400`\" pulumi-lang-dotnet=\"`86400`\" pulumi-lang-go=\"`86400`\" pulumi-lang-python=\"`86400`\" pulumi-lang-yaml=\"`86400`\" pulumi-lang-java=\"`86400`\"\u003e`86400`\u003c/span\u003e.\nDefault value: \u003cspan pulumi-lang-nodejs=\"`86400`\" pulumi-lang-dotnet=\"`86400`\" pulumi-lang-go=\"`86400`\" pulumi-lang-python=\"`86400`\" pulumi-lang-yaml=\"`86400`\" pulumi-lang-java=\"`86400`\"\u003e`86400`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "ionoscloud:vpn/WireguardGatewayConnection:WireguardGatewayConnection": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[String] The ID of the datacenter where the WireGuard Gateway is located.\n"
                },
                "ipv4Cidr": {
                    "type": "string",
                    "description": "[String] A LAN IPv4 address in CIDR notation that will be assigned to the VPN Gateway. This will be the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "ipv6Cidr": {
                    "type": "string",
                    "description": "[String] A LAN IPv6 address in CIDR notation that will be assigned to the VPN Gateway. This will be the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[String] The ID of the LAN where the WireGuard Gateway is connected.\n"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "lanId"
            ]
        },
        "ionoscloud:vpn/WireguardGatewayMaintenanceWindow:WireguardGatewayMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "[string] The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "[string] Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ]
        },
        "ionoscloud:vpn/WireguardPeerEndpoint:WireguardPeerEndpoint": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "[string] The hostname or IPV4 address that the WireGuard Server will connect to.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "[int] The port that the WireGuard Server will connect to. Defaults to \u003cspan pulumi-lang-nodejs=\"`51820`\" pulumi-lang-dotnet=\"`51820`\" pulumi-lang-go=\"`51820`\" pulumi-lang-python=\"`51820`\" pulumi-lang-yaml=\"`51820`\" pulumi-lang-java=\"`51820`\"\u003e`51820`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "host"
            ]
        },
        "ionoscloud:vpn/getIpsecGatewayConnection:getIpsecGatewayConnection": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "The datacenter to connect your VPN Gateway to.\n"
                },
                "ipv4Cidr": {
                    "type": "string",
                    "description": "The VPN Gateway IPv4 address in CIDR notation. This is the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "ipv6Cidr": {
                    "type": "string",
                    "description": "The VPN Gateway IPv6 address in CIDR notation. This is the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "The numeric LAN ID to connect your VPN Gateway to.\n"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "ipv4Cidr",
                "ipv6Cidr",
                "lanId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/getIpsecGatewayMaintenanceWindow:getIpsecGatewayMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/getIpsecTunnelAuth:getIpsecTunnelAuth": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "The Authentication Method to use for IPSec Authentication.\n"
                }
            },
            "type": "object",
            "required": [
                "method"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/getIpsecTunnelEsp:getIpsecTunnelEsp": {
            "properties": {
                "diffieHellmanGroup": {
                    "type": "string",
                    "description": "The Diffie-Hellman Group to use for IPSec Encryption.\n"
                },
                "encryptionAlgorithm": {
                    "type": "string",
                    "description": "The encryption algorithm to use for IPSec Encryption.\n"
                },
                "integrityAlgorithm": {
                    "type": "string",
                    "description": "The integrity algorithm to use for IPSec Encryption.\n"
                },
                "lifetime": {
                    "type": "integer",
                    "description": "The phase lifetime in seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "diffieHellmanGroup",
                "encryptionAlgorithm",
                "integrityAlgorithm",
                "lifetime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/getIpsecTunnelIke:getIpsecTunnelIke": {
            "properties": {
                "diffieHellmanGroup": {
                    "type": "string",
                    "description": "The Diffie-Hellman Group to use for IPSec Encryption.\n"
                },
                "encryptionAlgorithm": {
                    "type": "string",
                    "description": "The encryption algorithm to use for IPSec Encryption.\n"
                },
                "integrityAlgorithm": {
                    "type": "string",
                    "description": "The integrity algorithm to use for IPSec Encryption.\n"
                },
                "lifetime": {
                    "type": "integer",
                    "description": "The phase lifetime in seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "diffieHellmanGroup",
                "encryptionAlgorithm",
                "integrityAlgorithm",
                "lifetime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/getWireguardGatewayConnection:getWireguardGatewayConnection": {
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "The ID of the datacenter where the WireGuard Gateway is located.\n"
                },
                "ipv4Cidr": {
                    "type": "string",
                    "description": "The VPN Gateway IPv4 address in CIDR notation. This is the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "ipv6Cidr": {
                    "type": "string",
                    "description": "The VPN Gateway IPv6 address in CIDR notation. This is the private gateway address for LAN clients to route traffic over the VPN Gateway, this should be within the subnet already assigned to the LAN.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "The ID of the LAN where the WireGuard Gateway is connected.\n"
                }
            },
            "type": "object",
            "required": [
                "datacenterId",
                "ipv4Cidr",
                "ipv6Cidr",
                "lanId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/getWireguardGatewayMaintenanceWindow:getWireguardGatewayMaintenanceWindow": {
            "properties": {
                "dayOfTheWeek": {
                    "type": "string",
                    "description": "The name of the week day.\n"
                },
                "time": {
                    "type": "string",
                    "description": "Start of the maintenance window in UTC time.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfTheWeek",
                "time"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "ionoscloud:vpn/getWireguardPeerEndpoint:getWireguardPeerEndpoint": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "Hostname or IPV4 address that the WireGuard Server will connect to.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port that the WireGuard Server will connect to. Default: 51820\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        }
    },
    "provider": {
        "description": "The provider type for the ionoscloud package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n",
        "properties": {
            "contractNumber": {
                "type": "string",
                "description": "To be set only for reseller accounts. Allows to run terraform on a contract number under a reseller account."
            },
            "endpoint": {
                "type": "string",
                "description": "IonosCloud REST API URL. Usually not necessary to be set, SDKs know internally how to route requests to the API."
            },
            "insecure": {
                "type": "boolean",
                "description": "This field is to be set only for testing purposes. It is not recommended to set this field in production environments."
            },
            "password": {
                "type": "string",
                "description": "IonosCloud password for API operations. If token is provided, token is preferred"
            },
            "retries": {
                "type": "integer",
                "deprecationMessage": "Timeout is used instead of this functionality"
            },
            "s3AccessKey": {
                "type": "string",
                "description": "Access key for IONOS Object Storage operations."
            },
            "s3Region": {
                "type": "string",
                "description": "Region for IONOS Object Storage operations."
            },
            "s3SecretKey": {
                "type": "string",
                "description": "Secret key for IONOS Object Storage operations."
            },
            "token": {
                "type": "string",
                "description": "IonosCloud bearer token for API operations."
            },
            "username": {
                "type": "string",
                "description": "IonosCloud username for API operations. If token is provided, token is preferred"
            }
        },
        "inputProperties": {
            "contractNumber": {
                "type": "string",
                "description": "To be set only for reseller accounts. Allows to run terraform on a contract number under a reseller account."
            },
            "endpoint": {
                "type": "string",
                "description": "IonosCloud REST API URL. Usually not necessary to be set, SDKs know internally how to route requests to the API."
            },
            "insecure": {
                "type": "boolean",
                "description": "This field is to be set only for testing purposes. It is not recommended to set this field in production environments."
            },
            "password": {
                "type": "string",
                "description": "IonosCloud password for API operations. If token is provided, token is preferred"
            },
            "retries": {
                "type": "integer",
                "deprecationMessage": "Timeout is used instead of this functionality"
            },
            "s3AccessKey": {
                "type": "string",
                "description": "Access key for IONOS Object Storage operations."
            },
            "s3Region": {
                "type": "string",
                "description": "Region for IONOS Object Storage operations."
            },
            "s3SecretKey": {
                "type": "string",
                "description": "Secret key for IONOS Object Storage operations."
            },
            "token": {
                "type": "string",
                "description": "IonosCloud bearer token for API operations."
            },
            "username": {
                "type": "string",
                "description": "IonosCloud username for API operations. If token is provided, token is preferred"
            }
        },
        "methods": {
            "terraformConfig": "pulumi:providers:ionoscloud/terraformConfig"
        }
    },
    "resources": {
        "ionoscloud:alb/balancer:Balancer": {
            "description": "Manages an [Application Load Balancer](https://docs.ionos.com/cloud/network-services/application-load-balancer/overview) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"datacenter description\",\n    secAuthProtection: false,\n});\nconst example1 = new ionoscloud.compute.Lan(\"example_1\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst example2 = new ionoscloud.compute.Lan(\"example_2\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst exampleBalancer = new ionoscloud.alb.Balancer(\"example\", {\n    datacenterId: example.id,\n    name: \"ALB Example\",\n    listenerLan: example1.id,\n    ips: [\"10.12.118.224\"],\n    targetLan: example2.id,\n    lbPrivateIps: [\"10.13.72.225/24\"],\n    centralLogging: true,\n    loggingFormat: \"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"datacenter description\",\n    sec_auth_protection=False)\nexample1 = ionoscloud.compute.Lan(\"example_1\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nexample2 = ionoscloud.compute.Lan(\"example_2\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nexample_balancer = ionoscloud.alb.Balancer(\"example\",\n    datacenter_id=example.id,\n    name=\"ALB Example\",\n    listener_lan=example1.id,\n    ips=[\"10.12.118.224\"],\n    target_lan=example2.id,\n    lb_private_ips=[\"10.13.72.225/24\"],\n    central_logging=True,\n    logging_format=\"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"datacenter description\",\n        SecAuthProtection = false,\n    });\n\n    var example1 = new Ionoscloud.Compute.Lan(\"example_1\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var example2 = new Ionoscloud.Compute.Lan(\"example_2\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var exampleBalancer = new Ionoscloud.Alb.Balancer(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Name = \"ALB Example\",\n        ListenerLan = example1.Id,\n        Ips = new[]\n        {\n            \"10.12.118.224\",\n        },\n        TargetLan = example2.Id,\n        LbPrivateIps = new[]\n        {\n            \"10.13.72.225/24\",\n        },\n        CentralLogging = true,\n        LoggingFormat = \"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"datacenter description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample1, err := compute.NewLan(ctx, \"example_1\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample2, err := compute.NewLan(ctx, \"example_2\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alb.NewBalancer(ctx, \"example\", \u0026alb.BalancerArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tName:         pulumi.String(\"ALB Example\"),\n\t\t\tListenerLan:  example1.ID(),\n\t\t\tIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.12.118.224\"),\n\t\t\t},\n\t\t\tTargetLan: example2.ID(),\n\t\t\tLbPrivateIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.13.72.225/24\"),\n\t\t\t},\n\t\t\tCentralLogging: pulumi.Bool(true),\n\t\t\tLoggingFormat:  pulumi.String(\"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.alb.Balancer;\nimport com.ionoscloud.pulumi.ionoscloud.alb.BalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"datacenter description\")\n            .secAuthProtection(false)\n            .build());\n\n        var example1 = new Lan(\"example1\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var example2 = new Lan(\"example2\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var exampleBalancer = new Balancer(\"exampleBalancer\", BalancerArgs.builder()\n            .datacenterId(example.id())\n            .name(\"ALB Example\")\n            .listenerLan(example1.id())\n            .ips(\"10.12.118.224\")\n            .targetLan(example2.id())\n            .lbPrivateIps(\"10.13.72.225/24\")\n            .centralLogging(true)\n            .loggingFormat(\"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: datacenter description\n      secAuthProtection: false\n  example1:\n    type: ionoscloud:compute:Lan\n    name: example_1\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  example2:\n    type: ionoscloud:compute:Lan\n    name: example_2\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  exampleBalancer:\n    type: ionoscloud:alb:Balancer\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      name: ALB Example\n      listenerLan: ${example1.id}\n      ips:\n        - 10.12.118.224\n      targetLan: ${example2.id}\n      lbPrivateIps:\n        - 10.13.72.225/24\n      centralLogging: true\n      loggingFormat: '%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \"\" \"\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Application Load Balancer can be imported using the `resource id` and `datacenter id`, e.g.\n\n```sh\nterraform import ionoscloud_application_loadbalancer.myalb datacenter uuid/applicationLoadBalancer uuid\n```\n\n",
            "properties": {
                "centralLogging": {
                    "type": "boolean",
                    "description": "[bool] Turn logging on and off for this product. Default value is 'false'.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] ID of the datacenter.\n"
                },
                "flowlog": {
                    "$ref": "#/types/ionoscloud:alb/BalancerFlowlog:BalancerFlowlog",
                    "description": "[list] Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[set] Collection of the Application Load Balancer IP addresses. (Inbound and outbound) IPs of the listenerLan are customer-reserved public IPs for the public Load Balancers, and private IPs for the private Load Balancers.\n"
                },
                "lbPrivateIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[set] Collection of private IP addresses with the subnet mask of the Application Load Balancer. IPs must contain valid a subnet mask. If no IP is provided, the system will generate an IP with /24 subnet.\n"
                },
                "listenerLan": {
                    "type": "integer",
                    "description": "[int] ID of the listening (inbound) LAN.\n"
                },
                "location": {
                    "type": "string"
                },
                "loggingFormat": {
                    "type": "string",
                    "description": "Specifies the format of the logs."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Application Load Balancer.\n"
                },
                "targetLan": {
                    "type": "integer",
                    "description": "[int] ID of the balanced private target LAN (outbound).\n"
                }
            },
            "required": [
                "datacenterId",
                "listenerLan",
                "name",
                "targetLan"
            ],
            "inputProperties": {
                "centralLogging": {
                    "type": "boolean",
                    "description": "[bool] Turn logging on and off for this product. Default value is 'false'.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] ID of the datacenter.\n",
                    "willReplaceOnChanges": true
                },
                "flowlog": {
                    "$ref": "#/types/ionoscloud:alb/BalancerFlowlog:BalancerFlowlog",
                    "description": "[list] Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[set] Collection of the Application Load Balancer IP addresses. (Inbound and outbound) IPs of the listenerLan are customer-reserved public IPs for the public Load Balancers, and private IPs for the private Load Balancers.\n"
                },
                "lbPrivateIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[set] Collection of private IP addresses with the subnet mask of the Application Load Balancer. IPs must contain valid a subnet mask. If no IP is provided, the system will generate an IP with /24 subnet.\n"
                },
                "listenerLan": {
                    "type": "integer",
                    "description": "[int] ID of the listening (inbound) LAN.\n"
                },
                "location": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "loggingFormat": {
                    "type": "string",
                    "description": "Specifies the format of the logs."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Application Load Balancer.\n"
                },
                "targetLan": {
                    "type": "integer",
                    "description": "[int] ID of the balanced private target LAN (outbound).\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "listenerLan",
                "targetLan"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Balancer resources.\n",
                "properties": {
                    "centralLogging": {
                        "type": "boolean",
                        "description": "[bool] Turn logging on and off for this product. Default value is 'false'.\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] ID of the datacenter.\n",
                        "willReplaceOnChanges": true
                    },
                    "flowlog": {
                        "$ref": "#/types/ionoscloud:alb/BalancerFlowlog:BalancerFlowlog",
                        "description": "[list] Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                    },
                    "ips": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[set] Collection of the Application Load Balancer IP addresses. (Inbound and outbound) IPs of the listenerLan are customer-reserved public IPs for the public Load Balancers, and private IPs for the private Load Balancers.\n"
                    },
                    "lbPrivateIps": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[set] Collection of private IP addresses with the subnet mask of the Application Load Balancer. IPs must contain valid a subnet mask. If no IP is provided, the system will generate an IP with /24 subnet.\n"
                    },
                    "listenerLan": {
                        "type": "integer",
                        "description": "[int] ID of the listening (inbound) LAN.\n"
                    },
                    "location": {
                        "type": "string",
                        "willReplaceOnChanges": true
                    },
                    "loggingFormat": {
                        "type": "string",
                        "description": "Specifies the format of the logs."
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Application Load Balancer.\n"
                    },
                    "targetLan": {
                        "type": "integer",
                        "description": "[int] ID of the balanced private target LAN (outbound).\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:alb/forwardingRule:ForwardingRule": {
            "description": "Manages an **Application Load Balancer Forwarding Rule** on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"datacenter description\",\n    secAuthProtection: false,\n});\nconst example1 = new ionoscloud.compute.Lan(\"example_1\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst example2 = new ionoscloud.compute.Lan(\"example_2\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst exampleBalancer = new ionoscloud.alb.Balancer(\"example\", {\n    datacenterId: example.id,\n    name: \"ALB Example\",\n    listenerLan: example1.id,\n    ips: [\"10.12.118.224\"],\n    targetLan: example2.id,\n    lbPrivateIps: [\"10.13.72.225/24\"],\n});\n//optionally you can add a certificate to the application load balancer\nconst cert = new ionoscloud.cert.Certificate(\"cert\", {\n    name: \"add_name_here\",\n    certificate: std.file({\n        input: \"path_to_cert\",\n    }).result,\n    certificateChain: std.file({\n        input: \"path_to_cert_chain\",\n    }).result,\n    privateKey: std.file({\n        input: \"path_to_private_key\",\n    }).result,\n});\nconst exampleForwardingRule = new ionoscloud.alb.ForwardingRule(\"example\", {\n    datacenterId: example.id,\n    applicationLoadbalancerId: exampleBalancer.id,\n    name: \"ALB FR Example\",\n    protocol: \"HTTP\",\n    listenerIp: \"10.12.118.224\",\n    listenerPort: 8080,\n    clientTimeout: 1000,\n    httpRules: [\n        {\n            name: \"http_rule\",\n            type: \"REDIRECT\",\n            dropQuery: true,\n            location: \"www.ionos.com\",\n            statusCode: 301,\n            conditions: [{\n                type: \"HEADER\",\n                condition: \"EQUALS\",\n                negate: true,\n                key: \"key\",\n                value: \"10.12.120.224/24\",\n            }],\n        },\n        {\n            name: \"http_rule_2\",\n            type: \"STATIC\",\n            dropQuery: false,\n            statusCode: 303,\n            responseMessage: \"Response\",\n            contentType: \"text/plain\",\n            conditions: [{\n                type: \"QUERY\",\n                condition: \"MATCHES\",\n                negate: false,\n                key: \"key\",\n                value: \"10.12.120.224/24\",\n            }],\n        },\n    ],\n    serverCertificates: [cert.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_std as std\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"datacenter description\",\n    sec_auth_protection=False)\nexample1 = ionoscloud.compute.Lan(\"example_1\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nexample2 = ionoscloud.compute.Lan(\"example_2\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nexample_balancer = ionoscloud.alb.Balancer(\"example\",\n    datacenter_id=example.id,\n    name=\"ALB Example\",\n    listener_lan=example1.id,\n    ips=[\"10.12.118.224\"],\n    target_lan=example2.id,\n    lb_private_ips=[\"10.13.72.225/24\"])\n#optionally you can add a certificate to the application load balancer\ncert = ionoscloud.cert.Certificate(\"cert\",\n    name=\"add_name_here\",\n    certificate=std.file(input=\"path_to_cert\")[\"result\"],\n    certificate_chain=std.file(input=\"path_to_cert_chain\")[\"result\"],\n    private_key=std.file(input=\"path_to_private_key\")[\"result\"])\nexample_forwarding_rule = ionoscloud.alb.ForwardingRule(\"example\",\n    datacenter_id=example.id,\n    application_loadbalancer_id=example_balancer.id,\n    name=\"ALB FR Example\",\n    protocol=\"HTTP\",\n    listener_ip=\"10.12.118.224\",\n    listener_port=8080,\n    client_timeout=1000,\n    http_rules=[\n        {\n            \"name\": \"http_rule\",\n            \"type\": \"REDIRECT\",\n            \"drop_query\": True,\n            \"location\": \"www.ionos.com\",\n            \"status_code\": 301,\n            \"conditions\": [{\n                \"type\": \"HEADER\",\n                \"condition\": \"EQUALS\",\n                \"negate\": True,\n                \"key\": \"key\",\n                \"value\": \"10.12.120.224/24\",\n            }],\n        },\n        {\n            \"name\": \"http_rule_2\",\n            \"type\": \"STATIC\",\n            \"drop_query\": False,\n            \"status_code\": 303,\n            \"response_message\": \"Response\",\n            \"content_type\": \"text/plain\",\n            \"conditions\": [{\n                \"type\": \"QUERY\",\n                \"condition\": \"MATCHES\",\n                \"negate\": False,\n                \"key\": \"key\",\n                \"value\": \"10.12.120.224/24\",\n            }],\n        },\n    ],\n    server_certificates=[cert.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"datacenter description\",\n        SecAuthProtection = false,\n    });\n\n    var example1 = new Ionoscloud.Compute.Lan(\"example_1\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var example2 = new Ionoscloud.Compute.Lan(\"example_2\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var exampleBalancer = new Ionoscloud.Alb.Balancer(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Name = \"ALB Example\",\n        ListenerLan = example1.Id,\n        Ips = new[]\n        {\n            \"10.12.118.224\",\n        },\n        TargetLan = example2.Id,\n        LbPrivateIps = new[]\n        {\n            \"10.13.72.225/24\",\n        },\n    });\n\n    //optionally you can add a certificate to the application load balancer\n    var cert = new Ionoscloud.Cert.IonosCertificate(\"cert\", new()\n    {\n        Name = \"add_name_here\",\n        Certificate = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_cert\",\n        }).Result,\n        CertificateChain = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_cert_chain\",\n        }).Result,\n        PrivateKey = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_private_key\",\n        }).Result,\n    });\n\n    var exampleForwardingRule = new Ionoscloud.Alb.ForwardingRule(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        ApplicationLoadbalancerId = exampleBalancer.Id,\n        Name = \"ALB FR Example\",\n        Protocol = \"HTTP\",\n        ListenerIp = \"10.12.118.224\",\n        ListenerPort = 8080,\n        ClientTimeout = 1000,\n        HttpRules = new[]\n        {\n            new Ionoscloud.Alb.Inputs.ForwardingRuleHttpRuleArgs\n            {\n                Name = \"http_rule\",\n                Type = \"REDIRECT\",\n                DropQuery = true,\n                Location = \"www.ionos.com\",\n                StatusCode = 301,\n                Conditions = new[]\n                {\n                    new Ionoscloud.Alb.Inputs.ForwardingRuleHttpRuleConditionArgs\n                    {\n                        Type = \"HEADER\",\n                        Condition = \"EQUALS\",\n                        Negate = true,\n                        Key = \"key\",\n                        Value = \"10.12.120.224/24\",\n                    },\n                },\n            },\n            new Ionoscloud.Alb.Inputs.ForwardingRuleHttpRuleArgs\n            {\n                Name = \"http_rule_2\",\n                Type = \"STATIC\",\n                DropQuery = false,\n                StatusCode = 303,\n                ResponseMessage = \"Response\",\n                ContentType = \"text/plain\",\n                Conditions = new[]\n                {\n                    new Ionoscloud.Alb.Inputs.ForwardingRuleHttpRuleConditionArgs\n                    {\n                        Type = \"QUERY\",\n                        Condition = \"MATCHES\",\n                        Negate = false,\n                        Key = \"key\",\n                        Value = \"10.12.120.224/24\",\n                    },\n                },\n            },\n        },\n        ServerCertificates = new[]\n        {\n            cert.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"datacenter description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample1, err := compute.NewLan(ctx, \"example_1\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample2, err := compute.NewLan(ctx, \"example_2\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBalancer, err := alb.NewBalancer(ctx, \"example\", \u0026alb.BalancerArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tName:         pulumi.String(\"ALB Example\"),\n\t\t\tListenerLan:  example1.ID(),\n\t\t\tIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.12.118.224\"),\n\t\t\t},\n\t\t\tTargetLan: example2.ID(),\n\t\t\tLbPrivateIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.13.72.225/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_cert\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_cert_chain\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_private_key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// optionally you can add a certificate to the application load balancer\n\t\tcert, err := cert.NewCertificate(ctx, \"cert\", \u0026cert.CertificateArgs{\n\t\t\tName:             pulumi.String(\"add_name_here\"),\n\t\t\tCertificate:      invokeFile.Result,\n\t\t\tCertificateChain: invokeFile1.Result,\n\t\t\tPrivateKey:       invokeFile2.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alb.NewForwardingRule(ctx, \"example\", \u0026alb.ForwardingRuleArgs{\n\t\t\tDatacenterId:              example.ID(),\n\t\t\tApplicationLoadbalancerId: exampleBalancer.ID(),\n\t\t\tName:                      pulumi.String(\"ALB FR Example\"),\n\t\t\tProtocol:                  pulumi.String(\"HTTP\"),\n\t\t\tListenerIp:                pulumi.String(\"10.12.118.224\"),\n\t\t\tListenerPort:              pulumi.Int(8080),\n\t\t\tClientTimeout:             pulumi.Int(1000),\n\t\t\tHttpRules: alb.ForwardingRuleHttpRuleArray{\n\t\t\t\t\u0026alb.ForwardingRuleHttpRuleArgs{\n\t\t\t\t\tName:       pulumi.String(\"http_rule\"),\n\t\t\t\t\tType:       pulumi.String(\"REDIRECT\"),\n\t\t\t\t\tDropQuery:  pulumi.Bool(true),\n\t\t\t\t\tLocation:   pulumi.String(\"www.ionos.com\"),\n\t\t\t\t\tStatusCode: pulumi.Int(301),\n\t\t\t\t\tConditions: alb.ForwardingRuleHttpRuleConditionArray{\n\t\t\t\t\t\t\u0026alb.ForwardingRuleHttpRuleConditionArgs{\n\t\t\t\t\t\t\tType:      pulumi.String(\"HEADER\"),\n\t\t\t\t\t\t\tCondition: pulumi.String(\"EQUALS\"),\n\t\t\t\t\t\t\tNegate:    pulumi.Bool(true),\n\t\t\t\t\t\t\tKey:       pulumi.String(\"key\"),\n\t\t\t\t\t\t\tValue:     pulumi.String(\"10.12.120.224/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026alb.ForwardingRuleHttpRuleArgs{\n\t\t\t\t\tName:            pulumi.String(\"http_rule_2\"),\n\t\t\t\t\tType:            pulumi.String(\"STATIC\"),\n\t\t\t\t\tDropQuery:       pulumi.Bool(false),\n\t\t\t\t\tStatusCode:      pulumi.Int(303),\n\t\t\t\t\tResponseMessage: pulumi.String(\"Response\"),\n\t\t\t\t\tContentType:     pulumi.String(\"text/plain\"),\n\t\t\t\t\tConditions: alb.ForwardingRuleHttpRuleConditionArray{\n\t\t\t\t\t\t\u0026alb.ForwardingRuleHttpRuleConditionArgs{\n\t\t\t\t\t\t\tType:      pulumi.String(\"QUERY\"),\n\t\t\t\t\t\t\tCondition: pulumi.String(\"MATCHES\"),\n\t\t\t\t\t\t\tNegate:    pulumi.Bool(false),\n\t\t\t\t\t\t\tKey:       pulumi.String(\"key\"),\n\t\t\t\t\t\t\tValue:     pulumi.String(\"10.12.120.224/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServerCertificates: pulumi.StringArray{\n\t\t\t\tcert.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.alb.Balancer;\nimport com.ionoscloud.pulumi.ionoscloud.alb.BalancerArgs;\nimport com.ionoscloud.pulumi.ionoscloud.cert.Certificate;\nimport com.ionoscloud.pulumi.ionoscloud.cert.CertificateArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.ionoscloud.pulumi.ionoscloud.alb.ForwardingRule;\nimport com.ionoscloud.pulumi.ionoscloud.alb.ForwardingRuleArgs;\nimport com.pulumi.ionoscloud.alb.inputs.ForwardingRuleHttpRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"datacenter description\")\n            .secAuthProtection(false)\n            .build());\n\n        var example1 = new Lan(\"example1\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var example2 = new Lan(\"example2\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var exampleBalancer = new Balancer(\"exampleBalancer\", BalancerArgs.builder()\n            .datacenterId(example.id())\n            .name(\"ALB Example\")\n            .listenerLan(example1.id())\n            .ips(\"10.12.118.224\")\n            .targetLan(example2.id())\n            .lbPrivateIps(\"10.13.72.225/24\")\n            .build());\n\n        //optionally you can add a certificate to the application load balancer\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"add_name_here\")\n            .certificate(StdFunctions.file(Map.of(\"input\", \"path_to_cert\")).result())\n            .certificateChain(StdFunctions.file(Map.of(\"input\", \"path_to_cert_chain\")).result())\n            .privateKey(StdFunctions.file(Map.of(\"input\", \"path_to_private_key\")).result())\n            .build());\n\n        var exampleForwardingRule = new ForwardingRule(\"exampleForwardingRule\", ForwardingRuleArgs.builder()\n            .datacenterId(example.id())\n            .applicationLoadbalancerId(exampleBalancer.id())\n            .name(\"ALB FR Example\")\n            .protocol(\"HTTP\")\n            .listenerIp(\"10.12.118.224\")\n            .listenerPort(8080)\n            .clientTimeout(1000)\n            .httpRules(            \n                ForwardingRuleHttpRuleArgs.builder()\n                    .name(\"http_rule\")\n                    .type(\"REDIRECT\")\n                    .dropQuery(true)\n                    .location(\"www.ionos.com\")\n                    .statusCode(301)\n                    .conditions(ForwardingRuleHttpRuleConditionArgs.builder()\n                        .type(\"HEADER\")\n                        .condition(\"EQUALS\")\n                        .negate(true)\n                        .key(\"key\")\n                        .value(\"10.12.120.224/24\")\n                        .build())\n                    .build(),\n                ForwardingRuleHttpRuleArgs.builder()\n                    .name(\"http_rule_2\")\n                    .type(\"STATIC\")\n                    .dropQuery(false)\n                    .statusCode(303)\n                    .responseMessage(\"Response\")\n                    .contentType(\"text/plain\")\n                    .conditions(ForwardingRuleHttpRuleConditionArgs.builder()\n                        .type(\"QUERY\")\n                        .condition(\"MATCHES\")\n                        .negate(false)\n                        .key(\"key\")\n                        .value(\"10.12.120.224/24\")\n                        .build())\n                    .build())\n            .serverCertificates(cert.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: datacenter description\n      secAuthProtection: false\n  example1:\n    type: ionoscloud:compute:Lan\n    name: example_1\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  example2:\n    type: ionoscloud:compute:Lan\n    name: example_2\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  exampleBalancer:\n    type: ionoscloud:alb:Balancer\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      name: ALB Example\n      listenerLan: ${example1.id}\n      ips:\n        - 10.12.118.224\n      targetLan: ${example2.id}\n      lbPrivateIps:\n        - 10.13.72.225/24\n  exampleForwardingRule:\n    type: ionoscloud:alb:ForwardingRule\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      applicationLoadbalancerId: ${exampleBalancer.id}\n      name: ALB FR Example\n      protocol: HTTP\n      listenerIp: 10.12.118.224\n      listenerPort: 8080\n      clientTimeout: 1000\n      httpRules:\n        - name: http_rule\n          type: REDIRECT\n          dropQuery: true\n          location: www.ionos.com\n          statusCode: 301\n          conditions:\n            - type: HEADER\n              condition: EQUALS\n              negate: true\n              key: key\n              value: 10.12.120.224/24\n        - name: http_rule_2\n          type: STATIC\n          dropQuery: false\n          statusCode: 303\n          responseMessage: Response\n          contentType: text/plain\n          conditions:\n            - type: QUERY\n              condition: MATCHES\n              negate: false\n              key: key\n              value: 10.12.120.224/24\n      serverCertificates:\n        - ${cert.id}\n  #optionally you can add a certificate to the application load balancer\n  cert:\n    type: ionoscloud:cert:Certificate\n    properties:\n      name: add_name_here\n      certificate:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_cert\n          return: result\n      certificateChain:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_cert_chain\n          return: result\n      privateKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_private_key\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Application Load Balancer Forwarding Rule can be imported using the `resource id`, `alb id` and `datacenter id`, e.g.\n\n```sh\nterraform import ionoscloud_application_loadbalancer_forwardingrule.my_application_loadbalancer_forwardingrule datacenter uuid/application_loadbalancer uuid/application_loadbalancer_forwardingrule uuid\n```\n\n",
            "properties": {
                "applicationLoadbalancerId": {
                    "type": "string",
                    "description": "[string] The ID of Application Load Balancer.\n"
                },
                "clientTimeout": {
                    "type": "integer",
                    "description": "[int] The maximum time in milliseconds to wait for the client to acknowledge or send data; default is 50,000 (50 seconds).\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "httpRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:alb/ForwardingRuleHttpRule:ForwardingRuleHttpRule"
                    },
                    "description": "[list] Array of items in that collection\n"
                },
                "listenerIp": {
                    "type": "string",
                    "description": "[string] Listening (inbound) IP.\n"
                },
                "listenerPort": {
                    "type": "integer",
                    "description": "[int] Listening (inbound) port number; valid range is 1 to 65535.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Application Load Balancer forwarding rule.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Balancing protocol.\n"
                },
                "serverCertificates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Array of certificate ids. You can create certificates with the certificate resource.\n"
                }
            },
            "required": [
                "applicationLoadbalancerId",
                "clientTimeout",
                "datacenterId",
                "listenerIp",
                "listenerPort",
                "name",
                "protocol"
            ],
            "inputProperties": {
                "applicationLoadbalancerId": {
                    "type": "string",
                    "description": "[string] The ID of Application Load Balancer.\n",
                    "willReplaceOnChanges": true
                },
                "clientTimeout": {
                    "type": "integer",
                    "description": "[int] The maximum time in milliseconds to wait for the client to acknowledge or send data; default is 50,000 (50 seconds).\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "httpRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:alb/ForwardingRuleHttpRule:ForwardingRuleHttpRule"
                    },
                    "description": "[list] Array of items in that collection\n"
                },
                "listenerIp": {
                    "type": "string",
                    "description": "[string] Listening (inbound) IP.\n"
                },
                "listenerPort": {
                    "type": "integer",
                    "description": "[int] Listening (inbound) port number; valid range is 1 to 65535.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Application Load Balancer forwarding rule.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Balancing protocol.\n"
                },
                "serverCertificates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Array of certificate ids. You can create certificates with the certificate resource.\n"
                }
            },
            "requiredInputs": [
                "applicationLoadbalancerId",
                "datacenterId",
                "listenerIp",
                "listenerPort",
                "protocol"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ForwardingRule resources.\n",
                "properties": {
                    "applicationLoadbalancerId": {
                        "type": "string",
                        "description": "[string] The ID of Application Load Balancer.\n",
                        "willReplaceOnChanges": true
                    },
                    "clientTimeout": {
                        "type": "integer",
                        "description": "[int] The maximum time in milliseconds to wait for the client to acknowledge or send data; default is 50,000 (50 seconds).\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "httpRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:alb/ForwardingRuleHttpRule:ForwardingRuleHttpRule"
                        },
                        "description": "[list] Array of items in that collection\n"
                    },
                    "listenerIp": {
                        "type": "string",
                        "description": "[string] Listening (inbound) IP.\n"
                    },
                    "listenerPort": {
                        "type": "integer",
                        "description": "[int] Listening (inbound) port number; valid range is 1 to 65535.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Application Load Balancer forwarding rule.\n"
                    },
                    "protocol": {
                        "type": "string",
                        "description": "[string] Balancing protocol.\n"
                    },
                    "serverCertificates": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Array of certificate ids. You can create certificates with the certificate resource.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:autoscaling/group:Group": {
            "description": "Manages an [Autoscaling Group](https://docs.ionos.com/cloud/compute-services/vm-auto-scaling/overview#components-of-vm-auto-scaling) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst datacenterExample = new ionoscloud.compute.Datacenter(\"datacenter_example\", {\n    name: \"datacenter_example\",\n    location: \"de/fra\",\n});\nconst lanExample1 = new ionoscloud.compute.Lan(\"lan_example_1\", {\n    datacenterId: datacenterExample.id,\n    \"public\": false,\n    name: \"lan_example_1\",\n});\nconst lanExample2 = new ionoscloud.compute.Lan(\"lan_example_2\", {\n    datacenterId: datacenterExample.id,\n    \"public\": false,\n    name: \"lan_example_2\",\n});\nconst autoscalingTargetGroup = new ionoscloud.compute.TargetGroup(\"autoscaling_target_group\", {\n    name: \"Target Group Example\",\n    algorithm: \"ROUND_ROBIN\",\n    protocol: \"HTTP\",\n    protocolVersion: \"HTTP1\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst autoscalingGroupExample = new ionoscloud.autoscaling.Group(\"autoscaling_group_example\", {\n    datacenterId: datacenterExample.id,\n    maxReplicaCount: 2,\n    minReplicaCount: 1,\n    name: \"autoscaling_group_example\",\n    policy: {\n        metric: \"INSTANCE_CPU_UTILIZATION_AVERAGE\",\n        range: \"PT24H\",\n        scaleInAction: {\n            amount: 1,\n            amountType: \"ABSOLUTE\",\n            terminationPolicyType: \"OLDEST_SERVER_FIRST\",\n            cooldownPeriod: \"PT5M\",\n            deleteVolumes: true,\n        },\n        scaleInThreshold: 33,\n        scaleOutAction: {\n            amount: 1,\n            amountType: \"ABSOLUTE\",\n            cooldownPeriod: \"PT5M\",\n        },\n        scaleOutThreshold: 77,\n        unit: \"PER_HOUR\",\n    },\n    replicaConfiguration: {\n        availabilityZone: \"AUTO\",\n        cores: 2,\n        cpuFamily: \"INTEL_SKYLAKE\",\n        ram: 2048,\n        nics: [\n            {\n                lan: lanExample1.id,\n                name: \"nic_example_1\",\n                dhcp: true,\n            },\n            {\n                lan: lanExample2.id,\n                name: \"nic_example_2\",\n                dhcp: true,\n                firewallActive: true,\n                firewallType: \"INGRESS\",\n                firewallRules: [{\n                    name: \"rule_1\",\n                    protocol: \"TCP\",\n                    portRangeStart: 1,\n                    portRangeEnd: 1000,\n                    type: \"INGRESS\",\n                }],\n                flowLogs: [{\n                    name: \"flow_log_1\",\n                    bucket: \"test-de-bucket\",\n                    action: \"ALL\",\n                    direction: \"BIDIRECTIONAL\",\n                }],\n                targetGroup: {\n                    targetGroupId: autoscalingTargetGroup.id,\n                    port: 80,\n                    weight: 50,\n                },\n            },\n        ],\n        volumes: [{\n            imageAlias: \"ubuntu:latest\",\n            name: \"volume_example\",\n            size: 10,\n            type: \"HDD\",\n            userData: \"ZWNobyAiSGVsbG8sIFdvcmxkIgo=\",\n            imagePassword: serverImagePassword.result,\n            bootOrder: \"AUTO\",\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\ndatacenter_example = ionoscloud.compute.Datacenter(\"datacenter_example\",\n    name=\"datacenter_example\",\n    location=\"de/fra\")\nlan_example1 = ionoscloud.compute.Lan(\"lan_example_1\",\n    datacenter_id=datacenter_example.id,\n    public=False,\n    name=\"lan_example_1\")\nlan_example2 = ionoscloud.compute.Lan(\"lan_example_2\",\n    datacenter_id=datacenter_example.id,\n    public=False,\n    name=\"lan_example_2\")\nautoscaling_target_group = ionoscloud.compute.TargetGroup(\"autoscaling_target_group\",\n    name=\"Target Group Example\",\n    algorithm=\"ROUND_ROBIN\",\n    protocol=\"HTTP\",\n    protocol_version=\"HTTP1\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nautoscaling_group_example = ionoscloud.autoscaling.Group(\"autoscaling_group_example\",\n    datacenter_id=datacenter_example.id,\n    max_replica_count=2,\n    min_replica_count=1,\n    name=\"autoscaling_group_example\",\n    policy={\n        \"metric\": \"INSTANCE_CPU_UTILIZATION_AVERAGE\",\n        \"range\": \"PT24H\",\n        \"scale_in_action\": {\n            \"amount\": 1,\n            \"amount_type\": \"ABSOLUTE\",\n            \"termination_policy_type\": \"OLDEST_SERVER_FIRST\",\n            \"cooldown_period\": \"PT5M\",\n            \"delete_volumes\": True,\n        },\n        \"scale_in_threshold\": 33,\n        \"scale_out_action\": {\n            \"amount\": 1,\n            \"amount_type\": \"ABSOLUTE\",\n            \"cooldown_period\": \"PT5M\",\n        },\n        \"scale_out_threshold\": 77,\n        \"unit\": \"PER_HOUR\",\n    },\n    replica_configuration={\n        \"availability_zone\": \"AUTO\",\n        \"cores\": 2,\n        \"cpu_family\": \"INTEL_SKYLAKE\",\n        \"ram\": 2048,\n        \"nics\": [\n            {\n                \"lan\": lan_example1.id,\n                \"name\": \"nic_example_1\",\n                \"dhcp\": True,\n            },\n            {\n                \"lan\": lan_example2.id,\n                \"name\": \"nic_example_2\",\n                \"dhcp\": True,\n                \"firewall_active\": True,\n                \"firewall_type\": \"INGRESS\",\n                \"firewall_rules\": [{\n                    \"name\": \"rule_1\",\n                    \"protocol\": \"TCP\",\n                    \"port_range_start\": 1,\n                    \"port_range_end\": 1000,\n                    \"type\": \"INGRESS\",\n                }],\n                \"flow_logs\": [{\n                    \"name\": \"flow_log_1\",\n                    \"bucket\": \"test-de-bucket\",\n                    \"action\": \"ALL\",\n                    \"direction\": \"BIDIRECTIONAL\",\n                }],\n                \"target_group\": {\n                    \"target_group_id\": autoscaling_target_group.id,\n                    \"port\": 80,\n                    \"weight\": 50,\n                },\n            },\n        ],\n        \"volumes\": [{\n            \"image_alias\": \"ubuntu:latest\",\n            \"name\": \"volume_example\",\n            \"size\": 10,\n            \"type\": \"HDD\",\n            \"user_data\": \"ZWNobyAiSGVsbG8sIFdvcmxkIgo=\",\n            \"image_password\": server_image_password[\"result\"],\n            \"boot_order\": \"AUTO\",\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var datacenterExample = new Ionoscloud.Compute.Datacenter(\"datacenter_example\", new()\n    {\n        Name = \"datacenter_example\",\n        Location = \"de/fra\",\n    });\n\n    var lanExample1 = new Ionoscloud.Compute.Lan(\"lan_example_1\", new()\n    {\n        DatacenterId = datacenterExample.Id,\n        Public = false,\n        Name = \"lan_example_1\",\n    });\n\n    var lanExample2 = new Ionoscloud.Compute.Lan(\"lan_example_2\", new()\n    {\n        DatacenterId = datacenterExample.Id,\n        Public = false,\n        Name = \"lan_example_2\",\n    });\n\n    var autoscalingTargetGroup = new Ionoscloud.Compute.TargetGroup(\"autoscaling_target_group\", new()\n    {\n        Name = \"Target Group Example\",\n        Algorithm = \"ROUND_ROBIN\",\n        Protocol = \"HTTP\",\n        ProtocolVersion = \"HTTP1\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var autoscalingGroupExample = new Ionoscloud.Autoscaling.Group(\"autoscaling_group_example\", new()\n    {\n        DatacenterId = datacenterExample.Id,\n        MaxReplicaCount = 2,\n        MinReplicaCount = 1,\n        Name = \"autoscaling_group_example\",\n        Policy = new Ionoscloud.Autoscaling.Inputs.GroupPolicyArgs\n        {\n            Metric = \"INSTANCE_CPU_UTILIZATION_AVERAGE\",\n            Range = \"PT24H\",\n            ScaleInAction = new Ionoscloud.Autoscaling.Inputs.GroupPolicyScaleInActionArgs\n            {\n                Amount = 1,\n                AmountType = \"ABSOLUTE\",\n                TerminationPolicyType = \"OLDEST_SERVER_FIRST\",\n                CooldownPeriod = \"PT5M\",\n                DeleteVolumes = true,\n            },\n            ScaleInThreshold = 33,\n            ScaleOutAction = new Ionoscloud.Autoscaling.Inputs.GroupPolicyScaleOutActionArgs\n            {\n                Amount = 1,\n                AmountType = \"ABSOLUTE\",\n                CooldownPeriod = \"PT5M\",\n            },\n            ScaleOutThreshold = 77,\n            Unit = \"PER_HOUR\",\n        },\n        ReplicaConfiguration = new Ionoscloud.Autoscaling.Inputs.GroupReplicaConfigurationArgs\n        {\n            AvailabilityZone = \"AUTO\",\n            Cores = 2,\n            CpuFamily = \"INTEL_SKYLAKE\",\n            Ram = 2048,\n            Nics = new[]\n            {\n                new Ionoscloud.Autoscaling.Inputs.GroupReplicaConfigurationNicArgs\n                {\n                    Lan = lanExample1.Id,\n                    Name = \"nic_example_1\",\n                    Dhcp = true,\n                },\n                new Ionoscloud.Autoscaling.Inputs.GroupReplicaConfigurationNicArgs\n                {\n                    Lan = lanExample2.Id,\n                    Name = \"nic_example_2\",\n                    Dhcp = true,\n                    FirewallActive = true,\n                    FirewallType = \"INGRESS\",\n                    FirewallRules = new[]\n                    {\n                        new Ionoscloud.Autoscaling.Inputs.GroupReplicaConfigurationNicFirewallRuleArgs\n                        {\n                            Name = \"rule_1\",\n                            Protocol = \"TCP\",\n                            PortRangeStart = 1,\n                            PortRangeEnd = 1000,\n                            Type = \"INGRESS\",\n                        },\n                    },\n                    FlowLogs = new[]\n                    {\n                        new Ionoscloud.Autoscaling.Inputs.GroupReplicaConfigurationNicFlowLogArgs\n                        {\n                            Name = \"flow_log_1\",\n                            Bucket = \"test-de-bucket\",\n                            Action = \"ALL\",\n                            Direction = \"BIDIRECTIONAL\",\n                        },\n                    },\n                    TargetGroup = new Ionoscloud.Autoscaling.Inputs.GroupReplicaConfigurationNicTargetGroupArgs\n                    {\n                        TargetGroupId = autoscalingTargetGroup.Id,\n                        Port = 80,\n                        Weight = 50,\n                    },\n                },\n            },\n            Volumes = new[]\n            {\n                new Ionoscloud.Autoscaling.Inputs.GroupReplicaConfigurationVolumeArgs\n                {\n                    ImageAlias = \"ubuntu:latest\",\n                    Name = \"volume_example\",\n                    Size = 10,\n                    Type = \"HDD\",\n                    UserData = \"ZWNobyAiSGVsbG8sIFdvcmxkIgo=\",\n                    ImagePassword = serverImagePassword.Result,\n                    BootOrder = \"AUTO\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/autoscaling\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatacenterExample, err := compute.NewDatacenter(ctx, \"datacenter_example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"datacenter_example\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlanExample1, err := compute.NewLan(ctx, \"lan_example_1\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"lan_example_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlanExample2, err := compute.NewLan(ctx, \"lan_example_2\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"lan_example_2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tautoscalingTargetGroup, err := compute.NewTargetGroup(ctx, \"autoscaling_target_group\", \u0026compute.TargetGroupArgs{\n\t\t\tName:            pulumi.String(\"Target Group Example\"),\n\t\t\tAlgorithm:       pulumi.String(\"ROUND_ROBIN\"),\n\t\t\tProtocol:        pulumi.String(\"HTTP\"),\n\t\t\tProtocolVersion: pulumi.String(\"HTTP1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = autoscaling.NewGroup(ctx, \"autoscaling_group_example\", \u0026autoscaling.GroupArgs{\n\t\t\tDatacenterId:    datacenterExample.ID(),\n\t\t\tMaxReplicaCount: pulumi.Int(2),\n\t\t\tMinReplicaCount: pulumi.Int(1),\n\t\t\tName:            pulumi.String(\"autoscaling_group_example\"),\n\t\t\tPolicy: \u0026autoscaling.GroupPolicyArgs{\n\t\t\t\tMetric: pulumi.String(\"INSTANCE_CPU_UTILIZATION_AVERAGE\"),\n\t\t\t\tRange:  pulumi.String(\"PT24H\"),\n\t\t\t\tScaleInAction: \u0026autoscaling.GroupPolicyScaleInActionArgs{\n\t\t\t\t\tAmount:                pulumi.Int(1),\n\t\t\t\t\tAmountType:            pulumi.String(\"ABSOLUTE\"),\n\t\t\t\t\tTerminationPolicyType: pulumi.String(\"OLDEST_SERVER_FIRST\"),\n\t\t\t\t\tCooldownPeriod:        pulumi.String(\"PT5M\"),\n\t\t\t\t\tDeleteVolumes:         pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tScaleInThreshold: pulumi.Int(33),\n\t\t\t\tScaleOutAction: \u0026autoscaling.GroupPolicyScaleOutActionArgs{\n\t\t\t\t\tAmount:         pulumi.Int(1),\n\t\t\t\t\tAmountType:     pulumi.String(\"ABSOLUTE\"),\n\t\t\t\t\tCooldownPeriod: pulumi.String(\"PT5M\"),\n\t\t\t\t},\n\t\t\t\tScaleOutThreshold: pulumi.Int(77),\n\t\t\t\tUnit:              pulumi.String(\"PER_HOUR\"),\n\t\t\t},\n\t\t\tReplicaConfiguration: \u0026autoscaling.GroupReplicaConfigurationArgs{\n\t\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\t\tCores:            pulumi.Int(2),\n\t\t\t\tCpuFamily:        pulumi.String(\"INTEL_SKYLAKE\"),\n\t\t\t\tRam:              pulumi.Int(2048),\n\t\t\t\tNics: autoscaling.GroupReplicaConfigurationNicArray{\n\t\t\t\t\t\u0026autoscaling.GroupReplicaConfigurationNicArgs{\n\t\t\t\t\t\tLan:  lanExample1.ID(),\n\t\t\t\t\t\tName: pulumi.String(\"nic_example_1\"),\n\t\t\t\t\t\tDhcp: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026autoscaling.GroupReplicaConfigurationNicArgs{\n\t\t\t\t\t\tLan:            lanExample2.ID(),\n\t\t\t\t\t\tName:           pulumi.String(\"nic_example_2\"),\n\t\t\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\t\t\tFirewallType:   pulumi.String(\"INGRESS\"),\n\t\t\t\t\t\tFirewallRules: autoscaling.GroupReplicaConfigurationNicFirewallRuleArray{\n\t\t\t\t\t\t\t\u0026autoscaling.GroupReplicaConfigurationNicFirewallRuleArgs{\n\t\t\t\t\t\t\t\tName:           pulumi.String(\"rule_1\"),\n\t\t\t\t\t\t\t\tProtocol:       pulumi.String(\"TCP\"),\n\t\t\t\t\t\t\t\tPortRangeStart: pulumi.Int(1),\n\t\t\t\t\t\t\t\tPortRangeEnd:   pulumi.Int(1000),\n\t\t\t\t\t\t\t\tType:           pulumi.String(\"INGRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFlowLogs: autoscaling.GroupReplicaConfigurationNicFlowLogArray{\n\t\t\t\t\t\t\t\u0026autoscaling.GroupReplicaConfigurationNicFlowLogArgs{\n\t\t\t\t\t\t\t\tName:      pulumi.String(\"flow_log_1\"),\n\t\t\t\t\t\t\t\tBucket:    pulumi.String(\"test-de-bucket\"),\n\t\t\t\t\t\t\t\tAction:    pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t\tDirection: pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetGroup: \u0026autoscaling.GroupReplicaConfigurationNicTargetGroupArgs{\n\t\t\t\t\t\t\tTargetGroupId: autoscalingTargetGroup.ID(),\n\t\t\t\t\t\t\tPort:          pulumi.Int(80),\n\t\t\t\t\t\t\tWeight:        pulumi.Int(50),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: autoscaling.GroupReplicaConfigurationVolumeArray{\n\t\t\t\t\t\u0026autoscaling.GroupReplicaConfigurationVolumeArgs{\n\t\t\t\t\t\tImageAlias:    pulumi.String(\"ubuntu:latest\"),\n\t\t\t\t\t\tName:          pulumi.String(\"volume_example\"),\n\t\t\t\t\t\tSize:          pulumi.Int(10),\n\t\t\t\t\t\tType:          pulumi.String(\"HDD\"),\n\t\t\t\t\t\tUserData:      pulumi.String(\"ZWNobyAiSGVsbG8sIFdvcmxkIgo=\"),\n\t\t\t\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\t\t\t\tBootOrder:     pulumi.String(\"AUTO\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.TargetGroup;\nimport com.ionoscloud.pulumi.ionoscloud.compute.TargetGroupArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.autoscaling.Group;\nimport com.ionoscloud.pulumi.ionoscloud.autoscaling.GroupArgs;\nimport com.pulumi.ionoscloud.autoscaling.inputs.GroupPolicyArgs;\nimport com.pulumi.ionoscloud.autoscaling.inputs.GroupPolicyScaleInActionArgs;\nimport com.pulumi.ionoscloud.autoscaling.inputs.GroupPolicyScaleOutActionArgs;\nimport com.pulumi.ionoscloud.autoscaling.inputs.GroupReplicaConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var datacenterExample = new Datacenter(\"datacenterExample\", DatacenterArgs.builder()\n            .name(\"datacenter_example\")\n            .location(\"de/fra\")\n            .build());\n\n        var lanExample1 = new Lan(\"lanExample1\", LanArgs.builder()\n            .datacenterId(datacenterExample.id())\n            .public_(false)\n            .name(\"lan_example_1\")\n            .build());\n\n        var lanExample2 = new Lan(\"lanExample2\", LanArgs.builder()\n            .datacenterId(datacenterExample.id())\n            .public_(false)\n            .name(\"lan_example_2\")\n            .build());\n\n        var autoscalingTargetGroup = new TargetGroup(\"autoscalingTargetGroup\", TargetGroupArgs.builder()\n            .name(\"Target Group Example\")\n            .algorithm(\"ROUND_ROBIN\")\n            .protocol(\"HTTP\")\n            .protocolVersion(\"HTTP1\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var autoscalingGroupExample = new Group(\"autoscalingGroupExample\", GroupArgs.builder()\n            .datacenterId(datacenterExample.id())\n            .maxReplicaCount(2)\n            .minReplicaCount(1)\n            .name(\"autoscaling_group_example\")\n            .policy(GroupPolicyArgs.builder()\n                .metric(\"INSTANCE_CPU_UTILIZATION_AVERAGE\")\n                .range(\"PT24H\")\n                .scaleInAction(GroupPolicyScaleInActionArgs.builder()\n                    .amount(1)\n                    .amountType(\"ABSOLUTE\")\n                    .terminationPolicyType(\"OLDEST_SERVER_FIRST\")\n                    .cooldownPeriod(\"PT5M\")\n                    .deleteVolumes(true)\n                    .build())\n                .scaleInThreshold(33)\n                .scaleOutAction(GroupPolicyScaleOutActionArgs.builder()\n                    .amount(1)\n                    .amountType(\"ABSOLUTE\")\n                    .cooldownPeriod(\"PT5M\")\n                    .build())\n                .scaleOutThreshold(77)\n                .unit(\"PER_HOUR\")\n                .build())\n            .replicaConfiguration(GroupReplicaConfigurationArgs.builder()\n                .availabilityZone(\"AUTO\")\n                .cores(2)\n                .cpuFamily(\"INTEL_SKYLAKE\")\n                .ram(2048)\n                .nics(                \n                    GroupReplicaConfigurationNicArgs.builder()\n                        .lan(lanExample1.id())\n                        .name(\"nic_example_1\")\n                        .dhcp(true)\n                        .build(),\n                    GroupReplicaConfigurationNicArgs.builder()\n                        .lan(lanExample2.id())\n                        .name(\"nic_example_2\")\n                        .dhcp(true)\n                        .firewallActive(true)\n                        .firewallType(\"INGRESS\")\n                        .firewallRules(GroupReplicaConfigurationNicFirewallRuleArgs.builder()\n                            .name(\"rule_1\")\n                            .protocol(\"TCP\")\n                            .portRangeStart(1)\n                            .portRangeEnd(1000)\n                            .type(\"INGRESS\")\n                            .build())\n                        .flowLogs(GroupReplicaConfigurationNicFlowLogArgs.builder()\n                            .name(\"flow_log_1\")\n                            .bucket(\"test-de-bucket\")\n                            .action(\"ALL\")\n                            .direction(\"BIDIRECTIONAL\")\n                            .build())\n                        .targetGroup(GroupReplicaConfigurationNicTargetGroupArgs.builder()\n                            .targetGroupId(autoscalingTargetGroup.id())\n                            .port(80)\n                            .weight(50)\n                            .build())\n                        .build())\n                .volumes(GroupReplicaConfigurationVolumeArgs.builder()\n                    .imageAlias(\"ubuntu:latest\")\n                    .name(\"volume_example\")\n                    .size(10)\n                    .type(\"HDD\")\n                    .userData(\"ZWNobyAiSGVsbG8sIFdvcmxkIgo=\")\n                    .imagePassword(serverImagePassword.result())\n                    .bootOrder(\"AUTO\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  datacenterExample:\n    type: ionoscloud:compute:Datacenter\n    name: datacenter_example\n    properties:\n      name: datacenter_example\n      location: de/fra\n  lanExample1:\n    type: ionoscloud:compute:Lan\n    name: lan_example_1\n    properties:\n      datacenterId: ${datacenterExample.id}\n      public: false\n      name: lan_example_1\n  lanExample2:\n    type: ionoscloud:compute:Lan\n    name: lan_example_2\n    properties:\n      datacenterId: ${datacenterExample.id}\n      public: false\n      name: lan_example_2\n  autoscalingTargetGroup:\n    type: ionoscloud:compute:TargetGroup\n    name: autoscaling_target_group\n    properties:\n      name: Target Group Example\n      algorithm: ROUND_ROBIN\n      protocol: HTTP\n      protocolVersion: HTTP1\n  autoscalingGroupExample:\n    type: ionoscloud:autoscaling:Group\n    name: autoscaling_group_example\n    properties:\n      datacenterId: ${datacenterExample.id}\n      maxReplicaCount: 2\n      minReplicaCount: 1\n      name: autoscaling_group_example\n      policy:\n        metric: INSTANCE_CPU_UTILIZATION_AVERAGE\n        range: PT24H\n        scaleInAction:\n          amount: 1\n          amountType: ABSOLUTE\n          terminationPolicyType: OLDEST_SERVER_FIRST\n          cooldownPeriod: PT5M\n          deleteVolumes: true\n        scaleInThreshold: 33\n        scaleOutAction:\n          amount: 1\n          amountType: ABSOLUTE\n          cooldownPeriod: PT5M\n        scaleOutThreshold: 77\n        unit: PER_HOUR\n      replicaConfiguration:\n        availabilityZone: AUTO\n        cores: '2'\n        cpuFamily: INTEL_SKYLAKE\n        ram: 2048\n        nics:\n          - lan: ${lanExample1.id}\n            name: nic_example_1\n            dhcp: true\n          - lan: ${lanExample2.id}\n            name: nic_example_2\n            dhcp: true\n            firewallActive: true\n            firewallType: INGRESS\n            firewallRules:\n              - name: rule_1\n                protocol: TCP\n                portRangeStart: 1\n                portRangeEnd: 1000\n                type: INGRESS\n            flowLogs:\n              - name: flow_log_1\n                bucket: test-de-bucket\n                action: ALL\n                direction: BIDIRECTIONAL\n            targetGroup:\n              targetGroupId: ${autoscalingTargetGroup.id}\n              port: 80\n              weight: 50\n        volumes:\n          - imageAlias: ubuntu:latest\n            name: volume_example\n            size: 10\n            type: HDD\n            userData: ZWNobyAiSGVsbG8sIFdvcmxkIgo=\n            imagePassword: ${serverImagePassword.result}\n            bootOrder: AUTO\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] Unique identifier for the resource\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of the data center.\n"
                },
                "maxReplicaCount": {
                    "type": "integer",
                    "description": "[int] The maximum value for the number of replicas on a VM Auto Scaling Group. Must be \u003e= 0 and \u003c= 200. Will be enforced for both automatic and manual changes.\n"
                },
                "minReplicaCount": {
                    "type": "integer",
                    "description": "[int] The minimum value for the number of replicas on a VM Auto Scaling Group. Must be \u003e= 0 and \u003c= 200. Will be enforced for both automatic and manual changes.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] User-defined name for the Autoscaling Group.\n"
                },
                "policy": {
                    "$ref": "#/types/ionoscloud:autoscaling/GroupPolicy:GroupPolicy",
                    "description": "[List] Specifies the behavior of this Autoscaling Group. A policy consists of Triggers and Actions, whereby an Action is some kind of automated behavior, and a Trigger is defined by the circumstances under which the Action is triggered. Currently, two separate Actions, namely Scaling In and Out are supported, triggered through Thresholds defined on a given Metric.\n"
                },
                "replicaConfiguration": {
                    "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfiguration:GroupReplicaConfiguration",
                    "description": "[List]\n"
                }
            },
            "required": [
                "datacenterId",
                "location",
                "maxReplicaCount",
                "minReplicaCount",
                "name",
                "policy",
                "replicaConfiguration"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] Unique identifier for the resource\n"
                },
                "maxReplicaCount": {
                    "type": "integer",
                    "description": "[int] The maximum value for the number of replicas on a VM Auto Scaling Group. Must be \u003e= 0 and \u003c= 200. Will be enforced for both automatic and manual changes.\n"
                },
                "minReplicaCount": {
                    "type": "integer",
                    "description": "[int] The minimum value for the number of replicas on a VM Auto Scaling Group. Must be \u003e= 0 and \u003c= 200. Will be enforced for both automatic and manual changes.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] User-defined name for the Autoscaling Group.\n"
                },
                "policy": {
                    "$ref": "#/types/ionoscloud:autoscaling/GroupPolicy:GroupPolicy",
                    "description": "[List] Specifies the behavior of this Autoscaling Group. A policy consists of Triggers and Actions, whereby an Action is some kind of automated behavior, and a Trigger is defined by the circumstances under which the Action is triggered. Currently, two separate Actions, namely Scaling In and Out are supported, triggered through Thresholds defined on a given Metric.\n"
                },
                "replicaConfiguration": {
                    "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfiguration:GroupReplicaConfiguration",
                    "description": "[List]\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "maxReplicaCount",
                "minReplicaCount",
                "policy",
                "replicaConfiguration"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Group resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] Unique identifier for the resource\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Location of the data center.\n"
                    },
                    "maxReplicaCount": {
                        "type": "integer",
                        "description": "[int] The maximum value for the number of replicas on a VM Auto Scaling Group. Must be \u003e= 0 and \u003c= 200. Will be enforced for both automatic and manual changes.\n"
                    },
                    "minReplicaCount": {
                        "type": "integer",
                        "description": "[int] The minimum value for the number of replicas on a VM Auto Scaling Group. Must be \u003e= 0 and \u003c= 200. Will be enforced for both automatic and manual changes.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] User-defined name for the Autoscaling Group.\n"
                    },
                    "policy": {
                        "$ref": "#/types/ionoscloud:autoscaling/GroupPolicy:GroupPolicy",
                        "description": "[List] Specifies the behavior of this Autoscaling Group. A policy consists of Triggers and Actions, whereby an Action is some kind of automated behavior, and a Trigger is defined by the circumstances under which the Action is triggered. Currently, two separate Actions, namely Scaling In and Out are supported, triggered through Thresholds defined on a given Metric.\n"
                    },
                    "replicaConfiguration": {
                        "$ref": "#/types/ionoscloud:autoscaling/GroupReplicaConfiguration:GroupReplicaConfiguration",
                        "description": "[List]\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:cdn/distribution:Distribution": {
            "description": "Manages a [CDN Distribution](https://docs.ionos.com/cloud/network-services/cdn/overview#how-does-cdn-work) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as std from \"@pulumi/std\";\n\n//optionally you can add a certificate to the distribution\nconst cert = new ionoscloud.cert.Certificate(\"cert\", {\n    name: \"add_name_here\",\n    certificate: std.file({\n        input: \"path_to_cert\",\n    }).result,\n    certificateChain: std.file({\n        input: \"path_to_cert_chain\",\n    }).result,\n    privateKey: std.file({\n        input: \"path_to_private_key\",\n    }).result,\n});\nconst example = new ionoscloud.cdn.Distribution(\"example\", {\n    domain: \"example.com\",\n    certificateId: cert.id,\n    routingRules: [\n        {\n            scheme: \"https\",\n            prefix: \"/api\",\n            upstream: {\n                host: \"server.example.com\",\n                caching: true,\n                waf: true,\n                sniMode: \"distribution\",\n                rateLimitClass: \"R500\",\n                geoRestrictions: {\n                    allowLists: [\n                        \"CN\",\n                        \"RU\",\n                    ],\n                },\n            },\n        },\n        {\n            scheme: \"http/https\",\n            prefix: \"/api2\",\n            upstream: {\n                host: \"server2.example.com\",\n                caching: false,\n                waf: false,\n                sniMode: \"origin\",\n                rateLimitClass: \"R10\",\n                geoRestrictions: {\n                    blockLists: [\n                        \"CN\",\n                        \"RU\",\n                    ],\n                },\n            },\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_std as std\n\n#optionally you can add a certificate to the distribution\ncert = ionoscloud.cert.Certificate(\"cert\",\n    name=\"add_name_here\",\n    certificate=std.file(input=\"path_to_cert\")[\"result\"],\n    certificate_chain=std.file(input=\"path_to_cert_chain\")[\"result\"],\n    private_key=std.file(input=\"path_to_private_key\")[\"result\"])\nexample = ionoscloud.cdn.Distribution(\"example\",\n    domain=\"example.com\",\n    certificate_id=cert.id,\n    routing_rules=[\n        {\n            \"scheme\": \"https\",\n            \"prefix\": \"/api\",\n            \"upstream\": {\n                \"host\": \"server.example.com\",\n                \"caching\": True,\n                \"waf\": True,\n                \"sni_mode\": \"distribution\",\n                \"rate_limit_class\": \"R500\",\n                \"geo_restrictions\": {\n                    \"allow_lists\": [\n                        \"CN\",\n                        \"RU\",\n                    ],\n                },\n            },\n        },\n        {\n            \"scheme\": \"http/https\",\n            \"prefix\": \"/api2\",\n            \"upstream\": {\n                \"host\": \"server2.example.com\",\n                \"caching\": False,\n                \"waf\": False,\n                \"sni_mode\": \"origin\",\n                \"rate_limit_class\": \"R10\",\n                \"geo_restrictions\": {\n                    \"block_lists\": [\n                        \"CN\",\n                        \"RU\",\n                    ],\n                },\n            },\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //optionally you can add a certificate to the distribution\n    var cert = new Ionoscloud.Cert.IonosCertificate(\"cert\", new()\n    {\n        Name = \"add_name_here\",\n        Certificate = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_cert\",\n        }).Result,\n        CertificateChain = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_cert_chain\",\n        }).Result,\n        PrivateKey = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_private_key\",\n        }).Result,\n    });\n\n    var example = new Ionoscloud.Cdn.Distribution(\"example\", new()\n    {\n        Domain = \"example.com\",\n        CertificateId = cert.Id,\n        RoutingRules = new[]\n        {\n            new Ionoscloud.Cdn.Inputs.DistributionRoutingRuleArgs\n            {\n                Scheme = \"https\",\n                Prefix = \"/api\",\n                Upstream = new Ionoscloud.Cdn.Inputs.DistributionRoutingRuleUpstreamArgs\n                {\n                    Host = \"server.example.com\",\n                    Caching = true,\n                    Waf = true,\n                    SniMode = \"distribution\",\n                    RateLimitClass = \"R500\",\n                    GeoRestrictions = new Ionoscloud.Cdn.Inputs.DistributionRoutingRuleUpstreamGeoRestrictionsArgs\n                    {\n                        AllowLists = new[]\n                        {\n                            \"CN\",\n                            \"RU\",\n                        },\n                    },\n                },\n            },\n            new Ionoscloud.Cdn.Inputs.DistributionRoutingRuleArgs\n            {\n                Scheme = \"http/https\",\n                Prefix = \"/api2\",\n                Upstream = new Ionoscloud.Cdn.Inputs.DistributionRoutingRuleUpstreamArgs\n                {\n                    Host = \"server2.example.com\",\n                    Caching = false,\n                    Waf = false,\n                    SniMode = \"origin\",\n                    RateLimitClass = \"R10\",\n                    GeoRestrictions = new Ionoscloud.Cdn.Inputs.DistributionRoutingRuleUpstreamGeoRestrictionsArgs\n                    {\n                        BlockLists = new[]\n                        {\n                            \"CN\",\n                            \"RU\",\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cdn\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_cert\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_cert_chain\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_private_key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// optionally you can add a certificate to the distribution\n\t\tcert, err := cert.NewCertificate(ctx, \"cert\", \u0026cert.CertificateArgs{\n\t\t\tName:             pulumi.String(\"add_name_here\"),\n\t\t\tCertificate:      invokeFile.Result,\n\t\t\tCertificateChain: invokeFile1.Result,\n\t\t\tPrivateKey:       invokeFile2.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cdn.NewDistribution(ctx, \"example\", \u0026cdn.DistributionArgs{\n\t\t\tDomain:        pulumi.String(\"example.com\"),\n\t\t\tCertificateId: cert.ID(),\n\t\t\tRoutingRules: cdn.DistributionRoutingRuleArray{\n\t\t\t\t\u0026cdn.DistributionRoutingRuleArgs{\n\t\t\t\t\tScheme: pulumi.String(\"https\"),\n\t\t\t\t\tPrefix: pulumi.String(\"/api\"),\n\t\t\t\t\tUpstream: \u0026cdn.DistributionRoutingRuleUpstreamArgs{\n\t\t\t\t\t\tHost:           pulumi.String(\"server.example.com\"),\n\t\t\t\t\t\tCaching:        pulumi.Bool(true),\n\t\t\t\t\t\tWaf:            pulumi.Bool(true),\n\t\t\t\t\t\tSniMode:        pulumi.String(\"distribution\"),\n\t\t\t\t\t\tRateLimitClass: pulumi.String(\"R500\"),\n\t\t\t\t\t\tGeoRestrictions: \u0026cdn.DistributionRoutingRuleUpstreamGeoRestrictionsArgs{\n\t\t\t\t\t\t\tAllowLists: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"CN\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"RU\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026cdn.DistributionRoutingRuleArgs{\n\t\t\t\t\tScheme: pulumi.String(\"http/https\"),\n\t\t\t\t\tPrefix: pulumi.String(\"/api2\"),\n\t\t\t\t\tUpstream: \u0026cdn.DistributionRoutingRuleUpstreamArgs{\n\t\t\t\t\t\tHost:           pulumi.String(\"server2.example.com\"),\n\t\t\t\t\t\tCaching:        pulumi.Bool(false),\n\t\t\t\t\t\tWaf:            pulumi.Bool(false),\n\t\t\t\t\t\tSniMode:        pulumi.String(\"origin\"),\n\t\t\t\t\t\tRateLimitClass: pulumi.String(\"R10\"),\n\t\t\t\t\t\tGeoRestrictions: \u0026cdn.DistributionRoutingRuleUpstreamGeoRestrictionsArgs{\n\t\t\t\t\t\t\tBlockLists: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"CN\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"RU\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.cert.Certificate;\nimport com.ionoscloud.pulumi.ionoscloud.cert.CertificateArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.ionoscloud.pulumi.ionoscloud.cdn.Distribution;\nimport com.ionoscloud.pulumi.ionoscloud.cdn.DistributionArgs;\nimport com.pulumi.ionoscloud.cdn.inputs.DistributionRoutingRuleArgs;\nimport com.pulumi.ionoscloud.cdn.inputs.DistributionRoutingRuleUpstreamArgs;\nimport com.pulumi.ionoscloud.cdn.inputs.DistributionRoutingRuleUpstreamGeoRestrictionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //optionally you can add a certificate to the distribution\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"add_name_here\")\n            .certificate(StdFunctions.file(Map.of(\"input\", \"path_to_cert\")).result())\n            .certificateChain(StdFunctions.file(Map.of(\"input\", \"path_to_cert_chain\")).result())\n            .privateKey(StdFunctions.file(Map.of(\"input\", \"path_to_private_key\")).result())\n            .build());\n\n        var example = new Distribution(\"example\", DistributionArgs.builder()\n            .domain(\"example.com\")\n            .certificateId(cert.id())\n            .routingRules(            \n                DistributionRoutingRuleArgs.builder()\n                    .scheme(\"https\")\n                    .prefix(\"/api\")\n                    .upstream(DistributionRoutingRuleUpstreamArgs.builder()\n                        .host(\"server.example.com\")\n                        .caching(true)\n                        .waf(true)\n                        .sniMode(\"distribution\")\n                        .rateLimitClass(\"R500\")\n                        .geoRestrictions(DistributionRoutingRuleUpstreamGeoRestrictionsArgs.builder()\n                            .allowLists(                            \n                                \"CN\",\n                                \"RU\")\n                            .build())\n                        .build())\n                    .build(),\n                DistributionRoutingRuleArgs.builder()\n                    .scheme(\"http/https\")\n                    .prefix(\"/api2\")\n                    .upstream(DistributionRoutingRuleUpstreamArgs.builder()\n                        .host(\"server2.example.com\")\n                        .caching(false)\n                        .waf(false)\n                        .sniMode(\"origin\")\n                        .rateLimitClass(\"R10\")\n                        .geoRestrictions(DistributionRoutingRuleUpstreamGeoRestrictionsArgs.builder()\n                            .blockLists(                            \n                                \"CN\",\n                                \"RU\")\n                            .build())\n                        .build())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:cdn:Distribution\n    properties:\n      domain: example.com\n      certificateId: ${cert.id}\n      routingRules:\n        - scheme: https\n          prefix: /api\n          upstream:\n            host: server.example.com\n            caching: true\n            waf: true\n            sniMode: distribution\n            rateLimitClass: R500\n            geoRestrictions:\n              allowLists:\n                - CN\n                - RU\n        - scheme: http/https\n          prefix: /api2\n          upstream:\n            host: server2.example.com\n            caching: false\n            waf: false\n            sniMode: origin\n            rateLimitClass: R10\n            geoRestrictions:\n              blockLists:\n                - CN\n                - RU\n  #optionally you can add a certificate to the distribution\n  cert:\n    type: ionoscloud:cert:Certificate\n    properties:\n      name: add_name_here\n      certificate:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_cert\n          return: result\n      certificateChain:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_cert_chain\n          return: result\n      privateKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_private_key\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Distribution can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_cdn_distribution.myDistribution distribution uuid\n```\n\n",
            "properties": {
                "certificateId": {
                    "type": "string",
                    "description": "[string] The ID of the certificate to use for the distribution. You can create certificates with the certificate resource.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "[string] The domain of the distribution.\n"
                },
                "publicEndpointV4": {
                    "type": "string",
                    "description": "IP of the distribution, it has to be included on the domain DNS Zone as A record.\n"
                },
                "publicEndpointV6": {
                    "type": "string",
                    "description": "IP of the distribution, it has to be included on the domain DNS Zone as AAAA record.\n"
                },
                "resourceUrn": {
                    "type": "string",
                    "description": "Unique resource indentifier.\n"
                },
                "routingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:cdn/DistributionRoutingRule:DistributionRoutingRule"
                    },
                    "description": "[list] The routing rules for the distribution.\n"
                }
            },
            "required": [
                "domain",
                "publicEndpointV4",
                "publicEndpointV6",
                "resourceUrn",
                "routingRules"
            ],
            "inputProperties": {
                "certificateId": {
                    "type": "string",
                    "description": "[string] The ID of the certificate to use for the distribution. You can create certificates with the certificate resource.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "[string] The domain of the distribution.\n"
                },
                "routingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:cdn/DistributionRoutingRule:DistributionRoutingRule"
                    },
                    "description": "[list] The routing rules for the distribution.\n"
                }
            },
            "requiredInputs": [
                "domain",
                "routingRules"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Distribution resources.\n",
                "properties": {
                    "certificateId": {
                        "type": "string",
                        "description": "[string] The ID of the certificate to use for the distribution. You can create certificates with the certificate resource.\n"
                    },
                    "domain": {
                        "type": "string",
                        "description": "[string] The domain of the distribution.\n"
                    },
                    "publicEndpointV4": {
                        "type": "string",
                        "description": "IP of the distribution, it has to be included on the domain DNS Zone as A record.\n"
                    },
                    "publicEndpointV6": {
                        "type": "string",
                        "description": "IP of the distribution, it has to be included on the domain DNS Zone as AAAA record.\n"
                    },
                    "resourceUrn": {
                        "type": "string",
                        "description": "Unique resource indentifier.\n"
                    },
                    "routingRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:cdn/DistributionRoutingRule:DistributionRoutingRule"
                        },
                        "description": "[list] The routing rules for the distribution.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:cert/autoCertificate:AutoCertificate": {
            "description": "Manages a [CM AutoCertificate](https://docs.ionos.com/cloud/network-services/certificate-manager/auto-certificate/create-auto-certificate). \n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.cert.AutoCertificateProvider(\"example\", {\n    name: \"Let's Encrypt\",\n    email: \"user@ionos.com\",\n    location: \"de/fra\",\n    server: \"https://acme-v02.api.letsencrypt.org/directory\",\n    externalAccountBinding: {\n        keyId: \"some-key-id\",\n        keySecret: \"secret\",\n    },\n});\nconst exampleAutoCertificate = new ionoscloud.cert.AutoCertificate(\"example\", {\n    providerId: example.id,\n    commonName: \"www.example.com\",\n    location: example.location,\n    keyAlgorithm: \"rsa4096\",\n    name: \"My Auto renewed certificate\",\n    subjectAlternativeNames: [\"app.example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.AutoCertificateProvider(\"example\",\n    name=\"Let's Encrypt\",\n    email=\"user@ionos.com\",\n    location=\"de/fra\",\n    server=\"https://acme-v02.api.letsencrypt.org/directory\",\n    external_account_binding={\n        \"key_id\": \"some-key-id\",\n        \"key_secret\": \"secret\",\n    })\nexample_auto_certificate = ionoscloud.cert.AutoCertificate(\"example\",\n    provider_id=example.id,\n    common_name=\"www.example.com\",\n    location=example.location,\n    key_algorithm=\"rsa4096\",\n    name=\"My Auto renewed certificate\",\n    subject_alternative_names=[\"app.example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Cert.AutoCertificateProvider(\"example\", new()\n    {\n        Name = \"Let's Encrypt\",\n        Email = \"user@ionos.com\",\n        Location = \"de/fra\",\n        Server = \"https://acme-v02.api.letsencrypt.org/directory\",\n        ExternalAccountBinding = new Ionoscloud.Cert.Inputs.AutoCertificateProviderExternalAccountBindingArgs\n        {\n            KeyId = \"some-key-id\",\n            KeySecret = \"secret\",\n        },\n    });\n\n    var exampleAutoCertificate = new Ionoscloud.Cert.AutoCertificate(\"example\", new()\n    {\n        ProviderId = example.Id,\n        CommonName = \"www.example.com\",\n        Location = example.Location,\n        KeyAlgorithm = \"rsa4096\",\n        Name = \"My Auto renewed certificate\",\n        SubjectAlternativeNames = new[]\n        {\n            \"app.example.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cert.NewAutoCertificateProvider(ctx, \"example\", \u0026cert.AutoCertificateProviderArgs{\n\t\t\tName:     pulumi.String(\"Let's Encrypt\"),\n\t\t\tEmail:    pulumi.String(\"user@ionos.com\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tServer:   pulumi.String(\"https://acme-v02.api.letsencrypt.org/directory\"),\n\t\t\tExternalAccountBinding: \u0026cert.AutoCertificateProviderExternalAccountBindingArgs{\n\t\t\t\tKeyId:     pulumi.String(\"some-key-id\"),\n\t\t\t\tKeySecret: pulumi.String(\"secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cert.NewAutoCertificate(ctx, \"example\", \u0026cert.AutoCertificateArgs{\n\t\t\tProviderId:   example.ID(),\n\t\t\tCommonName:   pulumi.String(\"www.example.com\"),\n\t\t\tLocation:     example.Location,\n\t\t\tKeyAlgorithm: pulumi.String(\"rsa4096\"),\n\t\t\tName:         pulumi.String(\"My Auto renewed certificate\"),\n\t\t\tSubjectAlternativeNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"app.example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.cert.AutoCertificateProvider;\nimport com.ionoscloud.pulumi.ionoscloud.cert.AutoCertificateProviderArgs;\nimport com.pulumi.ionoscloud.cert.inputs.AutoCertificateProviderExternalAccountBindingArgs;\nimport com.ionoscloud.pulumi.ionoscloud.cert.AutoCertificate;\nimport com.ionoscloud.pulumi.ionoscloud.cert.AutoCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new AutoCertificateProvider(\"example\", AutoCertificateProviderArgs.builder()\n            .name(\"Let's Encrypt\")\n            .email(\"user@ionos.com\")\n            .location(\"de/fra\")\n            .server(\"https://acme-v02.api.letsencrypt.org/directory\")\n            .externalAccountBinding(AutoCertificateProviderExternalAccountBindingArgs.builder()\n                .keyId(\"some-key-id\")\n                .keySecret(\"secret\")\n                .build())\n            .build());\n\n        var exampleAutoCertificate = new AutoCertificate(\"exampleAutoCertificate\", AutoCertificateArgs.builder()\n            .providerId(example.id())\n            .commonName(\"www.example.com\")\n            .location(example.location())\n            .keyAlgorithm(\"rsa4096\")\n            .name(\"My Auto renewed certificate\")\n            .subjectAlternativeNames(\"app.example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:cert:AutoCertificateProvider\n    properties:\n      name: Let's Encrypt\n      email: user@ionos.com\n      location: de/fra\n      server: https://acme-v02.api.letsencrypt.org/directory\n      externalAccountBinding:\n        keyId: some-key-id\n        keySecret: secret\n  exampleAutoCertificate:\n    type: ionoscloud:cert:AutoCertificate\n    name: example\n    properties:\n      providerId: ${example.id}\n      commonName: www.example.com\n      location: ${example.location}\n      keyAlgorithm: rsa4096\n      name: My Auto renewed certificate\n      subjectAlternativeNames:\n        - app.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`autoCertificateId`\" pulumi-lang-dotnet=\"`AutoCertificateId`\" pulumi-lang-go=\"`autoCertificateId`\" pulumi-lang-python=\"`auto_certificate_id`\" pulumi-lang-yaml=\"`autoCertificateId`\" pulumi-lang-java=\"`autoCertificateId`\"\u003e`autoCertificateId`\u003c/span\u003e and the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, separated by `:`, e.g.\n\n```sh\n$ pulumi import ionoscloud:cert/autoCertificate:AutoCertificate example location:auto_certificate_id\n```\n\n",
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "[string] The common name (DNS) of the certificate to issue. The common name needs to be part of a zone in IONOS Cloud DNS.\n"
                },
                "keyAlgorithm": {
                    "type": "string",
                    "description": "[string] The key algorithm used to generate the certificate.\n"
                },
                "lastIssuedCertificateId": {
                    "type": "string",
                    "description": "[string] The ID of the last certificate that was issued.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the auto-certificate. Available locations: `de/fra`, `de/fra/2`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] A certificate name used for management purposes.\n"
                },
                "providerId": {
                    "type": "string",
                    "description": "[string] The certificate provider used to issue the certificates.\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list][string] Optional additional names to be added to the issued certificate. The additional names needs to be part of a zone in IONOS Cloud DNS.\n"
                }
            },
            "required": [
                "commonName",
                "keyAlgorithm",
                "lastIssuedCertificateId",
                "location",
                "name",
                "providerId"
            ],
            "inputProperties": {
                "commonName": {
                    "type": "string",
                    "description": "[string] The common name (DNS) of the certificate to issue. The common name needs to be part of a zone in IONOS Cloud DNS.\n",
                    "willReplaceOnChanges": true
                },
                "keyAlgorithm": {
                    "type": "string",
                    "description": "[string] The key algorithm used to generate the certificate.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the auto-certificate. Available locations: `de/fra`, `de/fra/2`.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] A certificate name used for management purposes.\n"
                },
                "providerId": {
                    "type": "string",
                    "description": "[string] The certificate provider used to issue the certificates.\n",
                    "willReplaceOnChanges": true
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list][string] Optional additional names to be added to the issued certificate. The additional names needs to be part of a zone in IONOS Cloud DNS.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "commonName",
                "keyAlgorithm",
                "location",
                "providerId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AutoCertificate resources.\n",
                "properties": {
                    "commonName": {
                        "type": "string",
                        "description": "[string] The common name (DNS) of the certificate to issue. The common name needs to be part of a zone in IONOS Cloud DNS.\n",
                        "willReplaceOnChanges": true
                    },
                    "keyAlgorithm": {
                        "type": "string",
                        "description": "[string] The key algorithm used to generate the certificate.\n",
                        "willReplaceOnChanges": true
                    },
                    "lastIssuedCertificateId": {
                        "type": "string",
                        "description": "[string] The ID of the last certificate that was issued.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the auto-certificate. Available locations: `de/fra`, `de/fra/2`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] A certificate name used for management purposes.\n"
                    },
                    "providerId": {
                        "type": "string",
                        "description": "[string] The certificate provider used to issue the certificates.\n",
                        "willReplaceOnChanges": true
                    },
                    "subjectAlternativeNames": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list][string] Optional additional names to be added to the issued certificate. The additional names needs to be part of a zone in IONOS Cloud DNS.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:cert/autoCertificateProvider:AutoCertificateProvider": {
            "description": "Manages a [CM provider](https://docs.ionos.com/cloud/network-services/certificate-manager). \n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.cert.AutoCertificateProvider(\"example\", {\n    name: \"Let's Encrypt\",\n    email: \"user@example.com\",\n    location: \"de/fra\",\n    server: \"https://acme-v02.api.letsencrypt.org/directory\",\n    externalAccountBinding: {\n        keyId: \"some-key-id\",\n        keySecret: \"secret\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.AutoCertificateProvider(\"example\",\n    name=\"Let's Encrypt\",\n    email=\"user@example.com\",\n    location=\"de/fra\",\n    server=\"https://acme-v02.api.letsencrypt.org/directory\",\n    external_account_binding={\n        \"key_id\": \"some-key-id\",\n        \"key_secret\": \"secret\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Cert.AutoCertificateProvider(\"example\", new()\n    {\n        Name = \"Let's Encrypt\",\n        Email = \"user@example.com\",\n        Location = \"de/fra\",\n        Server = \"https://acme-v02.api.letsencrypt.org/directory\",\n        ExternalAccountBinding = new Ionoscloud.Cert.Inputs.AutoCertificateProviderExternalAccountBindingArgs\n        {\n            KeyId = \"some-key-id\",\n            KeySecret = \"secret\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cert.NewAutoCertificateProvider(ctx, \"example\", \u0026cert.AutoCertificateProviderArgs{\n\t\t\tName:     pulumi.String(\"Let's Encrypt\"),\n\t\t\tEmail:    pulumi.String(\"user@example.com\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tServer:   pulumi.String(\"https://acme-v02.api.letsencrypt.org/directory\"),\n\t\t\tExternalAccountBinding: \u0026cert.AutoCertificateProviderExternalAccountBindingArgs{\n\t\t\t\tKeyId:     pulumi.String(\"some-key-id\"),\n\t\t\t\tKeySecret: pulumi.String(\"secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.cert.AutoCertificateProvider;\nimport com.ionoscloud.pulumi.ionoscloud.cert.AutoCertificateProviderArgs;\nimport com.pulumi.ionoscloud.cert.inputs.AutoCertificateProviderExternalAccountBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new AutoCertificateProvider(\"example\", AutoCertificateProviderArgs.builder()\n            .name(\"Let's Encrypt\")\n            .email(\"user@example.com\")\n            .location(\"de/fra\")\n            .server(\"https://acme-v02.api.letsencrypt.org/directory\")\n            .externalAccountBinding(AutoCertificateProviderExternalAccountBindingArgs.builder()\n                .keyId(\"some-key-id\")\n                .keySecret(\"secret\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:cert:AutoCertificateProvider\n    properties:\n      name: Let's Encrypt\n      email: user@example.com\n      location: de/fra\n      server: https://acme-v02.api.letsencrypt.org/directory\n      externalAccountBinding:\n        keyId: some-key-id\n        keySecret: secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`providerId`\" pulumi-lang-dotnet=\"`ProviderId`\" pulumi-lang-go=\"`providerId`\" pulumi-lang-python=\"`provider_id`\" pulumi-lang-yaml=\"`providerId`\" pulumi-lang-java=\"`providerId`\"\u003e`providerId`\u003c/span\u003e and the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, separated by `:`, e.g.\n\n```sh\n$ pulumi import ionoscloud:cert/autoCertificateProvider:AutoCertificateProvider example location:provider_id\n```\n\n",
            "properties": {
                "email": {
                    "type": "string",
                    "description": "[string] The email address of the certificate requester.\n"
                },
                "externalAccountBinding": {
                    "$ref": "#/types/ionoscloud:cert/AutoCertificateProviderExternalAccountBinding:AutoCertificateProviderExternalAccountBinding",
                    "description": "[list] External account binding details.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the provider. Available locations: `de/fra`, `de/fra/2`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the certificate provider.\n"
                },
                "server": {
                    "type": "string",
                    "description": "[string] The URL of the certificate provider.\n"
                }
            },
            "required": [
                "email",
                "name",
                "server"
            ],
            "inputProperties": {
                "email": {
                    "type": "string",
                    "description": "[string] The email address of the certificate requester.\n",
                    "willReplaceOnChanges": true
                },
                "externalAccountBinding": {
                    "$ref": "#/types/ionoscloud:cert/AutoCertificateProviderExternalAccountBinding:AutoCertificateProviderExternalAccountBinding",
                    "description": "[list] External account binding details.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the provider. Available locations: `de/fra`, `de/fra/2`.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the certificate provider.\n"
                },
                "server": {
                    "type": "string",
                    "description": "[string] The URL of the certificate provider.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "email",
                "server"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AutoCertificateProvider resources.\n",
                "properties": {
                    "email": {
                        "type": "string",
                        "description": "[string] The email address of the certificate requester.\n",
                        "willReplaceOnChanges": true
                    },
                    "externalAccountBinding": {
                        "$ref": "#/types/ionoscloud:cert/AutoCertificateProviderExternalAccountBinding:AutoCertificateProviderExternalAccountBinding",
                        "description": "[list] External account binding details.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the provider. Available locations: `de/fra`, `de/fra/2`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the certificate provider.\n"
                    },
                    "server": {
                        "type": "string",
                        "description": "[string] The URL of the certificate provider.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:cert/certificate:Certificate": {
            "description": "Manages a [Certificate](https://docs.ionos.com/cloud/network-services/certificate-manager) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as std from \"@pulumi/std\";\n\nconst cert = new ionoscloud.cert.Certificate(\"cert\", {\n    name: \"add_name_here\",\n    certificate: std.file({\n        input: \"path_to_cert\",\n    }).result,\n    certificateChain: std.file({\n        input: \"path_to_cert_chain\",\n    }).result,\n    privateKey: std.file({\n        input: \"path_to_private_key\",\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_std as std\n\ncert = ionoscloud.cert.Certificate(\"cert\",\n    name=\"add_name_here\",\n    certificate=std.file(input=\"path_to_cert\")[\"result\"],\n    certificate_chain=std.file(input=\"path_to_cert_chain\")[\"result\"],\n    private_key=std.file(input=\"path_to_private_key\")[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new Ionoscloud.Cert.IonosCertificate(\"cert\", new()\n    {\n        Name = \"add_name_here\",\n        Certificate = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_cert\",\n        }).Result,\n        CertificateChain = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_cert_chain\",\n        }).Result,\n        PrivateKey = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_private_key\",\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_cert\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_cert_chain\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_private_key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cert.NewCertificate(ctx, \"cert\", \u0026cert.CertificateArgs{\n\t\t\tName:             pulumi.String(\"add_name_here\"),\n\t\t\tCertificate:      invokeFile.Result,\n\t\t\tCertificateChain: invokeFile1.Result,\n\t\t\tPrivateKey:       invokeFile2.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.cert.Certificate;\nimport com.ionoscloud.pulumi.ionoscloud.cert.CertificateArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"add_name_here\")\n            .certificate(StdFunctions.file(Map.of(\"input\", \"path_to_cert\")).result())\n            .certificateChain(StdFunctions.file(Map.of(\"input\", \"path_to_cert_chain\")).result())\n            .privateKey(StdFunctions.file(Map.of(\"input\", \"path_to_private_key\")).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: ionoscloud:cert:Certificate\n    properties:\n      name: add_name_here\n      certificate:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_cert\n          return: result\n      certificateChain:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_cert_chain\n          return: result\n      privateKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_private_key\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n**NOTE**: You can also provide the values as multiline strings, as seen below:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as std from \"@pulumi/std\";\n\nconst cert = new ionoscloud.cert.Certificate(\"cert\", {\n    name: \"add_name_here\",\n    certificate: `-----BEGIN CERTIFICATE-----\ncert_body_here\n-----END CERTIFICATE-----\n`,\n    certificateChain: std.file({\n        input: \"path_to_cert_chain\",\n    }).result,\n    privateKey: std.file({\n        input: \"path_to_private_key\",\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_std as std\n\ncert = ionoscloud.cert.Certificate(\"cert\",\n    name=\"add_name_here\",\n    certificate=\"\"\"-----BEGIN CERTIFICATE-----\ncert_body_here\n-----END CERTIFICATE-----\n\"\"\",\n    certificate_chain=std.file(input=\"path_to_cert_chain\")[\"result\"],\n    private_key=std.file(input=\"path_to_private_key\")[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new Ionoscloud.Cert.IonosCertificate(\"cert\", new()\n    {\n        Name = \"add_name_here\",\n        Certificate = @\"-----BEGIN CERTIFICATE-----\ncert_body_here\n-----END CERTIFICATE-----\n\",\n        CertificateChain = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_cert_chain\",\n        }).Result,\n        PrivateKey = Std.Index.File.Invoke(new()\n        {\n            Input = \"path_to_private_key\",\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_cert_chain\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"path_to_private_key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cert.NewCertificate(ctx, \"cert\", \u0026cert.CertificateArgs{\n\t\t\tName:             pulumi.String(\"add_name_here\"),\n\t\t\tCertificate:      pulumi.String(\"-----BEGIN CERTIFICATE-----\\ncert_body_here\\n-----END CERTIFICATE-----\\n\"),\n\t\t\tCertificateChain: invokeFile.Result,\n\t\t\tPrivateKey:       invokeFile1.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.cert.Certificate;\nimport com.ionoscloud.pulumi.ionoscloud.cert.CertificateArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"add_name_here\")\n            .certificate(\"\"\"\n-----BEGIN CERTIFICATE-----\ncert_body_here\n-----END CERTIFICATE-----\n            \"\"\")\n            .certificateChain(StdFunctions.file(Map.of(\"input\", \"path_to_cert_chain\")).result())\n            .privateKey(StdFunctions.file(Map.of(\"input\", \"path_to_private_key\")).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: ionoscloud:cert:Certificate\n    properties:\n      name: add_name_here\n      certificate: |\n        -----BEGIN CERTIFICATE-----\n        cert_body_here\n        -----END CERTIFICATE-----\n      certificateChain:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_cert_chain\n          return: result\n      privateKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: path_to_private_key\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource certificate can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_certificate.mycert certificate uuid\n```\n\n",
            "properties": {
                "certificate": {
                    "type": "string",
                    "description": "[string] The certificate body. Pem encoded. Immutable.\n"
                },
                "certificateChain": {
                    "type": "string",
                    "description": "[string] The certificate chain. Pem encoded. Immutable.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The certificate name\n"
                },
                "privateKey": {
                    "type": "string",
                    "description": "[string] The certificate private key. Immutable. Sensitive.\n",
                    "secret": true
                }
            },
            "required": [
                "certificate",
                "name",
                "privateKey"
            ],
            "language": {
                "csharp": {
                    "name": "IonosCertificate"
                }
            },
            "inputProperties": {
                "certificate": {
                    "type": "string",
                    "description": "[string] The certificate body. Pem encoded. Immutable.\n"
                },
                "certificateChain": {
                    "type": "string",
                    "description": "[string] The certificate chain. Pem encoded. Immutable.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The certificate name\n"
                },
                "privateKey": {
                    "type": "string",
                    "description": "[string] The certificate private key. Immutable. Sensitive.\n",
                    "secret": true
                }
            },
            "requiredInputs": [
                "certificate",
                "privateKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Certificate resources.\n",
                "properties": {
                    "certificate": {
                        "type": "string",
                        "description": "[string] The certificate body. Pem encoded. Immutable.\n"
                    },
                    "certificateChain": {
                        "type": "string",
                        "description": "[string] The certificate chain. Pem encoded. Immutable.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The certificate name\n"
                    },
                    "privateKey": {
                        "type": "string",
                        "description": "[string] The certificate private key. Immutable. Sensitive.\n",
                        "secret": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/backupUnit:BackupUnit": {
            "description": "Manages a [Backup Unit](https://docs.ionos.com/cloud/storage-and-backup/backup-service/overview) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst backupUnitPassword = new random.index.Password(\"backup_unit_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst example = new ionoscloud.compute.BackupUnit(\"example\", {\n    name: \"Backup Unit Example\",\n    password: backupUnitPassword.result,\n    email: \"example@example-domain.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nbackup_unit_password = random.Password(\"backup_unit_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nexample = ionoscloud.compute.BackupUnit(\"example\",\n    name=\"Backup Unit Example\",\n    password=backup_unit_password[\"result\"],\n    email=\"example@example-domain.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var backupUnitPassword = new Random.Index.Password(\"backup_unit_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var example = new Ionoscloud.Compute.BackupUnit(\"example\", new()\n    {\n        Name = \"Backup Unit Example\",\n        Password = backupUnitPassword.Result,\n        Email = \"example@example-domain.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbackupUnitPassword, err := random.NewPassword(ctx, \"backup_unit_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackupUnit(ctx, \"example\", \u0026compute.BackupUnitArgs{\n\t\t\tName:     pulumi.String(\"Backup Unit Example\"),\n\t\t\tPassword: backupUnitPassword.Result,\n\t\t\tEmail:    pulumi.String(\"example@example-domain.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BackupUnit;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BackupUnitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var backupUnitPassword = new Password(\"backupUnitPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var example = new BackupUnit(\"example\", BackupUnitArgs.builder()\n            .name(\"Backup Unit Example\")\n            .password(backupUnitPassword.result())\n            .email(\"example@example-domain.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:BackupUnit\n    properties:\n      name: Backup Unit Example\n      password: ${backupUnitPassword.result}\n      email: example@example-domain.com\n  backupUnitPassword:\n    type: random:password\n    name: backup_unit_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\n- Please note that at the moment, Backup Units cannot be renamed\n- Please note that the password attribute is write-only, and it cannot be retrieved from the API when importing a ionoscloud_backup_unit. The only way to keep track of it in Terraform is to specify it on the resource to be imported, thus, making it a required attribute.\n\n## Import\n\nA Backup Unit resource can be imported using its `resource id`, e.g.\n\n```sh\n$ pulumi import ionoscloud:compute/backupUnit:BackupUnit demo backup_unit_uuid\n```\n\nThis can be helpful when you want to import backup units which you have already created manually or using other means, outside of terraform. Please note that you need to manually specify the password when first declaring the resource in terraform, as there is no way to retrieve the password from the Cloud API.\n\n",
            "properties": {
                "email": {
                    "type": "string",
                    "description": "[string] The email address assigned to the backup unit\n"
                },
                "login": {
                    "type": "string",
                    "description": "The login associated with the backup unit. Derived from the contract number\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Backup Unit. This argument is immutable.\n"
                },
                "password": {
                    "type": "string",
                    "description": "[string] The desired password for the Backup Unit\n",
                    "secret": true
                }
            },
            "required": [
                "email",
                "login",
                "name",
                "password"
            ],
            "inputProperties": {
                "email": {
                    "type": "string",
                    "description": "[string] The email address assigned to the backup unit\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Backup Unit. This argument is immutable.\n"
                },
                "password": {
                    "type": "string",
                    "description": "[string] The desired password for the Backup Unit\n",
                    "secret": true
                }
            },
            "requiredInputs": [
                "email",
                "password"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BackupUnit resources.\n",
                "properties": {
                    "email": {
                        "type": "string",
                        "description": "[string] The email address assigned to the backup unit\n"
                    },
                    "login": {
                        "type": "string",
                        "description": "The login associated with the backup unit. Derived from the contract number\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Backup Unit. This argument is immutable.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "[string] The desired password for the Backup Unit\n",
                        "secret": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/balancer:Balancer": {
            "description": "Manages a Load Balancer on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: example.id,\n    cores: 1,\n    ram: 1024,\n    availabilityZone: \"ZONE_1\",\n    cpuFamily: \"INTEL_XEON\",\n    imageName: \"Ubuntu-20.04\",\n    imagePassword: serverImagePassword.result,\n    volume: {\n        name: \"system\",\n        size: 14,\n        diskType: \"SSD\",\n    },\n    nic: {\n        lan: 1,\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst exampleBalancer = new ionoscloud.compute.Balancer(\"example\", {\n    datacenterId: example.id,\n    nicIds: [exampleServer.primaryNic],\n    name: \"Load Balancer Example\",\n    dhcp: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example.id,\n    cores=1,\n    ram=1024,\n    availability_zone=\"ZONE_1\",\n    cpu_family=\"INTEL_XEON\",\n    image_name=\"Ubuntu-20.04\",\n    image_password=server_image_password[\"result\"],\n    volume={\n        \"name\": \"system\",\n        \"size\": 14,\n        \"disk_type\": \"SSD\",\n    },\n    nic={\n        \"lan\": 1,\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample_balancer = ionoscloud.compute.Balancer(\"example\",\n    datacenter_id=example.id,\n    nic_ids=[example_server.primary_nic],\n    name=\"Load Balancer Example\",\n    dhcp=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = example.Id,\n        Cores = 1,\n        Ram = 1024,\n        AvailabilityZone = \"ZONE_1\",\n        CpuFamily = \"INTEL_XEON\",\n        ImageName = \"Ubuntu-20.04\",\n        ImagePassword = serverImagePassword.Result,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 14,\n            DiskType = \"SSD\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = 1,\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var exampleBalancer = new Ionoscloud.Compute.Balancer(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        NicIds = new[]\n        {\n            exampleServer.PrimaryNic,\n        },\n        Name = \"Load Balancer Example\",\n        Dhcp = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:             pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:     example.ID(),\n\t\t\tCores:            pulumi.Int(1),\n\t\t\tRam:              pulumi.Int(1024),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_1\"),\n\t\t\tCpuFamily:        pulumi.String(\"INTEL_XEON\"),\n\t\t\tImageName:        pulumi.String(\"Ubuntu-20.04\"),\n\t\t\tImagePassword:    serverImagePassword.Result,\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:     pulumi.String(\"system\"),\n\t\t\t\tSize:     pulumi.Int(14),\n\t\t\t\tDiskType: pulumi.String(\"SSD\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Int(1),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBalancer(ctx, \"example\", \u0026compute.BalancerArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tNicIds: pulumi.StringArray{\n\t\t\t\texampleServer.PrimaryNic,\n\t\t\t},\n\t\t\tName: pulumi.String(\"Load Balancer Example\"),\n\t\t\tDhcp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Balancer;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(example.id())\n            .cores(1)\n            .ram(1024)\n            .availabilityZone(\"ZONE_1\")\n            .cpuFamily(\"INTEL_XEON\")\n            .imageName(\"Ubuntu-20.04\")\n            .imagePassword(serverImagePassword.result())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(14)\n                .diskType(\"SSD\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(1)\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        var exampleBalancer = new Balancer(\"exampleBalancer\", BalancerArgs.builder()\n            .datacenterId(example.id())\n            .nicIds(exampleServer.primaryNic())\n            .name(\"Load Balancer Example\")\n            .dhcp(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${example.id}\n      cores: 1\n      ram: 1024\n      availabilityZone: ZONE_1\n      cpuFamily: INTEL_XEON\n      imageName: Ubuntu-20.04\n      imagePassword: ${serverImagePassword.result}\n      volume:\n        name: system\n        size: 14\n        diskType: SSD\n      nic:\n        lan: '1'\n        dhcp: true\n        firewallActive: true\n  exampleBalancer:\n    type: ionoscloud:compute:Balancer\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      nicIds:\n        - ${exampleServer.primaryNic}\n      name: Load Balancer Example\n      dhcp: true\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## A note on nics\n\nWhen declaring NIC resources to be used with the load balancer, please make sure\nyou use the \"lifecycle meta-argument\" to make sure changes to the lan attribute\nof the nic are ignored. \n\nPlease see the Nic resource's documentation for an example on how to do that.\n\n## Import\n\nResource Load Balancer can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_loadbalancer.myloadbalancer datacenter uuid/loadbalancer uuid\n```\n\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "dhcp": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the load balancer will reserve an IP using DHCP.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "[string] IPv4 address of the load balancer.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the load balancer.\n"
                },
                "nicIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] A list of NIC IDs that are part of the load balancer.\n"
                }
            },
            "required": [
                "datacenterId",
                "ip",
                "name",
                "nicIds"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "dhcp": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the load balancer will reserve an IP using DHCP.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "[string] IPv4 address of the load balancer.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the load balancer.\n"
                },
                "nicIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] A list of NIC IDs that are part of the load balancer.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "nicIds"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Balancer resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "dhcp": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if the load balancer will reserve an IP using DHCP.\n"
                    },
                    "ip": {
                        "type": "string",
                        "description": "[string] IPv4 address of the load balancer.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the load balancer.\n"
                    },
                    "nicIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] A list of NIC IDs that are part of the load balancer.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/bootDeviceSelection:BootDeviceSelection": {
            "description": "Manages the selection of a boot device for IonosCloud Servers. \n\n## Example Usage\n\nThe boot device of a \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Server`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Server`\" pulumi-lang-go=\"`compute.Server`\" pulumi-lang-python=\"`compute.Server`\" pulumi-lang-yaml=\"`ionoscloud.compute.Server`\" pulumi-lang-java=\"`ionoscloud.compute.Server`\"\u003e`ionoscloud.compute.Server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.VCPUServer`\" pulumi-lang-dotnet=\"`ionoscloud.compute.VCPUServer`\" pulumi-lang-go=\"`compute.VCPUServer`\" pulumi-lang-python=\"`compute.VCPUServer`\" pulumi-lang-yaml=\"`ionoscloud.compute.VCPUServer`\" pulumi-lang-java=\"`ionoscloud.compute.VCPUServer`\"\u003e`ionoscloud.compute.VCPUServer`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.CubeServer`\" pulumi-lang-dotnet=\"`ionoscloud.compute.CubeServer`\" pulumi-lang-go=\"`compute.CubeServer`\" pulumi-lang-python=\"`compute.CubeServer`\" pulumi-lang-yaml=\"`ionoscloud.compute.CubeServer`\" pulumi-lang-java=\"`ionoscloud.compute.CubeServer`\"\u003e`ionoscloud.compute.CubeServer`\u003c/span\u003e can be selected with this resource.\nDeleting this resource will revert the boot device back to the default volume, which is the first inline volume created together with the server. In case in which there is no default to revert to, when the server had no boot device, the current device will remain set as a boot device when this resource is deleted.\nThis resource also allows switching between a \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\"\u003e`volume`\u003c/span\u003e and a \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.getImage`\" pulumi-lang-dotnet=\"`ionoscloud.compute.getImage`\" pulumi-lang-go=\"`compute.getImage`\" pulumi-lang-python=\"`compute_get_image`\" pulumi-lang-yaml=\"`ionoscloud.compute.getImage`\" pulumi-lang-java=\"`ionoscloud.compute.getImage`\"\u003e`ionoscloud.compute.getImage`\u003c/span\u003e CDROM. Note that CDROM images are detached after they are no longer set as boot devices.\n\n### Select an external volume\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    availabilityZone: \"ZONE_2\",\n    imageName: \"ubuntu:latest\",\n    cores: 2,\n    ram: 2048,\n    imagePassword: serverImagePassword.result,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    volume: {\n        name: \"Inline Updated\",\n        size: 20,\n        diskType: \"SSD Standard\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"AUTO\",\n    },\n    nic: {\n        lan: exampleIonoscloudLan.id,\n        name: \"Nic Example\",\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst exampleVolume = new ionoscloud.compute.Volume(\"example\", {\n    serverId: exampleServer.id,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"External 1\",\n    size: 10,\n    diskType: \"HDD\",\n    availabilityZone: \"AUTO\",\n    imageName: \"debian:latest\",\n    imagePassword: serverImagePassword.result,\n});\nconst example = new ionoscloud.compute.BootDeviceSelection(\"example\", {\n    datacenterId: exampleIonoscloudDatacenter.id,\n    serverId: exampleServer.id,\n    bootDeviceId: exampleVolume.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    availability_zone=\"ZONE_2\",\n    image_name=\"ubuntu:latest\",\n    cores=2,\n    ram=2048,\n    image_password=server_image_password[\"result\"],\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    volume={\n        \"name\": \"Inline Updated\",\n        \"size\": 20,\n        \"disk_type\": \"SSD Standard\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"AUTO\",\n    },\n    nic={\n        \"lan\": example_ionoscloud_lan[\"id\"],\n        \"name\": \"Nic Example\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample_volume = ionoscloud.compute.Volume(\"example\",\n    server_id=example_server.id,\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"External 1\",\n    size=10,\n    disk_type=\"HDD\",\n    availability_zone=\"AUTO\",\n    image_name=\"debian:latest\",\n    image_password=server_image_password[\"result\"])\nexample = ionoscloud.compute.BootDeviceSelection(\"example\",\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    server_id=example_server.id,\n    boot_device_id=example_volume.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        AvailabilityZone = \"ZONE_2\",\n        ImageName = \"ubuntu:latest\",\n        Cores = 2,\n        Ram = 2048,\n        ImagePassword = serverImagePassword.Result,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"Inline Updated\",\n            Size = 20,\n            DiskType = \"SSD Standard\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"AUTO\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleIonoscloudLan.Id,\n            Name = \"Nic Example\",\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var exampleVolume = new Ionoscloud.Compute.Volume(\"example\", new()\n    {\n        ServerId = exampleServer.Id,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"External 1\",\n        Size = 10,\n        DiskType = \"HDD\",\n        AvailabilityZone = \"AUTO\",\n        ImageName = \"debian:latest\",\n        ImagePassword = serverImagePassword.Result,\n    });\n\n    var example = new Ionoscloud.Compute.BootDeviceSelection(\"example\", new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ServerId = exampleServer.Id,\n        BootDeviceId = exampleVolume.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:             pulumi.String(\"Server Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_2\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tCores:            pulumi.Int(2),\n\t\t\tRam:              pulumi.Int(2048),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"Inline Updated\"),\n\t\t\t\tSize:             pulumi.Int(20),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Any(exampleIonoscloudLan.Id),\n\t\t\t\tName:           pulumi.String(\"Nic Example\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVolume, err := compute.NewVolume(ctx, \"example\", \u0026compute.VolumeArgs{\n\t\t\tServerId:         exampleServer.ID(),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tName:             pulumi.String(\"External 1\"),\n\t\t\tSize:             pulumi.Int(10),\n\t\t\tDiskType:         pulumi.String(\"HDD\"),\n\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\tImageName:        pulumi.String(\"debian:latest\"),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBootDeviceSelection(ctx, \"example\", \u0026compute.BootDeviceSelectionArgs{\n\t\t\tDatacenterId: pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tServerId:     exampleServer.ID(),\n\t\t\tBootDeviceId: exampleVolume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Volume;\nimport com.ionoscloud.pulumi.ionoscloud.compute.VolumeArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelection;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .availabilityZone(\"ZONE_2\")\n            .imageName(\"ubuntu:latest\")\n            .cores(2)\n            .ram(2048)\n            .imagePassword(serverImagePassword.result())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"Inline Updated\")\n                .size(20)\n                .diskType(\"SSD Standard\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"AUTO\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleIonoscloudLan.id())\n                .name(\"Nic Example\")\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        var exampleVolume = new Volume(\"exampleVolume\", VolumeArgs.builder()\n            .serverId(exampleServer.id())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"External 1\")\n            .size(10)\n            .diskType(\"HDD\")\n            .availabilityZone(\"AUTO\")\n            .imageName(\"debian:latest\")\n            .imagePassword(serverImagePassword.result())\n            .build());\n\n        var example = new BootDeviceSelection(\"example\", BootDeviceSelectionArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .serverId(exampleServer.id())\n            .bootDeviceId(exampleVolume.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:BootDeviceSelection\n    properties:\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      serverId: ${exampleServer.id}\n      bootDeviceId: ${exampleVolume.id}\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      availabilityZone: ZONE_2\n      imageName: ubuntu:latest\n      cores: 2\n      ram: 2048\n      imagePassword: ${serverImagePassword.result}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      volume:\n        name: Inline Updated\n        size: 20\n        diskType: SSD Standard\n        bus: VIRTIO\n        availabilityZone: AUTO\n      nic:\n        lan: ${exampleIonoscloudLan.id}\n        name: Nic Example\n        dhcp: true\n        firewallActive: true\n  exampleVolume:\n    type: ionoscloud:compute:Volume\n    name: example\n    properties:\n      serverId: ${exampleServer.id}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      name: External 1\n      size: 10\n      diskType: HDD\n      availabilityZone: AUTO\n      imageName: debian:latest\n      imagePassword: ${serverImagePassword.result}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Select an inline volume again\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    availabilityZone: \"ZONE_2\",\n    imageName: \"ubuntu:latest\",\n    cores: 2,\n    ram: 2048,\n    imagePassword: serverImagePassword.result,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    volume: {\n        name: \"Inline Updated\",\n        size: 20,\n        diskType: \"SSD Standard\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"AUTO\",\n    },\n    nic: {\n        lan: exampleIonoscloudLan.id,\n        name: \"Nic Example\",\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst example = new ionoscloud.compute.BootDeviceSelection(\"example\", {\n    datacenterId: exampleIonoscloudDatacenter.id,\n    serverId: exampleServer.id,\n    bootDeviceId: exampleServer.inlineVolumeIds[0],\n});\nconst exampleVolume = new ionoscloud.compute.Volume(\"example\", {\n    serverId: exampleServer.id,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"External 1\",\n    size: 10,\n    diskType: \"HDD\",\n    availabilityZone: \"AUTO\",\n    imageName: \"debian:latest\",\n    imagePassword: serverImagePassword.result,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    availability_zone=\"ZONE_2\",\n    image_name=\"ubuntu:latest\",\n    cores=2,\n    ram=2048,\n    image_password=server_image_password[\"result\"],\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    volume={\n        \"name\": \"Inline Updated\",\n        \"size\": 20,\n        \"disk_type\": \"SSD Standard\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"AUTO\",\n    },\n    nic={\n        \"lan\": example_ionoscloud_lan[\"id\"],\n        \"name\": \"Nic Example\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample = ionoscloud.compute.BootDeviceSelection(\"example\",\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    server_id=example_server.id,\n    boot_device_id=example_server.inline_volume_ids[0])\nexample_volume = ionoscloud.compute.Volume(\"example\",\n    server_id=example_server.id,\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"External 1\",\n    size=10,\n    disk_type=\"HDD\",\n    availability_zone=\"AUTO\",\n    image_name=\"debian:latest\",\n    image_password=server_image_password[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        AvailabilityZone = \"ZONE_2\",\n        ImageName = \"ubuntu:latest\",\n        Cores = 2,\n        Ram = 2048,\n        ImagePassword = serverImagePassword.Result,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"Inline Updated\",\n            Size = 20,\n            DiskType = \"SSD Standard\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"AUTO\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleIonoscloudLan.Id,\n            Name = \"Nic Example\",\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var example = new Ionoscloud.Compute.BootDeviceSelection(\"example\", new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ServerId = exampleServer.Id,\n        BootDeviceId = exampleServer.InlineVolumeIds.Apply(inlineVolumeIds =\u003e inlineVolumeIds[0]),\n    });\n\n    var exampleVolume = new Ionoscloud.Compute.Volume(\"example\", new()\n    {\n        ServerId = exampleServer.Id,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"External 1\",\n        Size = 10,\n        DiskType = \"HDD\",\n        AvailabilityZone = \"AUTO\",\n        ImageName = \"debian:latest\",\n        ImagePassword = serverImagePassword.Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:             pulumi.String(\"Server Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_2\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tCores:            pulumi.Int(2),\n\t\t\tRam:              pulumi.Int(2048),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"Inline Updated\"),\n\t\t\t\tSize:             pulumi.Int(20),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Any(exampleIonoscloudLan.Id),\n\t\t\t\tName:           pulumi.String(\"Nic Example\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBootDeviceSelection(ctx, \"example\", \u0026compute.BootDeviceSelectionArgs{\n\t\t\tDatacenterId: pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tServerId:     exampleServer.ID(),\n\t\t\tBootDeviceId: exampleServer.InlineVolumeIds.ApplyT(func(inlineVolumeIds []string) (string, error) {\n\t\t\t\treturn inlineVolumeIds[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVolume(ctx, \"example\", \u0026compute.VolumeArgs{\n\t\t\tServerId:         exampleServer.ID(),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tName:             pulumi.String(\"External 1\"),\n\t\t\tSize:             pulumi.Int(10),\n\t\t\tDiskType:         pulumi.String(\"HDD\"),\n\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\tImageName:        pulumi.String(\"debian:latest\"),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelection;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelectionArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Volume;\nimport com.ionoscloud.pulumi.ionoscloud.compute.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .availabilityZone(\"ZONE_2\")\n            .imageName(\"ubuntu:latest\")\n            .cores(2)\n            .ram(2048)\n            .imagePassword(serverImagePassword.result())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"Inline Updated\")\n                .size(20)\n                .diskType(\"SSD Standard\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"AUTO\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleIonoscloudLan.id())\n                .name(\"Nic Example\")\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        var example = new BootDeviceSelection(\"example\", BootDeviceSelectionArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .serverId(exampleServer.id())\n            .bootDeviceId(exampleServer.inlineVolumeIds().applyValue(_inlineVolumeIds -\u003e _inlineVolumeIds[0]))\n            .build());\n\n        var exampleVolume = new Volume(\"exampleVolume\", VolumeArgs.builder()\n            .serverId(exampleServer.id())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"External 1\")\n            .size(10)\n            .diskType(\"HDD\")\n            .availabilityZone(\"AUTO\")\n            .imageName(\"debian:latest\")\n            .imagePassword(serverImagePassword.result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:BootDeviceSelection\n    properties:\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      serverId: ${exampleServer.id}\n      bootDeviceId: ${exampleServer.inlineVolumeIds[0]}\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      availabilityZone: ZONE_2\n      imageName: ubuntu:latest\n      cores: 2\n      ram: 2048\n      imagePassword: ${serverImagePassword.result}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      volume:\n        name: Inline Updated\n        size: 20\n        diskType: SSD Standard\n        bus: VIRTIO\n        availabilityZone: AUTO\n      nic:\n        lan: ${exampleIonoscloudLan.id}\n        name: Nic Example\n        dhcp: true\n        firewallActive: true\n  exampleVolume:\n    type: ionoscloud:compute:Volume\n    name: example\n    properties:\n      serverId: ${exampleServer.id}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      name: External 1\n      size: 10\n      diskType: HDD\n      availabilityZone: AUTO\n      imageName: debian:latest\n      imagePassword: ${serverImagePassword.result}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Select a CDROM image\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    availabilityZone: \"ZONE_2\",\n    imageName: \"ubuntu:latest\",\n    cores: 2,\n    ram: 2048,\n    imagePassword: serverImagePassword.result,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    volume: {\n        name: \"Inline Updated\",\n        size: 20,\n        diskType: \"SSD Standard\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"AUTO\",\n    },\n    nic: {\n        lan: exampleIonoscloudLan.id,\n        name: \"Nic Example\",\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst example = ionoscloud.compute.getImage({\n    name: \"ubuntu-20.04\",\n    location: \"de/txl\",\n    type: \"CDROM\",\n});\nconst exampleBootDeviceSelection = new ionoscloud.compute.BootDeviceSelection(\"example\", {\n    datacenterId: exampleIonoscloudDatacenter.id,\n    serverId: exampleServer.id,\n    bootDeviceId: example.then(example =\u003e example.id),\n});\nconst exampleVolume = new ionoscloud.compute.Volume(\"example\", {\n    serverId: exampleServer.id,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"External 1\",\n    size: 10,\n    diskType: \"HDD\",\n    availabilityZone: \"AUTO\",\n    imageName: \"debian:latest\",\n    imagePassword: serverImagePassword.result,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    availability_zone=\"ZONE_2\",\n    image_name=\"ubuntu:latest\",\n    cores=2,\n    ram=2048,\n    image_password=server_image_password[\"result\"],\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    volume={\n        \"name\": \"Inline Updated\",\n        \"size\": 20,\n        \"disk_type\": \"SSD Standard\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"AUTO\",\n    },\n    nic={\n        \"lan\": example_ionoscloud_lan[\"id\"],\n        \"name\": \"Nic Example\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample = ionoscloud.compute.get_image(name=\"ubuntu-20.04\",\n    location=\"de/txl\",\n    type=\"CDROM\")\nexample_boot_device_selection = ionoscloud.compute.BootDeviceSelection(\"example\",\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    server_id=example_server.id,\n    boot_device_id=example.id)\nexample_volume = ionoscloud.compute.Volume(\"example\",\n    server_id=example_server.id,\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"External 1\",\n    size=10,\n    disk_type=\"HDD\",\n    availability_zone=\"AUTO\",\n    image_name=\"debian:latest\",\n    image_password=server_image_password[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        AvailabilityZone = \"ZONE_2\",\n        ImageName = \"ubuntu:latest\",\n        Cores = 2,\n        Ram = 2048,\n        ImagePassword = serverImagePassword.Result,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"Inline Updated\",\n            Size = 20,\n            DiskType = \"SSD Standard\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"AUTO\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleIonoscloudLan.Id,\n            Name = \"Nic Example\",\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        Name = \"ubuntu-20.04\",\n        Location = \"de/txl\",\n        Type = \"CDROM\",\n    });\n\n    var exampleBootDeviceSelection = new Ionoscloud.Compute.BootDeviceSelection(\"example\", new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ServerId = exampleServer.Id,\n        BootDeviceId = example.Apply(getImageResult =\u003e getImageResult.Id),\n    });\n\n    var exampleVolume = new Ionoscloud.Compute.Volume(\"example\", new()\n    {\n        ServerId = exampleServer.Id,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"External 1\",\n        Size = 10,\n        DiskType = \"HDD\",\n        AvailabilityZone = \"AUTO\",\n        ImageName = \"debian:latest\",\n        ImagePassword = serverImagePassword.Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:             pulumi.String(\"Server Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_2\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tCores:            pulumi.Int(2),\n\t\t\tRam:              pulumi.Int(2048),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"Inline Updated\"),\n\t\t\t\tSize:             pulumi.Int(20),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Any(exampleIonoscloudLan.Id),\n\t\t\t\tName:           pulumi.String(\"Nic Example\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tName:     pulumi.StringRef(\"ubuntu-20.04\"),\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t\tType:     pulumi.StringRef(\"CDROM\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBootDeviceSelection(ctx, \"example\", \u0026compute.BootDeviceSelectionArgs{\n\t\t\tDatacenterId: pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tServerId:     exampleServer.ID(),\n\t\t\tBootDeviceId: pulumi.String(pulumi.String(example.Id)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVolume(ctx, \"example\", \u0026compute.VolumeArgs{\n\t\t\tServerId:         exampleServer.ID(),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tName:             pulumi.String(\"External 1\"),\n\t\t\tSize:             pulumi.Int(10),\n\t\t\tDiskType:         pulumi.String(\"HDD\"),\n\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\tImageName:        pulumi.String(\"debian:latest\"),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelection;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelectionArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Volume;\nimport com.ionoscloud.pulumi.ionoscloud.compute.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .availabilityZone(\"ZONE_2\")\n            .imageName(\"ubuntu:latest\")\n            .cores(2)\n            .ram(2048)\n            .imagePassword(serverImagePassword.result())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"Inline Updated\")\n                .size(20)\n                .diskType(\"SSD Standard\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"AUTO\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleIonoscloudLan.id())\n                .name(\"Nic Example\")\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .name(\"ubuntu-20.04\")\n            .location(\"de/txl\")\n            .type(\"CDROM\")\n            .build());\n\n        var exampleBootDeviceSelection = new BootDeviceSelection(\"exampleBootDeviceSelection\", BootDeviceSelectionArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .serverId(exampleServer.id())\n            .bootDeviceId(example.id())\n            .build());\n\n        var exampleVolume = new Volume(\"exampleVolume\", VolumeArgs.builder()\n            .serverId(exampleServer.id())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"External 1\")\n            .size(10)\n            .diskType(\"HDD\")\n            .availabilityZone(\"AUTO\")\n            .imageName(\"debian:latest\")\n            .imagePassword(serverImagePassword.result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleBootDeviceSelection:\n    type: ionoscloud:compute:BootDeviceSelection\n    name: example\n    properties:\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      serverId: ${exampleServer.id}\n      bootDeviceId: ${example.id}\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      availabilityZone: ZONE_2\n      imageName: ubuntu:latest\n      cores: 2\n      ram: 2048\n      imagePassword: ${serverImagePassword.result}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      volume:\n        name: Inline Updated\n        size: 20\n        diskType: SSD Standard\n        bus: VIRTIO\n        availabilityZone: AUTO\n      nic:\n        lan: ${exampleIonoscloudLan.id}\n        name: Nic Example\n        dhcp: true\n        firewallActive: true\n  exampleVolume:\n    type: ionoscloud:compute:Volume\n    name: example\n    properties:\n      serverId: ${exampleServer.id}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      name: External 1\n      size: 10\n      diskType: HDD\n      availabilityZone: AUTO\n      imageName: debian:latest\n      imagePassword: ${serverImagePassword.result}\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        name: ubuntu-20.04\n        location: de/txl\n        type: CDROM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Perform a network boot\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    availabilityZone: \"ZONE_2\",\n    imageName: \"ubuntu:latest\",\n    cores: 2,\n    ram: 2048,\n    imagePassword: serverImagePassword.result,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    volume: {\n        name: \"Inline volume\",\n        size: 20,\n        diskType: \"SSD Standard\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"AUTO\",\n    },\n    nic: {\n        lan: exampleIonoscloudLan.id,\n        name: \"Nic Example\",\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst exampleBootDeviceSelection = new ionoscloud.compute.BootDeviceSelection(\"example\", {\n    datacenterId: exampleIonoscloudDatacenter.id,\n    serverId: exampleServer.id,\n});\nconst exampleVolume = new ionoscloud.compute.Volume(\"example\", {\n    serverId: exampleServer.id,\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"External 1\",\n    size: 10,\n    diskType: \"HDD\",\n    availabilityZone: \"AUTO\",\n    imageName: \"debian:latest\",\n    imagePassword: serverImagePassword.result,\n});\nconst example = ionoscloud.compute.getImage({\n    name: \"ubuntu-20.04\",\n    location: \"de/txl\",\n    type: \"CDROM\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    availability_zone=\"ZONE_2\",\n    image_name=\"ubuntu:latest\",\n    cores=2,\n    ram=2048,\n    image_password=server_image_password[\"result\"],\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    volume={\n        \"name\": \"Inline volume\",\n        \"size\": 20,\n        \"disk_type\": \"SSD Standard\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"AUTO\",\n    },\n    nic={\n        \"lan\": example_ionoscloud_lan[\"id\"],\n        \"name\": \"Nic Example\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample_boot_device_selection = ionoscloud.compute.BootDeviceSelection(\"example\",\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    server_id=example_server.id)\nexample_volume = ionoscloud.compute.Volume(\"example\",\n    server_id=example_server.id,\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"External 1\",\n    size=10,\n    disk_type=\"HDD\",\n    availability_zone=\"AUTO\",\n    image_name=\"debian:latest\",\n    image_password=server_image_password[\"result\"])\nexample = ionoscloud.compute.get_image(name=\"ubuntu-20.04\",\n    location=\"de/txl\",\n    type=\"CDROM\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        AvailabilityZone = \"ZONE_2\",\n        ImageName = \"ubuntu:latest\",\n        Cores = 2,\n        Ram = 2048,\n        ImagePassword = serverImagePassword.Result,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"Inline volume\",\n            Size = 20,\n            DiskType = \"SSD Standard\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"AUTO\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleIonoscloudLan.Id,\n            Name = \"Nic Example\",\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var exampleBootDeviceSelection = new Ionoscloud.Compute.BootDeviceSelection(\"example\", new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ServerId = exampleServer.Id,\n    });\n\n    var exampleVolume = new Ionoscloud.Compute.Volume(\"example\", new()\n    {\n        ServerId = exampleServer.Id,\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"External 1\",\n        Size = 10,\n        DiskType = \"HDD\",\n        AvailabilityZone = \"AUTO\",\n        ImageName = \"debian:latest\",\n        ImagePassword = serverImagePassword.Result,\n    });\n\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        Name = \"ubuntu-20.04\",\n        Location = \"de/txl\",\n        Type = \"CDROM\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:             pulumi.String(\"Server Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_2\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tCores:            pulumi.Int(2),\n\t\t\tRam:              pulumi.Int(2048),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"Inline volume\"),\n\t\t\t\tSize:             pulumi.Int(20),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Any(exampleIonoscloudLan.Id),\n\t\t\t\tName:           pulumi.String(\"Nic Example\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBootDeviceSelection(ctx, \"example\", \u0026compute.BootDeviceSelectionArgs{\n\t\t\tDatacenterId: pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tServerId:     exampleServer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVolume(ctx, \"example\", \u0026compute.VolumeArgs{\n\t\t\tServerId:         exampleServer.ID(),\n\t\t\tDatacenterId:     pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tName:             pulumi.String(\"External 1\"),\n\t\t\tSize:             pulumi.Int(10),\n\t\t\tDiskType:         pulumi.String(\"HDD\"),\n\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\tImageName:        pulumi.String(\"debian:latest\"),\n\t\t\tImagePassword:    pulumi.Any(serverImagePassword.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tName:     pulumi.StringRef(\"ubuntu-20.04\"),\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t\tType:     pulumi.StringRef(\"CDROM\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelection;\nimport com.ionoscloud.pulumi.ionoscloud.compute.BootDeviceSelectionArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Volume;\nimport com.ionoscloud.pulumi.ionoscloud.compute.VolumeArgs;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .availabilityZone(\"ZONE_2\")\n            .imageName(\"ubuntu:latest\")\n            .cores(2)\n            .ram(2048)\n            .imagePassword(serverImagePassword.result())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"Inline volume\")\n                .size(20)\n                .diskType(\"SSD Standard\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"AUTO\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleIonoscloudLan.id())\n                .name(\"Nic Example\")\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        var exampleBootDeviceSelection = new BootDeviceSelection(\"exampleBootDeviceSelection\", BootDeviceSelectionArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .serverId(exampleServer.id())\n            .build());\n\n        var exampleVolume = new Volume(\"exampleVolume\", VolumeArgs.builder()\n            .serverId(exampleServer.id())\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"External 1\")\n            .size(10)\n            .diskType(\"HDD\")\n            .availabilityZone(\"AUTO\")\n            .imageName(\"debian:latest\")\n            .imagePassword(serverImagePassword.result())\n            .build());\n\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .name(\"ubuntu-20.04\")\n            .location(\"de/txl\")\n            .type(\"CDROM\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleBootDeviceSelection:\n    type: ionoscloud:compute:BootDeviceSelection\n    name: example\n    properties:\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      serverId: ${exampleServer.id}\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      availabilityZone: ZONE_2\n      imageName: ubuntu:latest\n      cores: 2\n      ram: 2048\n      imagePassword: ${serverImagePassword.result}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      volume:\n        name: Inline volume\n        size: 20\n        diskType: SSD Standard\n        bus: VIRTIO\n        availabilityZone: AUTO\n      nic:\n        lan: ${exampleIonoscloudLan.id}\n        name: Nic Example\n        dhcp: true\n        firewallActive: true\n  exampleVolume:\n    type: ionoscloud:compute:Volume\n    name: example\n    properties:\n      serverId: ${exampleServer.id}\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      name: External 1\n      size: 10\n      diskType: HDD\n      availabilityZone: AUTO\n      imageName: debian:latest\n      imagePassword: ${serverImagePassword.result}\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        name: ubuntu-20.04\n        location: de/txl\n        type: CDROM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "bootDeviceId": {
                    "type": "string",
                    "description": "[string] The ID of a bootable device such as a volume or an image data source. If this field is omitted from the configuration, the VM will be restarted with no primary boot device, and it will enter the PXE shell for network booting. \n***Note***: If the network booting process started by the PXE shell fails, the VM will still boot into the image of the attached storage as a fallback. This behavior imitates the \"Boot from Network\" option from [DCD](https://dcd.ionos.com/).\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "defaultBootVolumeId": {
                    "type": "string",
                    "description": "ID of the first attached volume of the Server, which will be the default boot volume."
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The ID of a server.\n"
                }
            },
            "required": [
                "datacenterId",
                "defaultBootVolumeId",
                "serverId"
            ],
            "inputProperties": {
                "bootDeviceId": {
                    "type": "string",
                    "description": "[string] The ID of a bootable device such as a volume or an image data source. If this field is omitted from the configuration, the VM will be restarted with no primary boot device, and it will enter the PXE shell for network booting. \n***Note***: If the network booting process started by the PXE shell fails, the VM will still boot into the image of the attached storage as a fallback. This behavior imitates the \"Boot from Network\" option from [DCD](https://dcd.ionos.com/).\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The ID of a server.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "datacenterId",
                "serverId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BootDeviceSelection resources.\n",
                "properties": {
                    "bootDeviceId": {
                        "type": "string",
                        "description": "[string] The ID of a bootable device such as a volume or an image data source. If this field is omitted from the configuration, the VM will be restarted with no primary boot device, and it will enter the PXE shell for network booting. \n***Note***: If the network booting process started by the PXE shell fails, the VM will still boot into the image of the attached storage as a fallback. This behavior imitates the \"Boot from Network\" option from [DCD](https://dcd.ionos.com/).\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "defaultBootVolumeId": {
                        "type": "string",
                        "description": "ID of the first attached volume of the Server, which will be the default boot volume."
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "serverId": {
                        "type": "string",
                        "description": "[string] The ID of a server.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/crossconnect:Crossconnect": {
            "description": "Manages a [Cross Connect](https://docs.ionos.com/cloud/network-services/cross-connect/overview) on IonosCloud.\nCross Connect allows you to connect virtual data centers (VDC) with each other using a private LAN. \nThe VDCs to be connected need to belong to the same IONOS Cloud contract and location. \nYou can only use private LANs for a Cross Connect connection. A LAN can only be a part of one Cross Connect.\n\nThe IP addresses of the NICs used for the Cross Connect connection may not be used in more than one NIC and they need to belong to the same IP range.\n\n## Example Usage\n\nTo connect two datacenters we need 2 lans defined, one in each datacenter. After, we reference the cross-connect through which we want the connection to be established.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst crossConnectTestResource = new ionoscloud.compute.Crossconnect(\"CrossConnectTestResource\", {\n    name: \"CrossConnectTestResource\",\n    description: \"CrossConnectTestResource\",\n});\nconst dc1 = new ionoscloud.compute.Datacenter(\"dc1\", {\n    location: \"de/txl\",\n    name: \"dc1\",\n});\nconst dc2 = new ionoscloud.compute.Datacenter(\"dc2\", {\n    location: \"de/txl\",\n    name: \"dc2\",\n});\nconst dc1lan = new ionoscloud.compute.Lan(\"dc1lan\", {\n    datacenterId: dc1.id,\n    \"public\": false,\n    name: \"dc1lan\",\n    pcc: crossConnectTestResource.id,\n});\nconst dc2lan = new ionoscloud.compute.Lan(\"dc2lan\", {\n    datacenterId: dc2.id,\n    \"public\": false,\n    name: \"dc2lan\",\n    pcc: crossConnectTestResource.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\ncross_connect_test_resource = ionoscloud.compute.Crossconnect(\"CrossConnectTestResource\",\n    name=\"CrossConnectTestResource\",\n    description=\"CrossConnectTestResource\")\ndc1 = ionoscloud.compute.Datacenter(\"dc1\",\n    location=\"de/txl\",\n    name=\"dc1\")\ndc2 = ionoscloud.compute.Datacenter(\"dc2\",\n    location=\"de/txl\",\n    name=\"dc2\")\ndc1lan = ionoscloud.compute.Lan(\"dc1lan\",\n    datacenter_id=dc1.id,\n    public=False,\n    name=\"dc1lan\",\n    pcc=cross_connect_test_resource.id)\ndc2lan = ionoscloud.compute.Lan(\"dc2lan\",\n    datacenter_id=dc2.id,\n    public=False,\n    name=\"dc2lan\",\n    pcc=cross_connect_test_resource.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var crossConnectTestResource = new Ionoscloud.Compute.Crossconnect(\"CrossConnectTestResource\", new()\n    {\n        Name = \"CrossConnectTestResource\",\n        Description = \"CrossConnectTestResource\",\n    });\n\n    var dc1 = new Ionoscloud.Compute.Datacenter(\"dc1\", new()\n    {\n        Location = \"de/txl\",\n        Name = \"dc1\",\n    });\n\n    var dc2 = new Ionoscloud.Compute.Datacenter(\"dc2\", new()\n    {\n        Location = \"de/txl\",\n        Name = \"dc2\",\n    });\n\n    var dc1lan = new Ionoscloud.Compute.Lan(\"dc1lan\", new()\n    {\n        DatacenterId = dc1.Id,\n        Public = false,\n        Name = \"dc1lan\",\n        Pcc = crossConnectTestResource.Id,\n    });\n\n    var dc2lan = new Ionoscloud.Compute.Lan(\"dc2lan\", new()\n    {\n        DatacenterId = dc2.Id,\n        Public = false,\n        Name = \"dc2lan\",\n        Pcc = crossConnectTestResource.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcrossConnectTestResource, err := compute.NewCrossconnect(ctx, \"CrossConnectTestResource\", \u0026compute.CrossconnectArgs{\n\t\t\tName:        pulumi.String(\"CrossConnectTestResource\"),\n\t\t\tDescription: pulumi.String(\"CrossConnectTestResource\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdc1, err := compute.NewDatacenter(ctx, \"dc1\", \u0026compute.DatacenterArgs{\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t\tName:     pulumi.String(\"dc1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdc2, err := compute.NewDatacenter(ctx, \"dc2\", \u0026compute.DatacenterArgs{\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t\tName:     pulumi.String(\"dc2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewLan(ctx, \"dc1lan\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: dc1.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"dc1lan\"),\n\t\t\tPcc:          crossConnectTestResource.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewLan(ctx, \"dc2lan\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: dc2.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"dc2lan\"),\n\t\t\tPcc:          crossConnectTestResource.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Crossconnect;\nimport com.ionoscloud.pulumi.ionoscloud.compute.CrossconnectArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var crossConnectTestResource = new Crossconnect(\"crossConnectTestResource\", CrossconnectArgs.builder()\n            .name(\"CrossConnectTestResource\")\n            .description(\"CrossConnectTestResource\")\n            .build());\n\n        var dc1 = new Datacenter(\"dc1\", DatacenterArgs.builder()\n            .location(\"de/txl\")\n            .name(\"dc1\")\n            .build());\n\n        var dc2 = new Datacenter(\"dc2\", DatacenterArgs.builder()\n            .location(\"de/txl\")\n            .name(\"dc2\")\n            .build());\n\n        var dc1lan = new Lan(\"dc1lan\", LanArgs.builder()\n            .datacenterId(dc1.id())\n            .public_(false)\n            .name(\"dc1lan\")\n            .pcc(crossConnectTestResource.id())\n            .build());\n\n        var dc2lan = new Lan(\"dc2lan\", LanArgs.builder()\n            .datacenterId(dc2.id())\n            .public_(false)\n            .name(\"dc2lan\")\n            .pcc(crossConnectTestResource.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  crossConnectTestResource:\n    type: ionoscloud:compute:Crossconnect\n    name: CrossConnectTestResource\n    properties:\n      name: CrossConnectTestResource\n      description: CrossConnectTestResource\n  dc1:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      location: de/txl\n      name: dc1\n  dc2:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      location: de/txl\n      name: dc2\n  dc1lan:\n    type: ionoscloud:compute:Lan\n    properties:\n      datacenterId: ${dc1.id}\n      public: false\n      name: dc1lan\n      pcc: ${crossConnectTestResource.id}\n  dc2lan:\n    type: ionoscloud:compute:Lan\n    properties:\n      datacenterId: ${dc2.id}\n      public: false\n      name: dc2lan\n      pcc: ${crossConnectTestResource.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Cross Connect resource can be imported using its `resource id`, e.g.\n\n```sh\n$ pulumi import ionoscloud:compute/crossconnect:Crossconnect demo ionoscloud_private_crossconnect_uuid\n```\n\nThis can be helpful when you want to import cross-connects which you have already created manually or using other means, outside of terraform.\n\n",
            "properties": {
                "connectableDatacenters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/CrossconnectConnectableDatacenter:CrossconnectConnectableDatacenter"
                    },
                    "description": "A list containing all the connectable datacenters"
                },
                "description": {
                    "type": "string",
                    "description": "[string] A short description for the cross-connection.\n- `connectable datacenters` - (Computed) A list containing all the connectable datacenters\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the cross-connection.\n"
                },
                "peers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/CrossconnectPeer:CrossconnectPeer"
                    },
                    "description": "Lists LAN's joined to this cross connect\n"
                }
            },
            "required": [
                "connectableDatacenters",
                "name",
                "peers"
            ],
            "inputProperties": {
                "connectableDatacenters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/CrossconnectConnectableDatacenter:CrossconnectConnectableDatacenter"
                    },
                    "description": "A list containing all the connectable datacenters"
                },
                "description": {
                    "type": "string",
                    "description": "[string] A short description for the cross-connection.\n- `connectable datacenters` - (Computed) A list containing all the connectable datacenters\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the cross-connection.\n"
                },
                "peers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/CrossconnectPeer:CrossconnectPeer"
                    },
                    "description": "Lists LAN's joined to this cross connect\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Crossconnect resources.\n",
                "properties": {
                    "connectableDatacenters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/CrossconnectConnectableDatacenter:CrossconnectConnectableDatacenter"
                        },
                        "description": "A list containing all the connectable datacenters"
                    },
                    "description": {
                        "type": "string",
                        "description": "[string] A short description for the cross-connection.\n- `connectable datacenters` - (Computed) A list containing all the connectable datacenters\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the cross-connection.\n"
                    },
                    "peers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/CrossconnectPeer:CrossconnectPeer"
                        },
                        "description": "Lists LAN's joined to this cross connect\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/cubeServer:CubeServer": {
            "description": "A [Cube](https://docs.ionos.com/cloud/compute-services/cubes/overview) is a Virtual Machine (VM) with an attached NVMe Volume. You can use each newly created Cube as a new VM, either standalone or in combination with other IONOS Cloud products.\n\nCheck out [Configuration templates](https://docs.ionos.com/cloud/compute-services/cubes/overview#basic-cubes)\n\n## Example Usage\n\nThis resource will create an operational server. After this section completes, the provisioner can be called.\n\n### CUBE Server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = ionoscloud.compute.getTemplate({\n    name: \"Basic Cube XS\",\n});\nconst exampleDatacenter = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"de/txl\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleCubeServer = new ionoscloud.compute.CubeServer(\"example\", {\n    name: \"Server Example\",\n    imageName: \"ubuntu:latest\",\n    templateUuid: example.then(example =\u003e example.id),\n    imagePassword: serverImagePassword.result,\n    datacenterId: exampleDatacenter.id,\n    volume: {\n        name: \"Volume Example\",\n        licenceType: \"LINUX\",\n        diskType: \"DAS\",\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"Nic Example\",\n        dhcp: true,\n        firewallActive: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.get_template(name=\"Basic Cube XS\")\nexample_datacenter = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"de/txl\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example_datacenter.id,\n    public=True,\n    name=\"Lan Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_cube_server = ionoscloud.compute.CubeServer(\"example\",\n    name=\"Server Example\",\n    image_name=\"ubuntu:latest\",\n    template_uuid=example.id,\n    image_password=server_image_password[\"result\"],\n    datacenter_id=example_datacenter.id,\n    volume={\n        \"name\": \"Volume Example\",\n        \"licence_type\": \"LINUX\",\n        \"disk_type\": \"DAS\",\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"Nic Example\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTemplate.Invoke(new()\n    {\n        Name = \"Basic Cube XS\",\n    });\n\n    var exampleDatacenter = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"de/txl\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleCubeServer = new Ionoscloud.Compute.CubeServer(\"example\", new()\n    {\n        Name = \"Server Example\",\n        ImageName = \"ubuntu:latest\",\n        TemplateUuid = example.Apply(getTemplateResult =\u003e getTemplateResult.Id),\n        ImagePassword = serverImagePassword.Result,\n        DatacenterId = exampleDatacenter.Id,\n        Volume = new Ionoscloud.Compute.Inputs.CubeServerVolumeArgs\n        {\n            Name = \"Volume Example\",\n            LicenceType = \"LINUX\",\n            DiskType = \"DAS\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.CubeServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"Nic Example\",\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.GetTemplate(ctx, \u0026compute.GetTemplateArgs{\n\t\t\tName: pulumi.StringRef(\"Basic Cube XS\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDatacenter, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: exampleDatacenter.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewCubeServer(ctx, \"example\", \u0026compute.CubeServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tImageName:     pulumi.String(\"ubuntu:latest\"),\n\t\t\tTemplateUuid:  pulumi.String(pulumi.String(example.Id)),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tDatacenterId:  exampleDatacenter.ID(),\n\t\t\tVolume: \u0026compute.CubeServerVolumeArgs{\n\t\t\t\tName:        pulumi.String(\"Volume Example\"),\n\t\t\t\tLicenceType: pulumi.String(\"LINUX\"),\n\t\t\t\tDiskType:    pulumi.String(\"DAS\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.CubeServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"Nic Example\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.CubeServer;\nimport com.ionoscloud.pulumi.ionoscloud.compute.CubeServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.CubeServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.CubeServerNicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()\n            .name(\"Basic Cube XS\")\n            .build());\n\n        var exampleDatacenter = new Datacenter(\"exampleDatacenter\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"de/txl\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleCubeServer = new CubeServer(\"exampleCubeServer\", CubeServerArgs.builder()\n            .name(\"Server Example\")\n            .imageName(\"ubuntu:latest\")\n            .templateUuid(example.id())\n            .imagePassword(serverImagePassword.result())\n            .datacenterId(exampleDatacenter.id())\n            .volume(CubeServerVolumeArgs.builder()\n                .name(\"Volume Example\")\n                .licenceType(\"LINUX\")\n                .diskType(\"DAS\")\n                .build())\n            .nic(CubeServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"Nic Example\")\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: example\n    properties:\n      name: Datacenter Example\n      location: de/txl\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      public: true\n      name: Lan Example\n  exampleCubeServer:\n    type: ionoscloud:compute:CubeServer\n    name: example\n    properties:\n      name: Server Example\n      imageName: ubuntu:latest\n      templateUuid: ${example.id}\n      imagePassword: ${serverImagePassword.result}\n      datacenterId: ${exampleDatacenter.id}\n      volume:\n        name: Volume Example\n        licenceType: LINUX\n        diskType: DAS\n      nic:\n        lan: ${exampleLan.id}\n        name: Nic Example\n        dhcp: true\n        firewallActive: true\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTemplate\n      arguments:\n        name: Basic Cube XS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPv6 Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\nimport * as std from \"@pulumi/std\";\n\nconst example = ionoscloud.compute.getTemplate({\n    name: \"Basic Cube XS\",\n});\nconst exampleDatacenter = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"de/txl\",\n});\nconst webserverIpblock = new ionoscloud.compute.IPBlock(\"webserver_ipblock\", {\n    location: \"de/txl\",\n    size: 4,\n    name: \"webserver_ipblock\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    \"public\": true,\n    name: \"Lan Example\",\n    ipv6CidrBlock: std.cidrsubnet({\n        input: exampleDatacenter.ipv6CidrBlock,\n        newbits: 8,\n        netnum: 10,\n    }).result,\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleCubeServer = new ionoscloud.compute.CubeServer(\"example\", {\n    name: \"Server Example\",\n    availabilityZone: \"AUTO\",\n    imageName: \"ubuntu:latest\",\n    templateUuid: example.then(example =\u003e example.id),\n    imagePassword: serverImagePassword.result,\n    datacenterId: exampleDatacenter.id,\n    volume: {\n        name: \"Volume Example\",\n        licenceType: \"LINUX\",\n        diskType: \"DAS\",\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"Nic Example\",\n        dhcp: true,\n        ips: [\n            webserverIpblock.ips[0],\n            webserverIpblock.ips[1],\n        ],\n        dhcpv6: false,\n        ipv6CidrBlock: std.cidrsubnet({\n            input: exampleLan.ipv6CidrBlock,\n            newbits: 16,\n            netnum: 5,\n        }).result,\n        ipv6Ips: [\n            std.cidrhost({\n                input: std.cidrsubnet({\n                    input: exampleLan.ipv6CidrBlock,\n                    newbits: 16,\n                    netnum: 5,\n                }).result,\n                host: 1,\n            }).result,\n            std.cidrhost({\n                input: std.cidrsubnet({\n                    input: exampleLan.ipv6CidrBlock,\n                    newbits: 16,\n                    netnum: 5,\n                }).result,\n                host: 2,\n            }).result,\n            std.cidrhost({\n                input: std.cidrsubnet({\n                    input: exampleLan.ipv6CidrBlock,\n                    newbits: 16,\n                    netnum: 5,\n                }).result,\n                host: 3,\n            }).result,\n        ],\n        firewallActive: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\nimport pulumi_std as std\n\nexample = ionoscloud.compute.get_template(name=\"Basic Cube XS\")\nexample_datacenter = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"de/txl\")\nwebserver_ipblock = ionoscloud.compute.IPBlock(\"webserver_ipblock\",\n    location=\"de/txl\",\n    size=4,\n    name=\"webserver_ipblock\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example_datacenter.id,\n    public=True,\n    name=\"Lan Example\",\n    ipv6_cidr_block=std.cidrsubnet(input=example_datacenter.ipv6_cidr_block,\n        newbits=8,\n        netnum=10)[\"result\"])\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_cube_server = ionoscloud.compute.CubeServer(\"example\",\n    name=\"Server Example\",\n    availability_zone=\"AUTO\",\n    image_name=\"ubuntu:latest\",\n    template_uuid=example.id,\n    image_password=server_image_password[\"result\"],\n    datacenter_id=example_datacenter.id,\n    volume={\n        \"name\": \"Volume Example\",\n        \"licence_type\": \"LINUX\",\n        \"disk_type\": \"DAS\",\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"Nic Example\",\n        \"dhcp\": True,\n        \"ips\": [\n            webserver_ipblock.ips[0],\n            webserver_ipblock.ips[1],\n        ],\n        \"dhcpv6\": False,\n        \"ipv6_cidr_block\": std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n            newbits=16,\n            netnum=5)[\"result\"],\n        \"ipv6_ips\": [\n            std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                    newbits=16,\n                    netnum=5)[\"result\"],\n                host=1)[\"result\"],\n            std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                    newbits=16,\n                    netnum=5)[\"result\"],\n                host=2)[\"result\"],\n            std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                    newbits=16,\n                    netnum=5)[\"result\"],\n                host=3)[\"result\"],\n        ],\n        \"firewall_active\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTemplate.Invoke(new()\n    {\n        Name = \"Basic Cube XS\",\n    });\n\n    var exampleDatacenter = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"de/txl\",\n    });\n\n    var webserverIpblock = new Ionoscloud.Compute.IPBlock(\"webserver_ipblock\", new()\n    {\n        Location = \"de/txl\",\n        Size = 4,\n        Name = \"webserver_ipblock\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        Public = true,\n        Name = \"Lan Example\",\n        Ipv6CidrBlock = Std.Index.Cidrsubnet.Invoke(new()\n        {\n            Input = exampleDatacenter.Ipv6CidrBlock,\n            Newbits = 8,\n            Netnum = 10,\n        }).Result,\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleCubeServer = new Ionoscloud.Compute.CubeServer(\"example\", new()\n    {\n        Name = \"Server Example\",\n        AvailabilityZone = \"AUTO\",\n        ImageName = \"ubuntu:latest\",\n        TemplateUuid = example.Apply(getTemplateResult =\u003e getTemplateResult.Id),\n        ImagePassword = serverImagePassword.Result,\n        DatacenterId = exampleDatacenter.Id,\n        Volume = new Ionoscloud.Compute.Inputs.CubeServerVolumeArgs\n        {\n            Name = \"Volume Example\",\n            LicenceType = \"LINUX\",\n            DiskType = \"DAS\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.CubeServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"Nic Example\",\n            Dhcp = true,\n            Ips = new[]\n            {\n                webserverIpblock.Ips.Apply(ips =\u003e ips[0]),\n                webserverIpblock.Ips.Apply(ips =\u003e ips[1]),\n            },\n            Dhcpv6 = false,\n            Ipv6CidrBlock = Std.Index.Cidrsubnet.Invoke(new()\n            {\n                Input = exampleLan.Ipv6CidrBlock,\n                Newbits = 16,\n                Netnum = 5,\n            }).Result,\n            Ipv6Ips = new[]\n            {\n                Std.Index.Cidrhost.Invoke(new()\n                {\n                    Input = Std.Index.Cidrsubnet.Invoke(new()\n                    {\n                        Input = exampleLan.Ipv6CidrBlock,\n                        Newbits = 16,\n                        Netnum = 5,\n                    }).Result,\n                    Host = 1,\n                }).Result,\n                Std.Index.Cidrhost.Invoke(new()\n                {\n                    Input = Std.Index.Cidrsubnet.Invoke(new()\n                    {\n                        Input = exampleLan.Ipv6CidrBlock,\n                        Newbits = 16,\n                        Netnum = 5,\n                    }).Result,\n                    Host = 2,\n                }).Result,\n                Std.Index.Cidrhost.Invoke(new()\n                {\n                    Input = Std.Index.Cidrsubnet.Invoke(new()\n                    {\n                        Input = exampleLan.Ipv6CidrBlock,\n                        Newbits = 16,\n                        Netnum = 5,\n                    }).Result,\n                    Host = 3,\n                }).Result,\n            },\n            FirewallActive = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.GetTemplate(ctx, \u0026compute.GetTemplateArgs{\n\t\t\tName: pulumi.StringRef(\"Basic Cube XS\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDatacenter, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserverIpblock, err := compute.NewIPBlock(ctx, \"webserver_ipblock\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t\tSize:     pulumi.Int(4),\n\t\t\tName:     pulumi.String(\"webserver_ipblock\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrsubnet, err := std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\"input\":   exampleDatacenter.Ipv6CidrBlock,\n\t\t\t\"newbits\": 8,\n\t\t\t\"netnum\":  10,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId:  exampleDatacenter.ID(),\n\t\t\tPublic:        pulumi.Bool(true),\n\t\t\tName:          pulumi.String(\"Lan Example\"),\n\t\t\tIpv6CidrBlock: invokeCidrsubnet.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrsubnet1, err := std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\"newbits\": 16,\n\t\t\t\"netnum\":  5,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost2, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  5,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost3, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  5,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 2,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost4, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  5,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 3,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewCubeServer(ctx, \"example\", \u0026compute.CubeServerArgs{\n\t\t\tName:             pulumi.String(\"Server Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tTemplateUuid:     pulumi.String(pulumi.String(example.Id)),\n\t\t\tImagePassword:    serverImagePassword.Result,\n\t\t\tDatacenterId:     exampleDatacenter.ID(),\n\t\t\tVolume: \u0026compute.CubeServerVolumeArgs{\n\t\t\t\tName:        pulumi.String(\"Volume Example\"),\n\t\t\t\tLicenceType: pulumi.String(\"LINUX\"),\n\t\t\t\tDiskType:    pulumi.String(\"DAS\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.CubeServerNicArgs{\n\t\t\t\tLan:  exampleLan.ID(),\n\t\t\t\tName: pulumi.String(\"Nic Example\"),\n\t\t\t\tDhcp: pulumi.Bool(true),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\twebserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\twebserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[1], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDhcpv6:        pulumi.Bool(false),\n\t\t\t\tIpv6CidrBlock: invokeCidrsubnet1.Result,\n\t\t\t\tIpv6Ips: pulumi.StringArray{\n\t\t\t\t\tinvokeCidrhost2.Result,\n\t\t\t\t\tinvokeCidrhost3.Result,\n\t\t\t\t\tinvokeCidrhost4.Result,\n\t\t\t\t},\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.CubeServer;\nimport com.ionoscloud.pulumi.ionoscloud.compute.CubeServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.CubeServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.CubeServerNicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()\n            .name(\"Basic Cube XS\")\n            .build());\n\n        var exampleDatacenter = new Datacenter(\"exampleDatacenter\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"de/txl\")\n            .build());\n\n        var webserverIpblock = new IPBlock(\"webserverIpblock\", IPBlockArgs.builder()\n            .location(\"de/txl\")\n            .size(4)\n            .name(\"webserver_ipblock\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .ipv6CidrBlock(StdFunctions.cidrsubnet(Map.ofEntries(\n                Map.entry(\"input\", exampleDatacenter.ipv6CidrBlock()),\n                Map.entry(\"newbits\", 8),\n                Map.entry(\"netnum\", 10)\n            )).result())\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleCubeServer = new CubeServer(\"exampleCubeServer\", CubeServerArgs.builder()\n            .name(\"Server Example\")\n            .availabilityZone(\"AUTO\")\n            .imageName(\"ubuntu:latest\")\n            .templateUuid(example.id())\n            .imagePassword(serverImagePassword.result())\n            .datacenterId(exampleDatacenter.id())\n            .volume(CubeServerVolumeArgs.builder()\n                .name(\"Volume Example\")\n                .licenceType(\"LINUX\")\n                .diskType(\"DAS\")\n                .build())\n            .nic(CubeServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"Nic Example\")\n                .dhcp(true)\n                .ips(                \n                    webserverIpblock.ips().applyValue(_ips -\u003e _ips[0]),\n                    webserverIpblock.ips().applyValue(_ips -\u003e _ips[1]))\n                .dhcpv6(false)\n                .ipv6CidrBlock(StdFunctions.cidrsubnet(Map.ofEntries(\n                    Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                    Map.entry(\"newbits\", 16),\n                    Map.entry(\"netnum\", 5)\n                )).result())\n                .ipv6Ips(                \n                    StdFunctions.cidrhost(Map.ofEntries(\n                        Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                            Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                            Map.entry(\"newbits\", 16),\n                            Map.entry(\"netnum\", 5)\n                        )).result()),\n                        Map.entry(\"host\", 1)\n                    )).result(),\n                    StdFunctions.cidrhost(Map.ofEntries(\n                        Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                            Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                            Map.entry(\"newbits\", 16),\n                            Map.entry(\"netnum\", 5)\n                        )).result()),\n                        Map.entry(\"host\", 2)\n                    )).result(),\n                    StdFunctions.cidrhost(Map.ofEntries(\n                        Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                            Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                            Map.entry(\"newbits\", 16),\n                            Map.entry(\"netnum\", 5)\n                        )).result()),\n                        Map.entry(\"host\", 3)\n                    )).result())\n                .firewallActive(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: example\n    properties:\n      name: Datacenter Example\n      location: de/txl\n  webserverIpblock:\n    type: ionoscloud:compute:IPBlock\n    name: webserver_ipblock\n    properties:\n      location: de/txl\n      size: 4\n      name: webserver_ipblock\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      public: true\n      name: Lan Example\n      ipv6CidrBlock:\n        fn::invoke:\n          function: std:cidrsubnet\n          arguments:\n            input: ${exampleDatacenter.ipv6CidrBlock}\n            newbits: 8\n            netnum: 10\n          return: result\n  exampleCubeServer:\n    type: ionoscloud:compute:CubeServer\n    name: example\n    properties:\n      name: Server Example\n      availabilityZone: AUTO\n      imageName: ubuntu:latest\n      templateUuid: ${example.id}\n      imagePassword: ${serverImagePassword.result}\n      datacenterId: ${exampleDatacenter.id}\n      volume:\n        name: Volume Example\n        licenceType: LINUX\n        diskType: DAS\n      nic:\n        lan: ${exampleLan.id}\n        name: Nic Example\n        dhcp: true\n        ips:\n          - ${webserverIpblock.ips[0]}\n          - ${webserverIpblock.ips[1]}\n        dhcpv6: false\n        ipv6CidrBlock:\n          fn::invoke:\n            function: std:cidrsubnet\n            arguments:\n              input: ${exampleLan.ipv6CidrBlock}\n              newbits: 16\n              netnum: 5\n            return: result\n        ipv6Ips:\n          - fn::invoke:\n              function: std:cidrhost\n              arguments:\n                input:\n                  fn::invoke:\n                    function: std:cidrsubnet\n                    arguments:\n                      input: ${exampleLan.ipv6CidrBlock}\n                      newbits: 16\n                      netnum: 5\n                    return: result\n                host: 1\n              return: result\n          - fn::invoke:\n              function: std:cidrhost\n              arguments:\n                input:\n                  fn::invoke:\n                    function: std:cidrsubnet\n                    arguments:\n                      input: ${exampleLan.ipv6CidrBlock}\n                      newbits: 16\n                      netnum: 5\n                    return: result\n                host: 2\n              return: result\n          - fn::invoke:\n              function: std:cidrhost\n              arguments:\n                input:\n                  fn::invoke:\n                    function: std:cidrsubnet\n                    arguments:\n                      input: ${exampleLan.ipv6CidrBlock}\n                      newbits: 16\n                      netnum: 5\n                    return: result\n                host: 3\n              return: result\n        firewallActive: true\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTemplate\n      arguments:\n        name: Basic Cube XS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\nPlease note that for any secondary volume, you need to set the **licence_type** property to **UNKNOWN**\n\n## Import\n\nResource Server can be imported using the `resource id` and the `datacenter id`, e.g.\n\n```sh\nterraform import ionoscloud_cube_server.myserver datacenter uuid/server uuid\n```\n\n",
            "properties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e For creating a **CUBE** server, you can not set `volume.size` argument.\n\u003e\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n"
                },
                "bootCdrom": {
                    "type": "string",
                    "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                    "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "bootVolume": {
                    "type": "string",
                    "description": "The associated boot volume.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "firewallruleId": {
                    "type": "string",
                    "description": "The associated firewall rule.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "inlineVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list that contains the IDs for the volumes defined inside the cube server resource."
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/CubeServerNic:CubeServerNic",
                    "description": "See the Nic section.\n"
                },
                "primaryIp": {
                    "type": "string",
                    "description": "The associated IP address.\n"
                },
                "primaryNic": {
                    "type": "string",
                    "description": "The associated NIC.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n"
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the cube server. E.g: `RUNNING` or `SUSPENDED`.\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/CubeServerVolume:CubeServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "required": [
                "availabilityZone",
                "bootCdrom",
                "bootImage",
                "bootVolume",
                "datacenterId",
                "firewallruleId",
                "hostname",
                "imageName",
                "imagePassword",
                "inlineVolumeIds",
                "name",
                "nic",
                "primaryIp",
                "primaryNic",
                "sshKeyPaths",
                "templateUuid",
                "vmState",
                "volume"
            ],
            "inputProperties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e For creating a **CUBE** server, you can not set `volume.size` argument.\n\u003e\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "bootCdrom": {
                    "type": "string",
                    "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                    "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/CubeServerNic:CubeServerNic",
                    "description": "See the Nic section.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n",
                    "willReplaceOnChanges": true
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the cube server. E.g: `RUNNING` or `SUSPENDED`.\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/CubeServerVolume:CubeServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "nic",
                "templateUuid",
                "volume"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CubeServer resources.\n",
                "properties": {
                    "allowReplace": {
                        "type": "boolean",
                        "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e For creating a **CUBE** server, you can not set `volume.size` argument.\n\u003e\n"
                    },
                    "availabilityZone": {
                        "type": "string",
                        "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "bootCdrom": {
                        "type": "string",
                        "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                        "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                    },
                    "bootImage": {
                        "type": "string",
                        "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                    },
                    "bootVolume": {
                        "type": "string",
                        "description": "The associated boot volume.\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "firewallruleId": {
                        "type": "string",
                        "description": "The associated firewall rule.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                    },
                    "imageName": {
                        "type": "string",
                        "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "imagePassword": {
                        "type": "string",
                        "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                        "secret": true
                    },
                    "inlineVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list that contains the IDs for the volumes defined inside the cube server resource."
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the server.\n"
                    },
                    "nic": {
                        "$ref": "#/types/ionoscloud:compute/CubeServerNic:CubeServerNic",
                        "description": "See the Nic section.\n"
                    },
                    "primaryIp": {
                        "type": "string",
                        "description": "The associated IP address.\n"
                    },
                    "primaryNic": {
                        "type": "string",
                        "description": "The associated NIC.\n"
                    },
                    "securityGroupsIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of Security Group IDs for the resource.\n"
                    },
                    "sshKeyPaths": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "[string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n",
                        "willReplaceOnChanges": true
                    },
                    "vmState": {
                        "type": "string",
                        "description": "[string] Sets the power state of the cube server. E.g: `RUNNING` or `SUSPENDED`.\n"
                    },
                    "volume": {
                        "$ref": "#/types/ionoscloud:compute/CubeServerVolume:CubeServerVolume",
                        "description": "See the Volume section.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/datacenter:Datacenter": {
            "description": "Manages a Virtual [Data Center](https://docs.ionos.com/cloud/set-up-ionos-cloud/get-started/configure-data-center) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"datacenter description\",\n    secAuthProtection: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"datacenter description\",\n    sec_auth_protection=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"datacenter description\",\n        SecAuthProtection = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"datacenter description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"datacenter description\")\n            .secAuthProtection(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: datacenter description\n      secAuthProtection: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Attaching a NSG to a Datacenter\n\nA single Network Security Group can be attached at any time to a Datacenter. To do this, use the \u003cspan pulumi-lang-nodejs=\"`ionoscloud.nsg.DatacenterNsgSelection`\" pulumi-lang-dotnet=\"`ionoscloud.nsg.DatacenterNsgSelection`\" pulumi-lang-go=\"`nsg.DatacenterNsgSelection`\" pulumi-lang-python=\"`nsg.DatacenterNsgSelection`\" pulumi-lang-yaml=\"`ionoscloud.nsg.DatacenterNsgSelection`\" pulumi-lang-java=\"`ionoscloud.nsg.DatacenterNsgSelection`\"\u003e`ionoscloud.nsg.DatacenterNsgSelection`\u003c/span\u003e and provide the IDs of the NSG and Datacenter to link them. \nDeleting the resource or setting the empty string for the \u003cspan pulumi-lang-nodejs=\"`nsgId`\" pulumi-lang-dotnet=\"`NsgId`\" pulumi-lang-go=\"`nsgId`\" pulumi-lang-python=\"`nsg_id`\" pulumi-lang-yaml=\"`nsgId`\" pulumi-lang-java=\"`nsgId`\"\u003e`nsgId`\u003c/span\u003e field will de-attach any previously linked NSG from the Datacenter.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter NSG Example\",\n    location: \"de/txl\",\n});\nconst exampleNsg = new ionoscloud.nsg.Nsg(\"example\", {\n    name: \"Example NSG\",\n    description: \"Example NSG Description\",\n    datacenterId: example.id,\n});\nconst exampleDatacenterNsgSelection = new ionoscloud.nsg.DatacenterNsgSelection(\"example\", {\n    datacenterId: example.id,\n    nsgId: exampleNsg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter NSG Example\",\n    location=\"de/txl\")\nexample_nsg = ionoscloud.nsg.Nsg(\"example\",\n    name=\"Example NSG\",\n    description=\"Example NSG Description\",\n    datacenter_id=example.id)\nexample_datacenter_nsg_selection = ionoscloud.nsg.DatacenterNsgSelection(\"example\",\n    datacenter_id=example.id,\n    nsg_id=example_nsg.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter NSG Example\",\n        Location = \"de/txl\",\n    });\n\n    var exampleNsg = new Ionoscloud.Nsg.Nsg(\"example\", new()\n    {\n        Name = \"Example NSG\",\n        Description = \"Example NSG Description\",\n        DatacenterId = example.Id,\n    });\n\n    var exampleDatacenterNsgSelection = new Ionoscloud.Nsg.DatacenterNsgSelection(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        NsgId = exampleNsg.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nsg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter NSG Example\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNsg, err := nsg.NewNsg(ctx, \"example\", \u0026nsg.NsgArgs{\n\t\t\tName:         pulumi.String(\"Example NSG\"),\n\t\t\tDescription:  pulumi.String(\"Example NSG Description\"),\n\t\t\tDatacenterId: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nsg.NewDatacenterNsgSelection(ctx, \"example\", \u0026nsg.DatacenterNsgSelectionArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tNsgId:        exampleNsg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.Nsg;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.NsgArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.DatacenterNsgSelection;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.DatacenterNsgSelectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter NSG Example\")\n            .location(\"de/txl\")\n            .build());\n\n        var exampleNsg = new Nsg(\"exampleNsg\", NsgArgs.builder()\n            .name(\"Example NSG\")\n            .description(\"Example NSG Description\")\n            .datacenterId(example.id())\n            .build());\n\n        var exampleDatacenterNsgSelection = new DatacenterNsgSelection(\"exampleDatacenterNsgSelection\", DatacenterNsgSelectionArgs.builder()\n            .datacenterId(example.id())\n            .nsgId(exampleNsg.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter NSG Example\n      location: de/txl\n  exampleNsg:\n    type: ionoscloud:nsg:Nsg\n    name: example\n    properties:\n      name: Example NSG\n      description: Example NSG Description\n      datacenterId: ${example.id}\n  exampleDatacenterNsgSelection:\n    type: ionoscloud:nsg:DatacenterNsgSelection\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      nsgId: ${exampleNsg.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Datacenter can be imported using the `resource id`, e.g.\n\n```sh\nimport {\n  to = ionoscloud_datacenter.example\n  id = \"datacenter uuid\" \n}\n```\nAuto-generate the datacenter resource in the `dc.tf` file using the following command:\n```sh\npulumi preview -generate-config-out=dc.tf\n```\nThe older syntax can be for importing the resource is still supported:\n\n```sh\nterraform import ionoscloud_datacenter.mydc datacenter uuid\n```\n\n",
            "properties": {
                "cpuArchitectures": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/DatacenterCpuArchitecture:DatacenterCpuArchitecture"
                    },
                    "description": "Array of features and CPU families available in a location\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] Description for the Virtual Data Center.\n"
                },
                "features": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of features supported by the location this data center is part of\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "The automatically-assigned /56 IPv6 CIDR block if IPv6 is enabled on this virtual data center\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The regional location where the Virtual Data Center will be created. This argument is immutable. Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Virtual Data Center.\n"
                },
                "secAuthProtection": {
                    "type": "boolean",
                    "description": "[bool] Boolean value representing if the data center requires extra protection e.g. two factor protection\n"
                },
                "version": {
                    "type": "integer",
                    "description": "The version of that Data Center. Gets incremented with every change\n"
                }
            },
            "required": [
                "cpuArchitectures",
                "description",
                "features",
                "ipv6CidrBlock",
                "location",
                "name",
                "version"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "[string] Description for the Virtual Data Center.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The regional location where the Virtual Data Center will be created. This argument is immutable. Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Virtual Data Center.\n"
                },
                "secAuthProtection": {
                    "type": "boolean",
                    "description": "[bool] Boolean value representing if the data center requires extra protection e.g. two factor protection\n"
                }
            },
            "requiredInputs": [
                "location"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Datacenter resources.\n",
                "properties": {
                    "cpuArchitectures": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/DatacenterCpuArchitecture:DatacenterCpuArchitecture"
                        },
                        "description": "Array of features and CPU families available in a location\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "[string] Description for the Virtual Data Center.\n"
                    },
                    "features": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of features supported by the location this data center is part of\n"
                    },
                    "ipv6CidrBlock": {
                        "type": "string",
                        "description": "The automatically-assigned /56 IPv6 CIDR block if IPv6 is enabled on this virtual data center\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The regional location where the Virtual Data Center will be created. This argument is immutable. Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Virtual Data Center.\n"
                    },
                    "secAuthProtection": {
                        "type": "boolean",
                        "description": "[bool] Boolean value representing if the data center requires extra protection e.g. two factor protection\n"
                    },
                    "version": {
                        "type": "integer",
                        "description": "The version of that Data Center. Gets incremented with every change\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/firewall:Firewall": {
            "description": "Manages a set of **Firewall Rules** on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: example.location,\n    size: 2,\n    name: \"IP Block Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: example.id,\n    cores: 1,\n    ram: 1024,\n    imageName: \"Ubuntu-20.04\",\n    imagePassword: serverImagePassword.result,\n    volume: {\n        name: \"system\",\n        size: 14,\n        diskType: \"SSD\",\n    },\n    nic: {\n        lan: 1,\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst exampleNic = new ionoscloud.compute.Nic(\"example\", {\n    datacenterId: example.id,\n    serverId: exampleServer.id,\n    lan: 2,\n    dhcp: true,\n    firewallActive: true,\n    name: \"Nic Example\",\n});\nconst exampleFirewall = new ionoscloud.compute.Firewall(\"example\", {\n    datacenterId: example.id,\n    serverId: exampleServer.id,\n    nicId: exampleNic.id,\n    protocol: \"ICMP\",\n    name: \"Firewall Example\",\n    sourceMac: \"00:0a:95:9d:68:16\",\n    sourceIp: exampleIPBlock.ips[0],\n    targetIp: exampleIPBlock.ips[1],\n    icmpType: \"1\",\n    icmpCode: \"8\",\n    type: \"INGRESS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=example.location,\n    size=2,\n    name=\"IP Block Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example.id,\n    cores=1,\n    ram=1024,\n    image_name=\"Ubuntu-20.04\",\n    image_password=server_image_password[\"result\"],\n    volume={\n        \"name\": \"system\",\n        \"size\": 14,\n        \"disk_type\": \"SSD\",\n    },\n    nic={\n        \"lan\": 1,\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample_nic = ionoscloud.compute.Nic(\"example\",\n    datacenter_id=example.id,\n    server_id=example_server.id,\n    lan=2,\n    dhcp=True,\n    firewall_active=True,\n    name=\"Nic Example\")\nexample_firewall = ionoscloud.compute.Firewall(\"example\",\n    datacenter_id=example.id,\n    server_id=example_server.id,\n    nic_id=example_nic.id,\n    protocol=\"ICMP\",\n    name=\"Firewall Example\",\n    source_mac=\"00:0a:95:9d:68:16\",\n    source_ip=example_ip_block.ips[0],\n    target_ip=example_ip_block.ips[1],\n    icmp_type=\"1\",\n    icmp_code=\"8\",\n    type=\"INGRESS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = example.Location,\n        Size = 2,\n        Name = \"IP Block Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = example.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = \"Ubuntu-20.04\",\n        ImagePassword = serverImagePassword.Result,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 14,\n            DiskType = \"SSD\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = 1,\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var exampleNic = new Ionoscloud.Compute.Nic(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        ServerId = exampleServer.Id,\n        Lan = 2,\n        Dhcp = true,\n        FirewallActive = true,\n        Name = \"Nic Example\",\n    });\n\n    var exampleFirewall = new Ionoscloud.Compute.Firewall(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        ServerId = exampleServer.Id,\n        NicId = exampleNic.Id,\n        Protocol = \"ICMP\",\n        Name = \"Firewall Example\",\n        SourceMac = \"00:0a:95:9d:68:16\",\n        SourceIp = exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n        TargetIp = exampleIPBlock.Ips.Apply(ips =\u003e ips[1]),\n        IcmpType = \"1\",\n        IcmpCode = \"8\",\n        Type = \"INGRESS\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: example.Location,\n\t\t\tSize:     pulumi.Int(2),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(\"Ubuntu-20.04\"),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:     pulumi.String(\"system\"),\n\t\t\t\tSize:     pulumi.Int(14),\n\t\t\t\tDiskType: pulumi.String(\"SSD\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Int(1),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNic, err := compute.NewNic(ctx, \"example\", \u0026compute.NicArgs{\n\t\t\tDatacenterId:   example.ID(),\n\t\t\tServerId:       exampleServer.ID(),\n\t\t\tLan:            pulumi.Int(2),\n\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\tName:           pulumi.String(\"Nic Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewall(ctx, \"example\", \u0026compute.FirewallArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tServerId:     exampleServer.ID(),\n\t\t\tNicId:        exampleNic.ID(),\n\t\t\tProtocol:     pulumi.String(\"ICMP\"),\n\t\t\tName:         pulumi.String(\"Firewall Example\"),\n\t\t\tSourceMac:    pulumi.String(\"00:0a:95:9d:68:16\"),\n\t\t\tSourceIp: exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTargetIp: exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[1], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tIcmpType: pulumi.String(\"1\"),\n\t\t\tIcmpCode: pulumi.String(\"8\"),\n\t\t\tType:     pulumi.String(\"INGRESS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Nic;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Firewall;\nimport com.ionoscloud.pulumi.ionoscloud.compute.FirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(example.location())\n            .size(2)\n            .name(\"IP Block Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(example.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(\"Ubuntu-20.04\")\n            .imagePassword(serverImagePassword.result())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(14)\n                .diskType(\"SSD\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(1)\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        var exampleNic = new Nic(\"exampleNic\", NicArgs.builder()\n            .datacenterId(example.id())\n            .serverId(exampleServer.id())\n            .lan(2)\n            .dhcp(true)\n            .firewallActive(true)\n            .name(\"Nic Example\")\n            .build());\n\n        var exampleFirewall = new Firewall(\"exampleFirewall\", FirewallArgs.builder()\n            .datacenterId(example.id())\n            .serverId(exampleServer.id())\n            .nicId(exampleNic.id())\n            .protocol(\"ICMP\")\n            .name(\"Firewall Example\")\n            .sourceMac(\"00:0a:95:9d:68:16\")\n            .sourceIp(exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]))\n            .targetIp(exampleIPBlock.ips().applyValue(_ips -\u003e _ips[1]))\n            .icmpType(\"1\")\n            .icmpCode(\"8\")\n            .type(\"INGRESS\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: ${example.location}\n      size: 2\n      name: IP Block Example\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${example.id}\n      cores: 1\n      ram: 1024\n      imageName: Ubuntu-20.04\n      imagePassword: ${serverImagePassword.result}\n      volume:\n        name: system\n        size: 14\n        diskType: SSD\n      nic:\n        lan: '1'\n        dhcp: true\n        firewallActive: true\n  exampleNic:\n    type: ionoscloud:compute:Nic\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      serverId: ${exampleServer.id}\n      lan: 2\n      dhcp: true\n      firewallActive: true\n      name: Nic Example\n  exampleFirewall:\n    type: ionoscloud:compute:Firewall\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      serverId: ${exampleServer.id}\n      nicId: ${exampleNic.id}\n      protocol: ICMP\n      name: Firewall Example\n      sourceMac: 00:0a:95:9d:68:16\n      sourceIp: ${exampleIPBlock.ips[0]}\n      targetIp: ${exampleIPBlock.ips[1]}\n      icmpType: 1\n      icmpCode: 8\n      type: INGRESS\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Firewall can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_firewall.myfwruledatacenter uuid/server uuid/nic uuid/firewall uuid\n```\n\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The Virtual Data Center ID.\n"
                },
                "icmpCode": {
                    "type": "string",
                    "description": "[int] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen.\n"
                },
                "icmpType": {
                    "type": "string",
                    "description": "[string] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the firewall rule.\n"
                },
                "nicId": {
                    "type": "string",
                    "description": "[string] The NIC ID.\n"
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "[int] Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "[int] Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] The protocol for the rule: TCP, UDP, ICMP, ANY. Property cannot be modified after creation (disallowed in update requests).\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The Server ID.\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "[string] Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "[string] Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address. Valid format: aa:bb:cc:dd:ee:ff.\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "[string] In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] The type of firewall rule. If is not specified, it will take the default value INGRESS.\n"
                }
            },
            "required": [
                "datacenterId",
                "name",
                "nicId",
                "protocol",
                "serverId",
                "sourceIp",
                "targetIp",
                "type"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The Virtual Data Center ID.\n",
                    "willReplaceOnChanges": true
                },
                "icmpCode": {
                    "type": "string",
                    "description": "[int] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen.\n"
                },
                "icmpType": {
                    "type": "string",
                    "description": "[string] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the firewall rule.\n"
                },
                "nicId": {
                    "type": "string",
                    "description": "[string] The NIC ID.\n",
                    "willReplaceOnChanges": true
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "[int] Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "[int] Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] The protocol for the rule: TCP, UDP, ICMP, ANY. Property cannot be modified after creation (disallowed in update requests).\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The Server ID.\n",
                    "willReplaceOnChanges": true
                },
                "sourceIp": {
                    "type": "string",
                    "description": "[string] Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "[string] Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address. Valid format: aa:bb:cc:dd:ee:ff.\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "[string] In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] The type of firewall rule. If is not specified, it will take the default value INGRESS.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "nicId",
                "protocol",
                "serverId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Firewall resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The Virtual Data Center ID.\n",
                        "willReplaceOnChanges": true
                    },
                    "icmpCode": {
                        "type": "string",
                        "description": "[int] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen.\n"
                    },
                    "icmpType": {
                        "type": "string",
                        "description": "[string] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the firewall rule.\n"
                    },
                    "nicId": {
                        "type": "string",
                        "description": "[string] The NIC ID.\n",
                        "willReplaceOnChanges": true
                    },
                    "portRangeEnd": {
                        "type": "integer",
                        "description": "[int] Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                    },
                    "portRangeStart": {
                        "type": "integer",
                        "description": "[int] Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                    },
                    "protocol": {
                        "type": "string",
                        "description": "[string] The protocol for the rule: TCP, UDP, ICMP, ANY. Property cannot be modified after creation (disallowed in update requests).\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "[string] The Server ID.\n",
                        "willReplaceOnChanges": true
                    },
                    "sourceIp": {
                        "type": "string",
                        "description": "[string] Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.\n"
                    },
                    "sourceMac": {
                        "type": "string",
                        "description": "[string] Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address. Valid format: aa:bb:cc:dd:ee:ff.\n"
                    },
                    "targetIp": {
                        "type": "string",
                        "description": "[string] In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "[string] The type of firewall rule. If is not specified, it will take the default value INGRESS.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/gPUServer:GPUServer": {
            "description": "A GPU Server is a Virtual Machine (VM) provisioned from a GPU-enabled template.\n\nCheck out the [docs page](https://docs.ionos.com/cloud/compute-services/compute-engine/cloud-gpu-vm)\n\n## Example Usage\n\nThis resource will create an operational server. After this section completes, the provisioner can be called.\n\n### GPU Server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"de/fra/2\",\n});\nconst webserverIpblock = new ionoscloud.compute.IPBlock(\"webserver_ipblock\", {\n    location: \"de/fra\",\n    size: 1,\n    name: \"webserver_ipblock\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleGPUServer = new ionoscloud.compute.GPUServer(\"example\", {\n    name: \"GPU Server Example\",\n    hostname: \"gpu-server-example\",\n    datacenterId: example.id,\n    availabilityZone: \"AUTO\",\n    templateUuid: \"6913ed82-a143-4c15-89ac-08fb375a97c5\",\n    imageName: \"ubuntu:latest\",\n    imagePassword: serverImagePassword.result,\n    vmState: \"RUNNING\",\n    volume: {\n        name: \"system\",\n        licenceType: \"LINUX\",\n        diskType: \"SSD Premium\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"AUTO\",\n        exposeSerial: true,\n        requireLegacyBios: false,\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"system\",\n        dhcp: true,\n        firewallActive: true,\n        firewallType: \"INGRESS\",\n        ips: [webserverIpblock.ips[0]],\n        firewall: {\n            protocol: \"TCP\",\n            name: \"SSH\",\n            portRangeStart: 22,\n            portRangeEnd: 22,\n            type: \"INGRESS\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"de/fra/2\")\nwebserver_ipblock = ionoscloud.compute.IPBlock(\"webserver_ipblock\",\n    location=\"de/fra\",\n    size=1,\n    name=\"webserver_ipblock\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_gpu_server = ionoscloud.compute.GPUServer(\"example\",\n    name=\"GPU Server Example\",\n    hostname=\"gpu-server-example\",\n    datacenter_id=example.id,\n    availability_zone=\"AUTO\",\n    template_uuid=\"6913ed82-a143-4c15-89ac-08fb375a97c5\",\n    image_name=\"ubuntu:latest\",\n    image_password=server_image_password[\"result\"],\n    vm_state=\"RUNNING\",\n    volume={\n        \"name\": \"system\",\n        \"licence_type\": \"LINUX\",\n        \"disk_type\": \"SSD Premium\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"AUTO\",\n        \"expose_serial\": True,\n        \"require_legacy_bios\": False,\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"system\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n        \"firewall_type\": \"INGRESS\",\n        \"ips\": [webserver_ipblock.ips[0]],\n        \"firewall\": {\n            \"protocol\": \"TCP\",\n            \"name\": \"SSH\",\n            \"port_range_start\": 22,\n            \"port_range_end\": 22,\n            \"type\": \"INGRESS\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"de/fra/2\",\n    });\n\n    var webserverIpblock = new Ionoscloud.Compute.IPBlock(\"webserver_ipblock\", new()\n    {\n        Location = \"de/fra\",\n        Size = 1,\n        Name = \"webserver_ipblock\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleGPUServer = new Ionoscloud.Compute.GPUServer(\"example\", new()\n    {\n        Name = \"GPU Server Example\",\n        Hostname = \"gpu-server-example\",\n        DatacenterId = example.Id,\n        AvailabilityZone = \"AUTO\",\n        TemplateUuid = \"6913ed82-a143-4c15-89ac-08fb375a97c5\",\n        ImageName = \"ubuntu:latest\",\n        ImagePassword = serverImagePassword.Result,\n        VmState = \"RUNNING\",\n        Volume = new Ionoscloud.Compute.Inputs.GPUServerVolumeArgs\n        {\n            Name = \"system\",\n            LicenceType = \"LINUX\",\n            DiskType = \"SSD Premium\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"AUTO\",\n            ExposeSerial = true,\n            RequireLegacyBios = false,\n        },\n        Nic = new Ionoscloud.Compute.Inputs.GPUServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"system\",\n            Dhcp = true,\n            FirewallActive = true,\n            FirewallType = \"INGRESS\",\n            Ips = new[]\n            {\n                webserverIpblock.Ips.Apply(ips =\u003e ips[0]),\n            },\n            Firewall = new Ionoscloud.Compute.Inputs.GPUServerNicFirewallArgs\n            {\n                Protocol = \"TCP\",\n                Name = \"SSH\",\n                PortRangeStart = 22,\n                PortRangeEnd = 22,\n                Type = \"INGRESS\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation: pulumi.String(\"de/fra/2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserverIpblock, err := compute.NewIPBlock(ctx, \"webserver_ipblock\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t\tName:     pulumi.String(\"webserver_ipblock\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGPUServer(ctx, \"example\", \u0026compute.GPUServerArgs{\n\t\t\tName:             pulumi.String(\"GPU Server Example\"),\n\t\t\tHostname:         pulumi.String(\"gpu-server-example\"),\n\t\t\tDatacenterId:     example.ID(),\n\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\tTemplateUuid:     pulumi.String(\"6913ed82-a143-4c15-89ac-08fb375a97c5\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tImagePassword:    serverImagePassword.Result,\n\t\t\tVmState:          pulumi.String(\"RUNNING\"),\n\t\t\tVolume: \u0026compute.GPUServerVolumeArgs{\n\t\t\t\tName:              pulumi.String(\"system\"),\n\t\t\t\tLicenceType:       pulumi.String(\"LINUX\"),\n\t\t\t\tDiskType:          pulumi.String(\"SSD Premium\"),\n\t\t\t\tBus:               pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone:  pulumi.String(\"AUTO\"),\n\t\t\t\tExposeSerial:      pulumi.Bool(true),\n\t\t\t\tRequireLegacyBios: pulumi.Bool(false),\n\t\t\t},\n\t\t\tNic: \u0026compute.GPUServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"system\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\tFirewallType:   pulumi.String(\"INGRESS\"),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\twebserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tFirewall: \u0026compute.GPUServerNicFirewallArgs{\n\t\t\t\t\tProtocol:       pulumi.String(\"TCP\"),\n\t\t\t\t\tName:           pulumi.String(\"SSH\"),\n\t\t\t\t\tPortRangeStart: pulumi.Int(22),\n\t\t\t\t\tPortRangeEnd:   pulumi.Int(22),\n\t\t\t\t\tType:           pulumi.String(\"INGRESS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.GPUServer;\nimport com.ionoscloud.pulumi.ionoscloud.compute.GPUServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.GPUServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.GPUServerNicArgs;\nimport com.pulumi.ionoscloud.compute.inputs.GPUServerNicFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"de/fra/2\")\n            .build());\n\n        var webserverIpblock = new IPBlock(\"webserverIpblock\", IPBlockArgs.builder()\n            .location(\"de/fra\")\n            .size(1)\n            .name(\"webserver_ipblock\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleGPUServer = new GPUServer(\"exampleGPUServer\", GPUServerArgs.builder()\n            .name(\"GPU Server Example\")\n            .hostname(\"gpu-server-example\")\n            .datacenterId(example.id())\n            .availabilityZone(\"AUTO\")\n            .templateUuid(\"6913ed82-a143-4c15-89ac-08fb375a97c5\")\n            .imageName(\"ubuntu:latest\")\n            .imagePassword(serverImagePassword.result())\n            .vmState(\"RUNNING\")\n            .volume(GPUServerVolumeArgs.builder()\n                .name(\"system\")\n                .licenceType(\"LINUX\")\n                .diskType(\"SSD Premium\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"AUTO\")\n                .exposeSerial(true)\n                .requireLegacyBios(false)\n                .build())\n            .nic(GPUServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"system\")\n                .dhcp(true)\n                .firewallActive(true)\n                .firewallType(\"INGRESS\")\n                .ips(webserverIpblock.ips().applyValue(_ips -\u003e _ips[0]))\n                .firewall(GPUServerNicFirewallArgs.builder()\n                    .protocol(\"TCP\")\n                    .name(\"SSH\")\n                    .portRangeStart(22)\n                    .portRangeEnd(22)\n                    .type(\"INGRESS\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: de/fra/2\n  webserverIpblock:\n    type: ionoscloud:compute:IPBlock\n    name: webserver_ipblock\n    properties:\n      location: de/fra\n      size: 1\n      name: webserver_ipblock\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n  exampleGPUServer:\n    type: ionoscloud:compute:GPUServer\n    name: example\n    properties:\n      name: GPU Server Example\n      hostname: gpu-server-example\n      datacenterId: ${example.id}\n      availabilityZone: AUTO\n      templateUuid: 6913ed82-a143-4c15-89ac-08fb375a97c5\n      imageName: ubuntu:latest\n      imagePassword: ${serverImagePassword.result}\n      vmState: RUNNING\n      volume:\n        name: system\n        licenceType: LINUX\n        diskType: SSD Premium\n        bus: VIRTIO\n        availabilityZone: AUTO\n        exposeSerial: true\n        requireLegacyBios: false\n      nic:\n        lan: ${exampleLan.id}\n        name: system\n        dhcp: true\n        firewallActive: true\n        firewallType: INGRESS\n        ips:\n          - ${webserverIpblock.ips[0]}\n        firewall:\n          protocol: TCP\n          name: SSH\n          portRangeStart: 22\n          portRangeEnd: 22\n          type: INGRESS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource GPU Server can be imported using the `resource id` and the `datacenter id`, e.g.\n\n```sh\nterraform import ionoscloud_gpu_server.myserver datacenter uuid/server uuid\n```\n\n",
            "properties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n"
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "bootVolume": {
                    "type": "string",
                    "description": "The associated boot volume.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "firewallruleId": {
                    "type": "string",
                    "description": "The associated firewall rule.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server.\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "inlineVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list that contains the IDs for the volumes defined inside the gpu server resource."
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/GPUServerNic:GPUServerNic",
                    "description": "See the Nic section.\n"
                },
                "primaryIp": {
                    "type": "string",
                    "description": "The associated IP address.\n"
                },
                "primaryNic": {
                    "type": "string",
                    "description": "The associated NIC.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template used for creating a GPU server.\n"
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the GPU server. E.g: `RUNNING` or `SUSPENDED`.\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/GPUServerVolume:GPUServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "required": [
                "availabilityZone",
                "bootImage",
                "bootVolume",
                "datacenterId",
                "firewallruleId",
                "hostname",
                "imageName",
                "imagePassword",
                "inlineVolumeIds",
                "name",
                "primaryIp",
                "primaryNic",
                "sshKeyPaths",
                "templateUuid",
                "vmState",
                "volume"
            ],
            "inputProperties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server.\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/GPUServerNic:GPUServerNic",
                    "description": "See the Nic section.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template used for creating a GPU server.\n",
                    "willReplaceOnChanges": true
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the GPU server. E.g: `RUNNING` or `SUSPENDED`.\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/GPUServerVolume:GPUServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "templateUuid",
                "volume"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GPUServer resources.\n",
                "properties": {
                    "allowReplace": {
                        "type": "boolean",
                        "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n"
                    },
                    "availabilityZone": {
                        "type": "string",
                        "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "bootImage": {
                        "type": "string",
                        "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                    },
                    "bootVolume": {
                        "type": "string",
                        "description": "The associated boot volume.\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "firewallruleId": {
                        "type": "string",
                        "description": "The associated firewall rule.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server.\n"
                    },
                    "imageName": {
                        "type": "string",
                        "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "imagePassword": {
                        "type": "string",
                        "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                        "secret": true
                    },
                    "inlineVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list that contains the IDs for the volumes defined inside the gpu server resource."
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the server.\n"
                    },
                    "nic": {
                        "$ref": "#/types/ionoscloud:compute/GPUServerNic:GPUServerNic",
                        "description": "See the Nic section.\n"
                    },
                    "primaryIp": {
                        "type": "string",
                        "description": "The associated IP address.\n"
                    },
                    "primaryNic": {
                        "type": "string",
                        "description": "The associated NIC.\n"
                    },
                    "securityGroupsIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of Security Group IDs for the resource.\n"
                    },
                    "sshKeyPaths": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "[string] The UUID of the template used for creating a GPU server.\n",
                        "willReplaceOnChanges": true
                    },
                    "vmState": {
                        "type": "string",
                        "description": "[string] Sets the power state of the GPU server. E.g: `RUNNING` or `SUSPENDED`.\n"
                    },
                    "volume": {
                        "$ref": "#/types/ionoscloud:compute/GPUServerVolume:GPUServerVolume",
                        "description": "See the Volume section.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "ionoscloud:index/gpuServer:GpuServer"
                }
            ]
        },
        "ionoscloud:compute/group:Group": {
            "description": "Manages **Groups** and **Group Privileges** on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst user1Password = new random.index.Password(\"user1_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst example1 = new ionoscloud.compute.User(\"example1\", {\n    firstName: \"user1\",\n    lastName: \"user1\",\n    email: \"unique_email.com\",\n    password: user1Password.result,\n    administrator: false,\n    forceSecAuth: false,\n});\nconst user2Password = new random.index.Password(\"user2_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst example2 = new ionoscloud.compute.User(\"example2\", {\n    firstName: \"user2\",\n    lastName: \"user2\",\n    email: \"unique_email.com\",\n    password: user2Password.result,\n    administrator: false,\n    forceSecAuth: false,\n});\nconst example = new ionoscloud.compute.Group(\"example\", {\n    name: \"Group Example\",\n    createDatacenter: true,\n    createSnapshot: true,\n    reserveIp: true,\n    accessActivityLog: true,\n    createPcc: true,\n    s3Privilege: true,\n    createBackupUnit: true,\n    createInternetAccess: true,\n    createK8sCluster: true,\n    createFlowLog: true,\n    accessAndManageMonitoring: true,\n    accessAndManageCertificates: true,\n    accessAndManageLogging: true,\n    accessAndManageCdn: true,\n    accessAndManageVpn: true,\n    accessAndManageApiGateway: true,\n    accessAndManageKaas: true,\n    accessAndManageNetworkFileStorage: true,\n    accessAndManageAiModelHub: true,\n    accessAndManageIamResources: true,\n    createNetworkSecurityGroups: true,\n    manageDbaas: true,\n    userIds: [\n        example1.id,\n        example2.id,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nuser1_password = random.Password(\"user1_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nexample1 = ionoscloud.compute.User(\"example1\",\n    first_name=\"user1\",\n    last_name=\"user1\",\n    email=\"unique_email.com\",\n    password=user1_password[\"result\"],\n    administrator=False,\n    force_sec_auth=False)\nuser2_password = random.Password(\"user2_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nexample2 = ionoscloud.compute.User(\"example2\",\n    first_name=\"user2\",\n    last_name=\"user2\",\n    email=\"unique_email.com\",\n    password=user2_password[\"result\"],\n    administrator=False,\n    force_sec_auth=False)\nexample = ionoscloud.compute.Group(\"example\",\n    name=\"Group Example\",\n    create_datacenter=True,\n    create_snapshot=True,\n    reserve_ip=True,\n    access_activity_log=True,\n    create_pcc=True,\n    s3_privilege=True,\n    create_backup_unit=True,\n    create_internet_access=True,\n    create_k8s_cluster=True,\n    create_flow_log=True,\n    access_and_manage_monitoring=True,\n    access_and_manage_certificates=True,\n    access_and_manage_logging=True,\n    access_and_manage_cdn=True,\n    access_and_manage_vpn=True,\n    access_and_manage_api_gateway=True,\n    access_and_manage_kaas=True,\n    access_and_manage_network_file_storage=True,\n    access_and_manage_ai_model_hub=True,\n    access_and_manage_iam_resources=True,\n    create_network_security_groups=True,\n    manage_dbaas=True,\n    user_ids=[\n        example1.id,\n        example2.id,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var user1Password = new Random.Index.Password(\"user1_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var example1 = new Ionoscloud.Compute.User(\"example1\", new()\n    {\n        FirstName = \"user1\",\n        LastName = \"user1\",\n        Email = \"unique_email.com\",\n        Password = user1Password.Result,\n        Administrator = false,\n        ForceSecAuth = false,\n    });\n\n    var user2Password = new Random.Index.Password(\"user2_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var example2 = new Ionoscloud.Compute.User(\"example2\", new()\n    {\n        FirstName = \"user2\",\n        LastName = \"user2\",\n        Email = \"unique_email.com\",\n        Password = user2Password.Result,\n        Administrator = false,\n        ForceSecAuth = false,\n    });\n\n    var example = new Ionoscloud.Compute.Group(\"example\", new()\n    {\n        Name = \"Group Example\",\n        CreateDatacenter = true,\n        CreateSnapshot = true,\n        ReserveIp = true,\n        AccessActivityLog = true,\n        CreatePcc = true,\n        S3Privilege = true,\n        CreateBackupUnit = true,\n        CreateInternetAccess = true,\n        CreateK8sCluster = true,\n        CreateFlowLog = true,\n        AccessAndManageMonitoring = true,\n        AccessAndManageCertificates = true,\n        AccessAndManageLogging = true,\n        AccessAndManageCdn = true,\n        AccessAndManageVpn = true,\n        AccessAndManageApiGateway = true,\n        AccessAndManageKaas = true,\n        AccessAndManageNetworkFileStorage = true,\n        AccessAndManageAiModelHub = true,\n        AccessAndManageIamResources = true,\n        CreateNetworkSecurityGroups = true,\n        ManageDbaas = true,\n        UserIds = new[]\n        {\n            example1.Id,\n            example2.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuser1Password, err := random.NewPassword(ctx, \"user1_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample1, err := compute.NewUser(ctx, \"example1\", \u0026compute.UserArgs{\n\t\t\tFirstName:     pulumi.String(\"user1\"),\n\t\t\tLastName:      pulumi.String(\"user1\"),\n\t\t\tEmail:         pulumi.String(\"unique_email.com\"),\n\t\t\tPassword:      user1Password.Result,\n\t\t\tAdministrator: pulumi.Bool(false),\n\t\t\tForceSecAuth:  pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser2Password, err := random.NewPassword(ctx, \"user2_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample2, err := compute.NewUser(ctx, \"example2\", \u0026compute.UserArgs{\n\t\t\tFirstName:     pulumi.String(\"user2\"),\n\t\t\tLastName:      pulumi.String(\"user2\"),\n\t\t\tEmail:         pulumi.String(\"unique_email.com\"),\n\t\t\tPassword:      user2Password.Result,\n\t\t\tAdministrator: pulumi.Bool(false),\n\t\t\tForceSecAuth:  pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGroup(ctx, \"example\", \u0026compute.GroupArgs{\n\t\t\tName:                              pulumi.String(\"Group Example\"),\n\t\t\tCreateDatacenter:                  pulumi.Bool(true),\n\t\t\tCreateSnapshot:                    pulumi.Bool(true),\n\t\t\tReserveIp:                         pulumi.Bool(true),\n\t\t\tAccessActivityLog:                 pulumi.Bool(true),\n\t\t\tCreatePcc:                         pulumi.Bool(true),\n\t\t\tS3Privilege:                       pulumi.Bool(true),\n\t\t\tCreateBackupUnit:                  pulumi.Bool(true),\n\t\t\tCreateInternetAccess:              pulumi.Bool(true),\n\t\t\tCreateK8sCluster:                  pulumi.Bool(true),\n\t\t\tCreateFlowLog:                     pulumi.Bool(true),\n\t\t\tAccessAndManageMonitoring:         pulumi.Bool(true),\n\t\t\tAccessAndManageCertificates:       pulumi.Bool(true),\n\t\t\tAccessAndManageLogging:            pulumi.Bool(true),\n\t\t\tAccessAndManageCdn:                pulumi.Bool(true),\n\t\t\tAccessAndManageVpn:                pulumi.Bool(true),\n\t\t\tAccessAndManageApiGateway:         pulumi.Bool(true),\n\t\t\tAccessAndManageKaas:               pulumi.Bool(true),\n\t\t\tAccessAndManageNetworkFileStorage: pulumi.Bool(true),\n\t\t\tAccessAndManageAiModelHub:         pulumi.Bool(true),\n\t\t\tAccessAndManageIamResources:       pulumi.Bool(true),\n\t\t\tCreateNetworkSecurityGroups:       pulumi.Bool(true),\n\t\t\tManageDbaas:                       pulumi.Bool(true),\n\t\t\tUserIds: pulumi.StringArray{\n\t\t\t\texample1.ID(),\n\t\t\t\texample2.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.User;\nimport com.ionoscloud.pulumi.ionoscloud.compute.UserArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Group;\nimport com.ionoscloud.pulumi.ionoscloud.compute.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var user1Password = new Password(\"user1Password\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var example1 = new User(\"example1\", UserArgs.builder()\n            .firstName(\"user1\")\n            .lastName(\"user1\")\n            .email(\"unique_email.com\")\n            .password(user1Password.result())\n            .administrator(false)\n            .forceSecAuth(false)\n            .build());\n\n        var user2Password = new Password(\"user2Password\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var example2 = new User(\"example2\", UserArgs.builder()\n            .firstName(\"user2\")\n            .lastName(\"user2\")\n            .email(\"unique_email.com\")\n            .password(user2Password.result())\n            .administrator(false)\n            .forceSecAuth(false)\n            .build());\n\n        var example = new Group(\"example\", GroupArgs.builder()\n            .name(\"Group Example\")\n            .createDatacenter(true)\n            .createSnapshot(true)\n            .reserveIp(true)\n            .accessActivityLog(true)\n            .createPcc(true)\n            .s3Privilege(true)\n            .createBackupUnit(true)\n            .createInternetAccess(true)\n            .createK8sCluster(true)\n            .createFlowLog(true)\n            .accessAndManageMonitoring(true)\n            .accessAndManageCertificates(true)\n            .accessAndManageLogging(true)\n            .accessAndManageCdn(true)\n            .accessAndManageVpn(true)\n            .accessAndManageApiGateway(true)\n            .accessAndManageKaas(true)\n            .accessAndManageNetworkFileStorage(true)\n            .accessAndManageAiModelHub(true)\n            .accessAndManageIamResources(true)\n            .createNetworkSecurityGroups(true)\n            .manageDbaas(true)\n            .userIds(            \n                example1.id(),\n                example2.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example1:\n    type: ionoscloud:compute:User\n    properties:\n      firstName: user1\n      lastName: user1\n      email: unique_email.com\n      password: ${user1Password.result}\n      administrator: false\n      forceSecAuth: false\n  example2:\n    type: ionoscloud:compute:User\n    properties:\n      firstName: user2\n      lastName: user2\n      email: unique_email.com\n      password: ${user2Password.result}\n      administrator: false\n      forceSecAuth: false\n  example:\n    type: ionoscloud:compute:Group\n    properties:\n      name: Group Example\n      createDatacenter: true\n      createSnapshot: true\n      reserveIp: true\n      accessActivityLog: true\n      createPcc: true\n      s3Privilege: true\n      createBackupUnit: true\n      createInternetAccess: true\n      createK8sCluster: true\n      createFlowLog: true\n      accessAndManageMonitoring: true\n      accessAndManageCertificates: true\n      accessAndManageLogging: true\n      accessAndManageCdn: true\n      accessAndManageVpn: true\n      accessAndManageApiGateway: true\n      accessAndManageKaas: true\n      accessAndManageNetworkFileStorage: true\n      accessAndManageAiModelHub: true\n      accessAndManageIamResources: true\n      createNetworkSecurityGroups: true\n      manageDbaas: true\n      userIds:\n        - ${example1.id}\n        - ${example2.id}\n  user1Password:\n    type: random:password\n    name: user1_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n  user2Password:\n    type: random:password\n    name: user2_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Group can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_group.mygroup group uuid\n```\n\n\u003e :warning: **If you are upgrading to v6.2.0**: You have to modify you plan for\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003eto match the new structure, by renaming the field old field, **user_id**, to\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003eand put the old value into an array. This is not backwards compatible.\n\n",
            "properties": {
                "accessActivityLog": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to access the activity log.\n"
                },
                "accessAndManageAiModelHub": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage ai model hub.\n"
                },
                "accessAndManageApiGateway": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage api gateway.\n"
                },
                "accessAndManageCdn": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage cdn.\n"
                },
                "accessAndManageCertificates": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage certificates.\n"
                },
                "accessAndManageDns": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage dns records.\n"
                },
                "accessAndManageIamResources": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage iam resources.\n"
                },
                "accessAndManageKaas": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage kaas.\n"
                },
                "accessAndManageLogging": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage logging.\n"
                },
                "accessAndManageMonitoring": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage monitoring.\n"
                },
                "accessAndManageNetworkFileStorage": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage network file storage.\n"
                },
                "accessAndManageVpn": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage vpn.\n"
                },
                "createBackupUnit": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create backup unit privilege.\n"
                },
                "createDatacenter": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create virtual data centers.\n"
                },
                "createFlowLog": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to create flow log.\n"
                },
                "createInternetAccess": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create internet access privilege.\n"
                },
                "createK8sCluster": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to create kubernetes cluster privilege.\n"
                },
                "createNetworkSecurityGroups": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to create network security groups.\n"
                },
                "createPcc": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create Cross Connects privilege.\n"
                },
                "createSnapshot": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create snapshots.\n"
                },
                "getUsersData": {
                    "type": "boolean",
                    "description": "[Boolean] When set to true, information about users will be stored in state under \u003cspan pulumi-lang-nodejs=\"`users`\" pulumi-lang-dotnet=\"`Users`\" pulumi-lang-go=\"`users`\" pulumi-lang-python=\"`users`\" pulumi-lang-yaml=\"`users`\" pulumi-lang-java=\"`users`\"\u003e`users`\u003c/span\u003e attribute, default value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "manageDataplatform": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage the Data Platform.\n"
                },
                "manageDbaas": {
                    "type": "boolean",
                    "description": "[Boolean]  Privilege for a group to manage DBaaS related functionality.\n"
                },
                "manageRegistry": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access container registry related functionality.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] A name for the group.\n"
                },
                "reserveIp": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to reserve IP addresses.\n"
                },
                "s3Privilege": {
                    "type": "boolean",
                    "description": "[Boolean] The group will have S3 privilege.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "[string] The ID of the specific user to add to the group. Please use\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003eargument since this is **DEPRECATED**\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003efor adding users to the group, since\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e userId \u003c/span\u003ewill be removed in the future"
                },
                "userIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] A list of users to add to the group.\n"
                },
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/GroupUser:GroupUser"
                    },
                    "description": "List of users - See the User section\n\n**NOTE:** user_id/user_ids field cannot be used at the same time with\u003cspan pulumi-lang-nodejs=\" groupIds \" pulumi-lang-dotnet=\" GroupIds \" pulumi-lang-go=\" groupIds \" pulumi-lang-python=\" group_ids \" pulumi-lang-yaml=\" groupIds \" pulumi-lang-java=\" groupIds \"\u003e groupIds \u003c/span\u003efield in user resource. Trying to add the same user to the same group in both ways in the same plan will result in a cyclic dependency error.\n"
                }
            },
            "required": [
                "name",
                "users"
            ],
            "inputProperties": {
                "accessActivityLog": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to access the activity log.\n"
                },
                "accessAndManageAiModelHub": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage ai model hub.\n"
                },
                "accessAndManageApiGateway": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage api gateway.\n"
                },
                "accessAndManageCdn": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage cdn.\n"
                },
                "accessAndManageCertificates": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage certificates.\n"
                },
                "accessAndManageDns": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage dns records.\n"
                },
                "accessAndManageIamResources": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage iam resources.\n"
                },
                "accessAndManageKaas": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage kaas.\n"
                },
                "accessAndManageLogging": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage logging.\n"
                },
                "accessAndManageMonitoring": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage monitoring.\n"
                },
                "accessAndManageNetworkFileStorage": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage network file storage.\n"
                },
                "accessAndManageVpn": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage vpn.\n"
                },
                "createBackupUnit": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create backup unit privilege.\n"
                },
                "createDatacenter": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create virtual data centers.\n"
                },
                "createFlowLog": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to create flow log.\n"
                },
                "createInternetAccess": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create internet access privilege.\n"
                },
                "createK8sCluster": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to create kubernetes cluster privilege.\n"
                },
                "createNetworkSecurityGroups": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to create network security groups.\n"
                },
                "createPcc": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create Cross Connects privilege.\n"
                },
                "createSnapshot": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to create snapshots.\n"
                },
                "getUsersData": {
                    "type": "boolean",
                    "description": "[Boolean] When set to true, information about users will be stored in state under \u003cspan pulumi-lang-nodejs=\"`users`\" pulumi-lang-dotnet=\"`Users`\" pulumi-lang-go=\"`users`\" pulumi-lang-python=\"`users`\" pulumi-lang-yaml=\"`users`\" pulumi-lang-java=\"`users`\"\u003e`users`\u003c/span\u003e attribute, default value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "manageDataplatform": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access and manage the Data Platform.\n"
                },
                "manageDbaas": {
                    "type": "boolean",
                    "description": "[Boolean]  Privilege for a group to manage DBaaS related functionality.\n"
                },
                "manageRegistry": {
                    "type": "boolean",
                    "description": "[Boolean]  The group will be allowed to access container registry related functionality.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] A name for the group.\n"
                },
                "reserveIp": {
                    "type": "boolean",
                    "description": "[Boolean] The group will be allowed to reserve IP addresses.\n"
                },
                "s3Privilege": {
                    "type": "boolean",
                    "description": "[Boolean] The group will have S3 privilege.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "[string] The ID of the specific user to add to the group. Please use\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003eargument since this is **DEPRECATED**\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003efor adding users to the group, since\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e userId \u003c/span\u003ewill be removed in the future"
                },
                "userIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] A list of users to add to the group.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Group resources.\n",
                "properties": {
                    "accessActivityLog": {
                        "type": "boolean",
                        "description": "[Boolean] The group will be allowed to access the activity log.\n"
                    },
                    "accessAndManageAiModelHub": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage ai model hub.\n"
                    },
                    "accessAndManageApiGateway": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage api gateway.\n"
                    },
                    "accessAndManageCdn": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage cdn.\n"
                    },
                    "accessAndManageCertificates": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage certificates.\n"
                    },
                    "accessAndManageDns": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage dns records.\n"
                    },
                    "accessAndManageIamResources": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage iam resources.\n"
                    },
                    "accessAndManageKaas": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage kaas.\n"
                    },
                    "accessAndManageLogging": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage logging.\n"
                    },
                    "accessAndManageMonitoring": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage monitoring.\n"
                    },
                    "accessAndManageNetworkFileStorage": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage network file storage.\n"
                    },
                    "accessAndManageVpn": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage vpn.\n"
                    },
                    "createBackupUnit": {
                        "type": "boolean",
                        "description": "[Boolean] The group will be allowed to create backup unit privilege.\n"
                    },
                    "createDatacenter": {
                        "type": "boolean",
                        "description": "[Boolean] The group will be allowed to create virtual data centers.\n"
                    },
                    "createFlowLog": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to create flow log.\n"
                    },
                    "createInternetAccess": {
                        "type": "boolean",
                        "description": "[Boolean] The group will be allowed to create internet access privilege.\n"
                    },
                    "createK8sCluster": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to create kubernetes cluster privilege.\n"
                    },
                    "createNetworkSecurityGroups": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to create network security groups.\n"
                    },
                    "createPcc": {
                        "type": "boolean",
                        "description": "[Boolean] The group will be allowed to create Cross Connects privilege.\n"
                    },
                    "createSnapshot": {
                        "type": "boolean",
                        "description": "[Boolean] The group will be allowed to create snapshots.\n"
                    },
                    "getUsersData": {
                        "type": "boolean",
                        "description": "[Boolean] When set to true, information about users will be stored in state under \u003cspan pulumi-lang-nodejs=\"`users`\" pulumi-lang-dotnet=\"`Users`\" pulumi-lang-go=\"`users`\" pulumi-lang-python=\"`users`\" pulumi-lang-yaml=\"`users`\" pulumi-lang-java=\"`users`\"\u003e`users`\u003c/span\u003e attribute, default value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                    },
                    "manageDataplatform": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access and manage the Data Platform.\n"
                    },
                    "manageDbaas": {
                        "type": "boolean",
                        "description": "[Boolean]  Privilege for a group to manage DBaaS related functionality.\n"
                    },
                    "manageRegistry": {
                        "type": "boolean",
                        "description": "[Boolean]  The group will be allowed to access container registry related functionality.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] A name for the group.\n"
                    },
                    "reserveIp": {
                        "type": "boolean",
                        "description": "[Boolean] The group will be allowed to reserve IP addresses.\n"
                    },
                    "s3Privilege": {
                        "type": "boolean",
                        "description": "[Boolean] The group will have S3 privilege.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "[string] The ID of the specific user to add to the group. Please use\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003eargument since this is **DEPRECATED**\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003efor adding users to the group, since\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e userId \u003c/span\u003ewill be removed in the future"
                    },
                    "userIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] A list of users to add to the group.\n"
                    },
                    "users": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/GroupUser:GroupUser"
                        },
                        "description": "List of users - See the User section\n\n**NOTE:** user_id/user_ids field cannot be used at the same time with\u003cspan pulumi-lang-nodejs=\" groupIds \" pulumi-lang-dotnet=\" GroupIds \" pulumi-lang-go=\" groupIds \" pulumi-lang-python=\" group_ids \" pulumi-lang-yaml=\" groupIds \" pulumi-lang-java=\" groupIds \"\u003e groupIds \u003c/span\u003efield in user resource. Trying to add the same user to the same group in both ways in the same plan will result in a cyclic dependency error.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/iPBlock:IPBlock": {
            "description": "Manages **IP Blocks** on IonosCloud. IP Blocks contain reserved public IP addresses that can be assigned servers or other resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.IPBlock(\"example\", {\n    location: \"us/las\",\n    size: 1,\n    name: \"IP Block Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.IPBlock(\"example\",\n    location=\"us/las\",\n    size=1,\n    name=\"IP Block Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = \"us/las\",\n        Size = 1,\n        Name = \"IP Block Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"us/las\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new IPBlock(\"example\", IPBlockArgs.builder()\n            .location(\"us/las\")\n            .size(1)\n            .name(\"IP Block Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:IPBlock\n    properties:\n      location: us/las\n      size: 1\n      name: IP Block Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Ipblock can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_ipblock.myipblock ipblock uuid\n```\n\n",
            "properties": {
                "ipConsumers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/IPBlockIpConsumer:IPBlockIpConsumer"
                    },
                    "description": "Read-Only attribute. Lists consumption detail of an individual ip\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[integer] The list of IP addresses associated with this block.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The regional location for this IP Block: us/las, us/ewr, de/fra, de/fkb.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of Ip Block\n"
                },
                "size": {
                    "type": "integer",
                    "description": "[integer] The number of IP addresses to reserve for this block.\n"
                }
            },
            "required": [
                "ipConsumers",
                "ips",
                "location",
                "name",
                "size"
            ],
            "inputProperties": {
                "ipConsumers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/IPBlockIpConsumer:IPBlockIpConsumer"
                    },
                    "description": "Read-Only attribute. Lists consumption detail of an individual ip\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The regional location for this IP Block: us/las, us/ewr, de/fra, de/fkb.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of Ip Block\n"
                },
                "size": {
                    "type": "integer",
                    "description": "[integer] The number of IP addresses to reserve for this block.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "location",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IPBlock resources.\n",
                "properties": {
                    "ipConsumers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/IPBlockIpConsumer:IPBlockIpConsumer"
                        },
                        "description": "Read-Only attribute. Lists consumption detail of an individual ip\n"
                    },
                    "ips": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[integer] The list of IP addresses associated with this block.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The regional location for this IP Block: us/las, us/ewr, de/fra, de/fkb.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of Ip Block\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "[integer] The number of IP addresses to reserve for this block.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/iPFailover:IPFailover": {
            "description": "Manages **IP Failover** groups on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: \"us/las\",\n    size: 1,\n    name: \"IP Block Example\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: example.id,\n    cores: 1,\n    ram: 1024,\n    imageName: \"Ubuntu-20.04\",\n    imagePassword: serverImagePassword.result,\n    volume: {\n        name: \"system\",\n        size: 14,\n        diskType: \"SSD\",\n    },\n    nic: {\n        lan: 1,\n        dhcp: true,\n        firewallActive: true,\n        ips: [exampleIPBlock.ips[0]],\n    },\n});\nconst exampleIPFailover = new ionoscloud.compute.IPFailover(\"example\", {\n    datacenterId: example.id,\n    lanId: exampleLan.id,\n    ip: exampleIPBlock.ips[0],\n    nicuuid: exampleServer.primaryNic,\n}, {\n    dependsOn: [exampleLan],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=\"us/las\",\n    size=1,\n    name=\"IP Block Example\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example.id,\n    cores=1,\n    ram=1024,\n    image_name=\"Ubuntu-20.04\",\n    image_password=server_image_password[\"result\"],\n    volume={\n        \"name\": \"system\",\n        \"size\": 14,\n        \"disk_type\": \"SSD\",\n    },\n    nic={\n        \"lan\": 1,\n        \"dhcp\": True,\n        \"firewall_active\": True,\n        \"ips\": [example_ip_block.ips[0]],\n    })\nexample_ip_failover = ionoscloud.compute.IPFailover(\"example\",\n    datacenter_id=example.id,\n    lan_id=example_lan.id,\n    ip=example_ip_block.ips[0],\n    nicuuid=example_server.primary_nic,\n    opts = pulumi.ResourceOptions(depends_on=[example_lan]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = \"us/las\",\n        Size = 1,\n        Name = \"IP Block Example\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = example.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = \"Ubuntu-20.04\",\n        ImagePassword = serverImagePassword.Result,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 14,\n            DiskType = \"SSD\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = 1,\n            Dhcp = true,\n            FirewallActive = true,\n            Ips = new[]\n            {\n                exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n            },\n        },\n    });\n\n    var exampleIPFailover = new Ionoscloud.Compute.IPFailover(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        LanId = exampleLan.Id,\n        Ip = exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n        Nicuuid = exampleServer.PrimaryNic,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            exampleLan,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"us/las\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(\"Ubuntu-20.04\"),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:     pulumi.String(\"system\"),\n\t\t\t\tSize:     pulumi.Int(14),\n\t\t\t\tDiskType: pulumi.String(\"SSD\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Int(1),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewIPFailover(ctx, \"example\", \u0026compute.IPFailoverArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tLanId:        exampleLan.ID(),\n\t\t\tIp: exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tNicuuid: exampleServer.PrimaryNic,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleLan,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPFailover;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPFailoverArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(\"us/las\")\n            .size(1)\n            .name(\"IP Block Example\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(example.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(\"Ubuntu-20.04\")\n            .imagePassword(serverImagePassword.result())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(14)\n                .diskType(\"SSD\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(1)\n                .dhcp(true)\n                .firewallActive(true)\n                .ips(exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]))\n                .build())\n            .build());\n\n        var exampleIPFailover = new IPFailover(\"exampleIPFailover\", IPFailoverArgs.builder()\n            .datacenterId(example.id())\n            .lanId(exampleLan.id())\n            .ip(exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]))\n            .nicuuid(exampleServer.primaryNic())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(exampleLan)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: us/las\n      size: 1\n      name: IP Block Example\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${example.id}\n      cores: 1\n      ram: 1024\n      imageName: Ubuntu-20.04\n      imagePassword: ${serverImagePassword.result}\n      volume:\n        name: system\n        size: 14\n        diskType: SSD\n      nic:\n        lan: '1'\n        dhcp: true\n        firewallActive: true\n        ips:\n          - ${exampleIPBlock.ips[0]}\n  exampleIPFailover:\n    type: ionoscloud:compute:IPFailover\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      lanId: ${exampleLan.id}\n      ip: ${exampleIPBlock.ips[0]}\n      nicuuid: ${exampleServer.primaryNic}\n    options:\n      dependsOn:\n        - ${exampleLan}\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## A note on multiple NICs on an IP Failover\n\nIf you want to add a secondary NIC to an IP Failover, follow these steps:\n1) Creating NIC A with failover IP on LAN 1\n2) Create NIC B unde the same LAN but with a different IP\n3) Create the IP Failover on LAN 1 with NIC A and failover IP of NIC A (A becomes now \"master\", no slaves)\n4) Update NIC B IP to be the failover IP ( B becomes now a slave, A remains master)\n\nAfter this you can create a new NIC C, NIC D and so on, in LAN 1, directly with the failover IP.\n\nPlease check examples for a full example with the above steps.\n\n## Import\n\nResource IpFailover can be imported using the `datacenter id`, `lan id` and `ip address`, e.g.\n\n```sh\n$ pulumi import ionoscloud:compute/iPFailover:IPFailover myipfailover datacenter_uuid/lan_uuid/ip_address\n```\n\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "[string] The reserved IP address to be used in the IP failover group.\n"
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The ID of a LAN.\n"
                },
                "location": {
                    "type": "string"
                },
                "nicuuid": {
                    "type": "string",
                    "description": "[string] The ID of a NIC.\n\n\u003e **⚠ WARNING:** Do not modify the IP for an IP failover group (that was provisioned via Terraform)\n\u003e using the DCD, the API or other means because it may lead to unexpected behavior. If you provisioned\n\u003e an IP failover group using Terraform, please use only Terraform in order to manage the created\n\u003e IP failover group.\n\n\u003e **⚠ WARNING:** For creating multiple IP failover groups at the same time, you can use one of the\n\u003e following options:\n1. Create multiple IP failover groups resources and use \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e meta-argument to specify the order\nof creation, for example:\n```example\nresource \"ionoscloud_ipfailover\" \"firstexample\" {\ndatacenter_id         = \"datacenter ID\"\nlan_id                = \"LAN ID\"\nip                    = \"IP address\"\nnicuuid               = \"NIC UUID\"\n}\n\nresource \"ionoscloud_ipfailover\" \"secondexample\" {\ndepends_on = [ ionoscloud_ipfailover.firstexample ]\ndatacenter_id         = \"datacenter ID\"\nlan_id                = \"LAN ID\"\nip                    = \"IP address\"\nnicuuid               = \"NIC UUID\"\n}\n```\n2. Define the resources as presented above, but without using the \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e meta-argument and run the apply command using\n`-parallelism=1` as presented below:\n```shell\npulumi up -parallelism=1\n```\n"
                }
            },
            "required": [
                "datacenterId",
                "ip",
                "lanId",
                "nicuuid"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "ip": {
                    "type": "string",
                    "description": "[string] The reserved IP address to be used in the IP failover group.\n",
                    "willReplaceOnChanges": true
                },
                "lanId": {
                    "type": "string",
                    "description": "[string] The ID of a LAN.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "nicuuid": {
                    "type": "string",
                    "description": "[string] The ID of a NIC.\n\n\u003e **⚠ WARNING:** Do not modify the IP for an IP failover group (that was provisioned via Terraform)\n\u003e using the DCD, the API or other means because it may lead to unexpected behavior. If you provisioned\n\u003e an IP failover group using Terraform, please use only Terraform in order to manage the created\n\u003e IP failover group.\n\n\u003e **⚠ WARNING:** For creating multiple IP failover groups at the same time, you can use one of the\n\u003e following options:\n1. Create multiple IP failover groups resources and use \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e meta-argument to specify the order\nof creation, for example:\n```example\nresource \"ionoscloud_ipfailover\" \"firstexample\" {\ndatacenter_id         = \"datacenter ID\"\nlan_id                = \"LAN ID\"\nip                    = \"IP address\"\nnicuuid               = \"NIC UUID\"\n}\n\nresource \"ionoscloud_ipfailover\" \"secondexample\" {\ndepends_on = [ ionoscloud_ipfailover.firstexample ]\ndatacenter_id         = \"datacenter ID\"\nlan_id                = \"LAN ID\"\nip                    = \"IP address\"\nnicuuid               = \"NIC UUID\"\n}\n```\n2. Define the resources as presented above, but without using the \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e meta-argument and run the apply command using\n`-parallelism=1` as presented below:\n```shell\npulumi up -parallelism=1\n```\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "ip",
                "lanId",
                "nicuuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IPFailover resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "ip": {
                        "type": "string",
                        "description": "[string] The reserved IP address to be used in the IP failover group.\n",
                        "willReplaceOnChanges": true
                    },
                    "lanId": {
                        "type": "string",
                        "description": "[string] The ID of a LAN.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "willReplaceOnChanges": true
                    },
                    "nicuuid": {
                        "type": "string",
                        "description": "[string] The ID of a NIC.\n\n\u003e **⚠ WARNING:** Do not modify the IP for an IP failover group (that was provisioned via Terraform)\n\u003e using the DCD, the API or other means because it may lead to unexpected behavior. If you provisioned\n\u003e an IP failover group using Terraform, please use only Terraform in order to manage the created\n\u003e IP failover group.\n\n\u003e **⚠ WARNING:** For creating multiple IP failover groups at the same time, you can use one of the\n\u003e following options:\n1. Create multiple IP failover groups resources and use \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e meta-argument to specify the order\nof creation, for example:\n```example\nresource \"ionoscloud_ipfailover\" \"firstexample\" {\ndatacenter_id         = \"datacenter ID\"\nlan_id                = \"LAN ID\"\nip                    = \"IP address\"\nnicuuid               = \"NIC UUID\"\n}\n\nresource \"ionoscloud_ipfailover\" \"secondexample\" {\ndepends_on = [ ionoscloud_ipfailover.firstexample ]\ndatacenter_id         = \"datacenter ID\"\nlan_id                = \"LAN ID\"\nip                    = \"IP address\"\nnicuuid               = \"NIC UUID\"\n}\n```\n2. Define the resources as presented above, but without using the \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e meta-argument and run the apply command using\n`-parallelism=1` as presented below:\n```shell\npulumi up -parallelism=1\n```\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/lan:Lan": {
            "description": "Manages a **LAN** on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleCrossconnect = new ionoscloud.compute.Crossconnect(\"example\", {\n    name: \"Cross Connect Example\",\n    description: \"Cross Connect Description\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example\",\n    pcc: exampleCrossconnect.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_crossconnect = ionoscloud.compute.Crossconnect(\"example\",\n    name=\"Cross Connect Example\",\n    description=\"Cross Connect Description\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example\",\n    pcc=example_crossconnect.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleCrossconnect = new Ionoscloud.Compute.Crossconnect(\"example\", new()\n    {\n        Name = \"Cross Connect Example\",\n        Description = \"Cross Connect Description\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example\",\n        Pcc = exampleCrossconnect.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleCrossconnect, err := compute.NewCrossconnect(ctx, \"example\", \u0026compute.CrossconnectArgs{\n\t\t\tName:        pulumi.String(\"Cross Connect Example\"),\n\t\t\tDescription: pulumi.String(\"Cross Connect Description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t\tPcc:          exampleCrossconnect.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Crossconnect;\nimport com.ionoscloud.pulumi.ionoscloud.compute.CrossconnectArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleCrossconnect = new Crossconnect(\"exampleCrossconnect\", CrossconnectArgs.builder()\n            .name(\"Cross Connect Example\")\n            .description(\"Cross Connect Description\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"Lan Example\")\n            .pcc(exampleCrossconnect.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleCrossconnect:\n    type: ionoscloud:compute:Crossconnect\n    name: example\n    properties:\n      name: Cross Connect Example\n      description: Cross Connect Description\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: Lan Example\n      pcc: ${exampleCrossconnect.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With IPv6 Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"de/txl\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan IPv6 Example\",\n    ipv6CidrBlock: \"AUTO\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"de/txl\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan IPv6 Example\",\n    ipv6_cidr_block=\"AUTO\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"de/txl\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan IPv6 Example\",\n        Ipv6CidrBlock = \"AUTO\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"de/txl\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tPublic:        pulumi.Bool(true),\n\t\t\tName:          pulumi.String(\"Lan IPv6 Example\"),\n\t\t\tIpv6CidrBlock: pulumi.String(\"AUTO\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"de/txl\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan IPv6 Example\")\n            .ipv6CidrBlock(\"AUTO\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: de/txl\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan IPv6 Example\n      ipv6CidrBlock: AUTO\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\n- Please note that only LANs datacenters found in the same physical location can be connected through a Cross-connect\n- A LAN cannot be a part of two Cross-connects\n\n## Import\n\nResource Lan can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_lan.mylandatacenter uuid/lan id\n```\n\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "ipFailovers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/LanIpFailover:LanIpFailover"
                    },
                    "description": "IP failover configurations for lan\n"
                },
                "ipv4CidrBlock": {
                    "type": "string",
                    "description": "[String] For public LANs this property is null, for private LANs it contains the private IPv4 CIDR range. This property is a read only property.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "Contains the LAN's /64 IPv6 CIDR block if this LAN is IPv6 enabled. 'AUTO' will result in enabling this LAN for IPv6 and automatically assign a /64 IPv6 CIDR block to this LAN. If you specify your own IPv6 CIDR block then you must provide a unique /64 block, which is inside the IPv6 CIDR block of the virtual datacenter and unique inside all LANs from this virtual datacenter.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the LAN.\n"
                },
                "pcc": {
                    "type": "string",
                    "description": "[String] The unique id of a \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-go=\"`compute.Crossconnect`\" pulumi-lang-python=\"`compute.Crossconnect`\" pulumi-lang-yaml=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-java=\"`ionoscloud.compute.Crossconnect`\"\u003e`ionoscloud.compute.Crossconnect`\u003c/span\u003e resource, in order. It needs to be ensured that IP addresses of the NICs of all LANs connected to a given Cross Connect is not duplicated and belongs to the same subnet range\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the LAN faces the public Internet (true) or not (false).\n"
                }
            },
            "required": [
                "datacenterId",
                "ipFailovers",
                "ipv4CidrBlock",
                "ipv6CidrBlock",
                "name"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "ipFailovers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/LanIpFailover:LanIpFailover"
                    },
                    "description": "IP failover configurations for lan\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "Contains the LAN's /64 IPv6 CIDR block if this LAN is IPv6 enabled. 'AUTO' will result in enabling this LAN for IPv6 and automatically assign a /64 IPv6 CIDR block to this LAN. If you specify your own IPv6 CIDR block then you must provide a unique /64 block, which is inside the IPv6 CIDR block of the virtual datacenter and unique inside all LANs from this virtual datacenter.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the LAN.\n"
                },
                "pcc": {
                    "type": "string",
                    "description": "[String] The unique id of a \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-go=\"`compute.Crossconnect`\" pulumi-lang-python=\"`compute.Crossconnect`\" pulumi-lang-yaml=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-java=\"`ionoscloud.compute.Crossconnect`\"\u003e`ionoscloud.compute.Crossconnect`\u003c/span\u003e resource, in order. It needs to be ensured that IP addresses of the NICs of all LANs connected to a given Cross Connect is not duplicated and belongs to the same subnet range\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the LAN faces the public Internet (true) or not (false).\n"
                }
            },
            "requiredInputs": [
                "datacenterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Lan resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "ipFailovers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/LanIpFailover:LanIpFailover"
                        },
                        "description": "IP failover configurations for lan\n"
                    },
                    "ipv4CidrBlock": {
                        "type": "string",
                        "description": "[String] For public LANs this property is null, for private LANs it contains the private IPv4 CIDR range. This property is a read only property.\n"
                    },
                    "ipv6CidrBlock": {
                        "type": "string",
                        "description": "Contains the LAN's /64 IPv6 CIDR block if this LAN is IPv6 enabled. 'AUTO' will result in enabling this LAN for IPv6 and automatically assign a /64 IPv6 CIDR block to this LAN. If you specify your own IPv6 CIDR block then you must provide a unique /64 block, which is inside the IPv6 CIDR block of the virtual datacenter and unique inside all LANs from this virtual datacenter.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the LAN.\n"
                    },
                    "pcc": {
                        "type": "string",
                        "description": "[String] The unique id of a \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-go=\"`compute.Crossconnect`\" pulumi-lang-python=\"`compute.Crossconnect`\" pulumi-lang-yaml=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-java=\"`ionoscloud.compute.Crossconnect`\"\u003e`ionoscloud.compute.Crossconnect`\u003c/span\u003e resource, in order. It needs to be ensured that IP addresses of the NICs of all LANs connected to a given Cross Connect is not duplicated and belongs to the same subnet range\n"
                    },
                    "public": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if the LAN faces the public Internet (true) or not (false).\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/natGateway:NatGateway": {
            "description": "Manages a [Nat Gateway](https://docs.ionos.com/cloud/network-services/nat-gateway/overview) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: \"us/las\",\n    size: 2,\n    name: \"IP Block Example\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example\",\n});\nconst exampleNatGateway = new ionoscloud.compute.NatGateway(\"example\", {\n    datacenterId: example.id,\n    name: \"example\",\n    publicIps: [\n        exampleIPBlock.ips[0],\n        exampleIPBlock.ips[1],\n    ],\n    lans: [{\n        id: exampleLan.id,\n        gatewayIps: [\"10.11.2.5\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=\"us/las\",\n    size=2,\n    name=\"IP Block Example\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example\")\nexample_nat_gateway = ionoscloud.compute.NatGateway(\"example\",\n    datacenter_id=example.id,\n    name=\"example\",\n    public_ips=[\n        example_ip_block.ips[0],\n        example_ip_block.ips[1],\n    ],\n    lans=[{\n        \"id\": example_lan.id,\n        \"gateway_ips\": [\"10.11.2.5\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = \"us/las\",\n        Size = 2,\n        Name = \"IP Block Example\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example\",\n    });\n\n    var exampleNatGateway = new Ionoscloud.Compute.NatGateway(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Name = \"example\",\n        PublicIps = new[]\n        {\n            exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n            exampleIPBlock.Ips.Apply(ips =\u003e ips[1]),\n        },\n        Lans = new[]\n        {\n            new Ionoscloud.Compute.Inputs.NatGatewayLanArgs\n            {\n                Id = exampleLan.Id,\n                GatewayIps = new[]\n                {\n                    \"10.11.2.5\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"us/las\"),\n\t\t\tSize:     pulumi.Int(2),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNatGateway(ctx, \"example\", \u0026compute.NatGatewayArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t\tPublicIps: pulumi.StringArray{\n\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\treturn ips[0], nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\treturn ips[1], nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tLans: compute.NatGatewayLanArray{\n\t\t\t\t\u0026compute.NatGatewayLanArgs{\n\t\t\t\t\tId: exampleLan.ID(),\n\t\t\t\t\tGatewayIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.11.2.5\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NatGateway;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NatGatewayArgs;\nimport com.pulumi.ionoscloud.compute.inputs.NatGatewayLanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(\"us/las\")\n            .size(2)\n            .name(\"IP Block Example\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"Lan Example\")\n            .build());\n\n        var exampleNatGateway = new NatGateway(\"exampleNatGateway\", NatGatewayArgs.builder()\n            .datacenterId(example.id())\n            .name(\"example\")\n            .publicIps(            \n                exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]),\n                exampleIPBlock.ips().applyValue(_ips -\u003e _ips[1]))\n            .lans(NatGatewayLanArgs.builder()\n                .id(exampleLan.id())\n                .gatewayIps(\"10.11.2.5\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: us/las\n      size: 2\n      name: IP Block Example\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: Lan Example\n  exampleNatGateway:\n    type: ionoscloud:compute:NatGateway\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      name: example\n      publicIps:\n        - ${exampleIPBlock.ips[0]}\n        - ${exampleIPBlock.ips[1]}\n      lans:\n        - id: ${exampleLan.id}\n          gatewayIps:\n            - 10.11.2.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Nat Gateway resource can be imported using its `resource id` and the `datacenter id`, e.g.\n\n```sh\nterraform import ionoscloud_natgateway.my_natgateway datacenter uuid/nat gateway uuid\n```\n\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n"
                },
                "lans": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/NatGatewayLan:NatGatewayLan"
                    },
                    "description": "[list] A list of Local Area Networks the node pool should be part of.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the NAT gateway.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list]Collection of public IP addresses of the NAT gateway. Should be customer reserved IP addresses in that location.\n"
                }
            },
            "required": [
                "datacenterId",
                "lans",
                "name",
                "publicIps"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n",
                    "willReplaceOnChanges": true
                },
                "lans": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/NatGatewayLan:NatGatewayLan"
                    },
                    "description": "[list] A list of Local Area Networks the node pool should be part of.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the NAT gateway.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list]Collection of public IP addresses of the NAT gateway. Should be customer reserved IP addresses in that location.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "lans",
                "publicIps"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering NatGateway resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] A Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "lans": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/NatGatewayLan:NatGatewayLan"
                        },
                        "description": "[list] A list of Local Area Networks the node pool should be part of.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] Name of the NAT gateway.\n"
                    },
                    "publicIps": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list]Collection of public IP addresses of the NAT gateway. Should be customer reserved IP addresses in that location.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/natGatewayRule:NatGatewayRule": {
            "description": "Manages a **Nat Gateway Rule** on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: \"us/las\",\n    size: 2,\n    name: \"IP Block Example\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example\",\n});\nconst exampleNatGateway = new ionoscloud.compute.NatGateway(\"example\", {\n    datacenterId: example.id,\n    name: \"example\",\n    publicIps: [\n        exampleIPBlock.ips[0],\n        exampleIPBlock.ips[1],\n    ],\n    lans: [{\n        id: exampleLan.id,\n        gatewayIps: [\"10.11.2.5\"],\n    }],\n});\nconst exampleNatGatewayRule = new ionoscloud.compute.NatGatewayRule(\"example\", {\n    datacenterId: example.id,\n    natgatewayId: exampleNatGateway.id,\n    name: \"example\",\n    type: \"SNAT\",\n    protocol: \"TCP\",\n    sourceSubnet: \"10.0.1.0/24\",\n    publicIp: exampleIPBlock.ips[0],\n    targetSubnet: \"10.0.1.0/24\",\n    targetPortRange: {\n        start: 500,\n        end: 1000,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=\"us/las\",\n    size=2,\n    name=\"IP Block Example\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example\")\nexample_nat_gateway = ionoscloud.compute.NatGateway(\"example\",\n    datacenter_id=example.id,\n    name=\"example\",\n    public_ips=[\n        example_ip_block.ips[0],\n        example_ip_block.ips[1],\n    ],\n    lans=[{\n        \"id\": example_lan.id,\n        \"gateway_ips\": [\"10.11.2.5\"],\n    }])\nexample_nat_gateway_rule = ionoscloud.compute.NatGatewayRule(\"example\",\n    datacenter_id=example.id,\n    natgateway_id=example_nat_gateway.id,\n    name=\"example\",\n    type=\"SNAT\",\n    protocol=\"TCP\",\n    source_subnet=\"10.0.1.0/24\",\n    public_ip=example_ip_block.ips[0],\n    target_subnet=\"10.0.1.0/24\",\n    target_port_range={\n        \"start\": 500,\n        \"end\": 1000,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = \"us/las\",\n        Size = 2,\n        Name = \"IP Block Example\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example\",\n    });\n\n    var exampleNatGateway = new Ionoscloud.Compute.NatGateway(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Name = \"example\",\n        PublicIps = new[]\n        {\n            exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n            exampleIPBlock.Ips.Apply(ips =\u003e ips[1]),\n        },\n        Lans = new[]\n        {\n            new Ionoscloud.Compute.Inputs.NatGatewayLanArgs\n            {\n                Id = exampleLan.Id,\n                GatewayIps = new[]\n                {\n                    \"10.11.2.5\",\n                },\n            },\n        },\n    });\n\n    var exampleNatGatewayRule = new Ionoscloud.Compute.NatGatewayRule(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        NatgatewayId = exampleNatGateway.Id,\n        Name = \"example\",\n        Type = \"SNAT\",\n        Protocol = \"TCP\",\n        SourceSubnet = \"10.0.1.0/24\",\n        PublicIp = exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n        TargetSubnet = \"10.0.1.0/24\",\n        TargetPortRange = new Ionoscloud.Compute.Inputs.NatGatewayRuleTargetPortRangeArgs\n        {\n            Start = 500,\n            End = 1000,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"us/las\"),\n\t\t\tSize:     pulumi.Int(2),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNatGateway, err := compute.NewNatGateway(ctx, \"example\", \u0026compute.NatGatewayArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t\tPublicIps: pulumi.StringArray{\n\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\treturn ips[0], nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\treturn ips[1], nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tLans: compute.NatGatewayLanArray{\n\t\t\t\t\u0026compute.NatGatewayLanArgs{\n\t\t\t\t\tId: exampleLan.ID(),\n\t\t\t\t\tGatewayIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.11.2.5\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNatGatewayRule(ctx, \"example\", \u0026compute.NatGatewayRuleArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tNatgatewayId: exampleNatGateway.ID(),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t\tType:         pulumi.String(\"SNAT\"),\n\t\t\tProtocol:     pulumi.String(\"TCP\"),\n\t\t\tSourceSubnet: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tPublicIp: exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTargetSubnet: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tTargetPortRange: \u0026compute.NatGatewayRuleTargetPortRangeArgs{\n\t\t\t\tStart: pulumi.Int(500),\n\t\t\t\tEnd:   pulumi.Int(1000),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NatGateway;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NatGatewayArgs;\nimport com.pulumi.ionoscloud.compute.inputs.NatGatewayLanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NatGatewayRule;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NatGatewayRuleArgs;\nimport com.pulumi.ionoscloud.compute.inputs.NatGatewayRuleTargetPortRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(\"us/las\")\n            .size(2)\n            .name(\"IP Block Example\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"Lan Example\")\n            .build());\n\n        var exampleNatGateway = new NatGateway(\"exampleNatGateway\", NatGatewayArgs.builder()\n            .datacenterId(example.id())\n            .name(\"example\")\n            .publicIps(            \n                exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]),\n                exampleIPBlock.ips().applyValue(_ips -\u003e _ips[1]))\n            .lans(NatGatewayLanArgs.builder()\n                .id(exampleLan.id())\n                .gatewayIps(\"10.11.2.5\")\n                .build())\n            .build());\n\n        var exampleNatGatewayRule = new NatGatewayRule(\"exampleNatGatewayRule\", NatGatewayRuleArgs.builder()\n            .datacenterId(example.id())\n            .natgatewayId(exampleNatGateway.id())\n            .name(\"example\")\n            .type(\"SNAT\")\n            .protocol(\"TCP\")\n            .sourceSubnet(\"10.0.1.0/24\")\n            .publicIp(exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]))\n            .targetSubnet(\"10.0.1.0/24\")\n            .targetPortRange(NatGatewayRuleTargetPortRangeArgs.builder()\n                .start(500)\n                .end(1000)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: us/las\n      size: 2\n      name: IP Block Example\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: Lan Example\n  exampleNatGateway:\n    type: ionoscloud:compute:NatGateway\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      name: example\n      publicIps:\n        - ${exampleIPBlock.ips[0]}\n        - ${exampleIPBlock.ips[1]}\n      lans:\n        - id: ${exampleLan.id}\n          gatewayIps:\n            - 10.11.2.5\n  exampleNatGatewayRule:\n    type: ionoscloud:compute:NatGatewayRule\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      natgatewayId: ${exampleNatGateway.id}\n      name: example\n      type: SNAT\n      protocol: TCP\n      sourceSubnet: 10.0.1.0/24\n      publicIp: ${exampleIPBlock.ips[0]}\n      targetSubnet: 10.0.1.0/24\n      targetPortRange:\n        start: 500\n        end: 1000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Nat Gateway Rule resource can be imported using its `resource id`, the `datacenter id` and the `natgateway id , e.g.\n\n```sh\nterraform import ionoscloud_natgateway_rule.my_natgateway_rule datacenter uuid/nat gateway uuid/nat gateway rule uuid\n```\n\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n"
                },
                "location": {
                    "type": "string"
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the NAT gateway rule.\n"
                },
                "natgatewayId": {
                    "type": "string",
                    "description": "[string] Nat Gateway's UUID.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Protocol of the NAT gateway rule. Defaults to ALL. If protocol is 'ICMP' then targetPortRange start and end cannot be set.\n"
                },
                "publicIp": {
                    "type": "string",
                    "description": "[string] Public IP address of the NAT gateway rule. Specifies the address used for masking outgoing packets source address field. Should be one of the customer reserved IP address already configured on the NAT gateway resource.\n"
                },
                "sourceSubnet": {
                    "type": "string",
                    "description": "[string] Source subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets source IP address.\n"
                },
                "targetPortRange": {
                    "$ref": "#/types/ionoscloud:compute/NatGatewayRuleTargetPortRange:NatGatewayRuleTargetPortRange",
                    "description": "Target port range of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on destination port. If none is provided, rule will match any port.\n"
                },
                "targetSubnet": {
                    "type": "string",
                    "description": "[string] Target or destination subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets destination IP address. If none is provided, rule will match any address.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] Type of the NAT gateway rule.\n"
                }
            },
            "required": [
                "datacenterId",
                "name",
                "natgatewayId",
                "protocol",
                "publicIp",
                "sourceSubnet",
                "targetPortRange",
                "targetSubnet",
                "type"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the NAT gateway rule.\n"
                },
                "natgatewayId": {
                    "type": "string",
                    "description": "[string] Nat Gateway's UUID.\n",
                    "willReplaceOnChanges": true
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Protocol of the NAT gateway rule. Defaults to ALL. If protocol is 'ICMP' then targetPortRange start and end cannot be set.\n"
                },
                "publicIp": {
                    "type": "string",
                    "description": "[string] Public IP address of the NAT gateway rule. Specifies the address used for masking outgoing packets source address field. Should be one of the customer reserved IP address already configured on the NAT gateway resource.\n"
                },
                "sourceSubnet": {
                    "type": "string",
                    "description": "[string] Source subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets source IP address.\n"
                },
                "targetPortRange": {
                    "$ref": "#/types/ionoscloud:compute/NatGatewayRuleTargetPortRange:NatGatewayRuleTargetPortRange",
                    "description": "Target port range of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on destination port. If none is provided, rule will match any port.\n"
                },
                "targetSubnet": {
                    "type": "string",
                    "description": "[string] Target or destination subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets destination IP address. If none is provided, rule will match any address.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] Type of the NAT gateway rule.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "natgatewayId",
                "publicIp",
                "sourceSubnet"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering NatGatewayRule resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] A Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] Name of the NAT gateway rule.\n"
                    },
                    "natgatewayId": {
                        "type": "string",
                        "description": "[string] Nat Gateway's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "protocol": {
                        "type": "string",
                        "description": "[string] Protocol of the NAT gateway rule. Defaults to ALL. If protocol is 'ICMP' then targetPortRange start and end cannot be set.\n"
                    },
                    "publicIp": {
                        "type": "string",
                        "description": "[string] Public IP address of the NAT gateway rule. Specifies the address used for masking outgoing packets source address field. Should be one of the customer reserved IP address already configured on the NAT gateway resource.\n"
                    },
                    "sourceSubnet": {
                        "type": "string",
                        "description": "[string] Source subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets source IP address.\n"
                    },
                    "targetPortRange": {
                        "$ref": "#/types/ionoscloud:compute/NatGatewayRuleTargetPortRange:NatGatewayRuleTargetPortRange",
                        "description": "Target port range of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on destination port. If none is provided, rule will match any port.\n"
                    },
                    "targetSubnet": {
                        "type": "string",
                        "description": "[string] Target or destination subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets destination IP address. If none is provided, rule will match any address.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "[string] Type of the NAT gateway rule.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/nic:Nic": {
            "description": "Manages a [NIC](https://docs.ionos.com/cloud/set-up-ionos-cloud/get-started/configure-data-center#connect-to-the-internet) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: example.location,\n    size: 2,\n    name: \"IP Block Example\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: example.id,\n    cores: 1,\n    ram: 1024,\n    imageName: \"Ubuntu-20.04\",\n    imagePassword: serverImagePassword.result,\n    volume: {\n        name: \"system\",\n        size: 14,\n        diskType: \"SSD\",\n    },\n    nic: {\n        lan: 1,\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst exampleNic = new ionoscloud.compute.Nic(\"example\", {\n    datacenterId: example.id,\n    serverId: exampleServer.id,\n    lan: exampleLan.id,\n    name: \"NIC\",\n    dhcp: true,\n    firewallActive: true,\n    firewallType: \"INGRESS\",\n    ips: [\n        exampleIPBlock.ips[0],\n        exampleIPBlock.ips[1],\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=example.location,\n    size=2,\n    name=\"IP Block Example\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example.id,\n    cores=1,\n    ram=1024,\n    image_name=\"Ubuntu-20.04\",\n    image_password=server_image_password[\"result\"],\n    volume={\n        \"name\": \"system\",\n        \"size\": 14,\n        \"disk_type\": \"SSD\",\n    },\n    nic={\n        \"lan\": 1,\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample_nic = ionoscloud.compute.Nic(\"example\",\n    datacenter_id=example.id,\n    server_id=example_server.id,\n    lan=example_lan.id,\n    name=\"NIC\",\n    dhcp=True,\n    firewall_active=True,\n    firewall_type=\"INGRESS\",\n    ips=[\n        example_ip_block.ips[0],\n        example_ip_block.ips[1],\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = example.Location,\n        Size = 2,\n        Name = \"IP Block Example\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = example.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = \"Ubuntu-20.04\",\n        ImagePassword = serverImagePassword.Result,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 14,\n            DiskType = \"SSD\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = 1,\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var exampleNic = new Ionoscloud.Compute.Nic(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        ServerId = exampleServer.Id,\n        Lan = exampleLan.Id,\n        Name = \"NIC\",\n        Dhcp = true,\n        FirewallActive = true,\n        FirewallType = \"INGRESS\",\n        Ips = new[]\n        {\n            exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n            exampleIPBlock.Ips.Apply(ips =\u003e ips[1]),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: example.Location,\n\t\t\tSize:     pulumi.Int(2),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(\"Ubuntu-20.04\"),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:     pulumi.String(\"system\"),\n\t\t\t\tSize:     pulumi.Int(14),\n\t\t\t\tDiskType: pulumi.String(\"SSD\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Int(1),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNic(ctx, \"example\", \u0026compute.NicArgs{\n\t\t\tDatacenterId:   example.ID(),\n\t\t\tServerId:       exampleServer.ID(),\n\t\t\tLan:            exampleLan.ID(),\n\t\t\tName:           pulumi.String(\"NIC\"),\n\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\tFirewallType:   pulumi.String(\"INGRESS\"),\n\t\t\tIps: pulumi.StringArray{\n\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\treturn ips[0], nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\treturn ips[1], nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Nic;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(example.location())\n            .size(2)\n            .name(\"IP Block Example\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(example.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(\"Ubuntu-20.04\")\n            .imagePassword(serverImagePassword.result())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(14)\n                .diskType(\"SSD\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(1)\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        var exampleNic = new Nic(\"exampleNic\", NicArgs.builder()\n            .datacenterId(example.id())\n            .serverId(exampleServer.id())\n            .lan(exampleLan.id())\n            .name(\"NIC\")\n            .dhcp(true)\n            .firewallActive(true)\n            .firewallType(\"INGRESS\")\n            .ips(            \n                exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]),\n                exampleIPBlock.ips().applyValue(_ips -\u003e _ips[1]))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: ${example.location}\n      size: 2\n      name: IP Block Example\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${example.id}\n      cores: 1\n      ram: 1024\n      imageName: Ubuntu-20.04\n      imagePassword: ${serverImagePassword.result}\n      volume:\n        name: system\n        size: 14\n        diskType: SSD\n      nic:\n        lan: '1'\n        dhcp: true\n        firewallActive: true\n  exampleNic:\n    type: ionoscloud:compute:Nic\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      serverId: ${exampleServer.id}\n      lan: ${exampleLan.id}\n      name: NIC\n      dhcp: true\n      firewallActive: true\n      firewallType: INGRESS\n      ips:\n        - ${exampleIPBlock.ips[0]}\n        - ${exampleIPBlock.ips[1]}\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With IPv6\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"IPv6 Enabled LAN\",\n    ipv6CidrBlock: std.cidrsubnet({\n        input: example.ipv6CidrBlock,\n        newbits: 8,\n        netnum: 2,\n    }).result,\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: example.id,\n    cores: 1,\n    ram: 1024,\n    imageName: \"Ubuntu-20.04\",\n    imagePassword: serverImagePassword.result,\n    volume: {\n        name: \"system\",\n        size: 14,\n        diskType: \"SSD\",\n    },\n    nic: {\n        lan: 1,\n        dhcp: true,\n        firewallActive: true,\n    },\n});\nconst exampleNic = new ionoscloud.compute.Nic(\"example\", {\n    datacenterId: example.id,\n    serverId: exampleServer.id,\n    lan: exampleLan.id,\n    name: \"IPv6 Enabled NIC\",\n    dhcp: true,\n    firewallActive: true,\n    firewallType: \"INGRESS\",\n    dhcpv6: false,\n    ipv6CidrBlock: std.cidrsubnet({\n        input: exampleLan.ipv6CidrBlock,\n        newbits: 16,\n        netnum: 14,\n    }).result,\n    ipv6Ips: [\n        std.cidrhost({\n            input: std.cidrsubnet({\n                input: exampleLan.ipv6CidrBlock,\n                newbits: 16,\n                netnum: 14,\n            }).result,\n            host: 10,\n        }).result,\n        std.cidrhost({\n            input: std.cidrsubnet({\n                input: exampleLan.ipv6CidrBlock,\n                newbits: 16,\n                netnum: 14,\n            }).result,\n            host: 20,\n        }).result,\n        std.cidrhost({\n            input: std.cidrsubnet({\n                input: exampleLan.ipv6CidrBlock,\n                newbits: 16,\n                netnum: 14,\n            }).result,\n            host: 30,\n        }).result,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\nimport pulumi_std as std\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"IPv6 Enabled LAN\",\n    ipv6_cidr_block=std.cidrsubnet(input=example.ipv6_cidr_block,\n        newbits=8,\n        netnum=2)[\"result\"])\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example.id,\n    cores=1,\n    ram=1024,\n    image_name=\"Ubuntu-20.04\",\n    image_password=server_image_password[\"result\"],\n    volume={\n        \"name\": \"system\",\n        \"size\": 14,\n        \"disk_type\": \"SSD\",\n    },\n    nic={\n        \"lan\": 1,\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\nexample_nic = ionoscloud.compute.Nic(\"example\",\n    datacenter_id=example.id,\n    server_id=example_server.id,\n    lan=example_lan.id,\n    name=\"IPv6 Enabled NIC\",\n    dhcp=True,\n    firewall_active=True,\n    firewall_type=\"INGRESS\",\n    dhcpv6=False,\n    ipv6_cidr_block=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n        newbits=16,\n        netnum=14)[\"result\"],\n    ipv6_ips=[\n        std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                newbits=16,\n                netnum=14)[\"result\"],\n            host=10)[\"result\"],\n        std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                newbits=16,\n                netnum=14)[\"result\"],\n            host=20)[\"result\"],\n        std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                newbits=16,\n                netnum=14)[\"result\"],\n            host=30)[\"result\"],\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"IPv6 Enabled LAN\",\n        Ipv6CidrBlock = Std.Index.Cidrsubnet.Invoke(new()\n        {\n            Input = example.Ipv6CidrBlock,\n            Newbits = 8,\n            Netnum = 2,\n        }).Result,\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = example.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = \"Ubuntu-20.04\",\n        ImagePassword = serverImagePassword.Result,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 14,\n            DiskType = \"SSD\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = 1,\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n    var exampleNic = new Ionoscloud.Compute.Nic(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        ServerId = exampleServer.Id,\n        Lan = exampleLan.Id,\n        Name = \"IPv6 Enabled NIC\",\n        Dhcp = true,\n        FirewallActive = true,\n        FirewallType = \"INGRESS\",\n        Dhcpv6 = false,\n        Ipv6CidrBlock = Std.Index.Cidrsubnet.Invoke(new()\n        {\n            Input = exampleLan.Ipv6CidrBlock,\n            Newbits = 16,\n            Netnum = 14,\n        }).Result,\n        Ipv6Ips = new[]\n        {\n            Std.Index.Cidrhost.Invoke(new()\n            {\n                Input = Std.Index.Cidrsubnet.Invoke(new()\n                {\n                    Input = exampleLan.Ipv6CidrBlock,\n                    Newbits = 16,\n                    Netnum = 14,\n                }).Result,\n                Host = 10,\n            }).Result,\n            Std.Index.Cidrhost.Invoke(new()\n            {\n                Input = Std.Index.Cidrsubnet.Invoke(new()\n                {\n                    Input = exampleLan.Ipv6CidrBlock,\n                    Newbits = 16,\n                    Netnum = 14,\n                }).Result,\n                Host = 20,\n            }).Result,\n            Std.Index.Cidrhost.Invoke(new()\n            {\n                Input = Std.Index.Cidrsubnet.Invoke(new()\n                {\n                    Input = exampleLan.Ipv6CidrBlock,\n                    Newbits = 16,\n                    Netnum = 14,\n                }).Result,\n                Host = 30,\n            }).Result,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrsubnet, err := std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\"input\":   example.Ipv6CidrBlock,\n\t\t\t\"newbits\": 8,\n\t\t\t\"netnum\":  2,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tPublic:        pulumi.Bool(true),\n\t\t\tName:          pulumi.String(\"IPv6 Enabled LAN\"),\n\t\t\tIpv6CidrBlock: invokeCidrsubnet.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(\"Ubuntu-20.04\"),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:     pulumi.String(\"system\"),\n\t\t\t\tSize:     pulumi.Int(14),\n\t\t\t\tDiskType: pulumi.String(\"SSD\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Int(1),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrsubnet1, err := std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\"newbits\": 16,\n\t\t\t\"netnum\":  14,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost2, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  14,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 10,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost3, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  14,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 20,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost4, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  14,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 30,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNic(ctx, \"example\", \u0026compute.NicArgs{\n\t\t\tDatacenterId:   example.ID(),\n\t\t\tServerId:       exampleServer.ID(),\n\t\t\tLan:            exampleLan.ID(),\n\t\t\tName:           pulumi.String(\"IPv6 Enabled NIC\"),\n\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\tFirewallType:   pulumi.String(\"INGRESS\"),\n\t\t\tDhcpv6:         pulumi.Bool(false),\n\t\t\tIpv6CidrBlock:  invokeCidrsubnet1.Result,\n\t\t\tIpv6Ips: pulumi.StringArray{\n\t\t\t\tinvokeCidrhost2.Result,\n\t\t\t\tinvokeCidrhost3.Result,\n\t\t\t\tinvokeCidrhost4.Result,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Nic;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"IPv6 Enabled LAN\")\n            .ipv6CidrBlock(StdFunctions.cidrsubnet(Map.ofEntries(\n                Map.entry(\"input\", example.ipv6CidrBlock()),\n                Map.entry(\"newbits\", 8),\n                Map.entry(\"netnum\", 2)\n            )).result())\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(example.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(\"Ubuntu-20.04\")\n            .imagePassword(serverImagePassword.result())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(14)\n                .diskType(\"SSD\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(1)\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n        var exampleNic = new Nic(\"exampleNic\", NicArgs.builder()\n            .datacenterId(example.id())\n            .serverId(exampleServer.id())\n            .lan(exampleLan.id())\n            .name(\"IPv6 Enabled NIC\")\n            .dhcp(true)\n            .firewallActive(true)\n            .firewallType(\"INGRESS\")\n            .dhcpv6(false)\n            .ipv6CidrBlock(StdFunctions.cidrsubnet(Map.ofEntries(\n                Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                Map.entry(\"newbits\", 16),\n                Map.entry(\"netnum\", 14)\n            )).result())\n            .ipv6Ips(            \n                StdFunctions.cidrhost(Map.ofEntries(\n                    Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                        Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                        Map.entry(\"newbits\", 16),\n                        Map.entry(\"netnum\", 14)\n                    )).result()),\n                    Map.entry(\"host\", 10)\n                )).result(),\n                StdFunctions.cidrhost(Map.ofEntries(\n                    Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                        Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                        Map.entry(\"newbits\", 16),\n                        Map.entry(\"netnum\", 14)\n                    )).result()),\n                    Map.entry(\"host\", 20)\n                )).result(),\n                StdFunctions.cidrhost(Map.ofEntries(\n                    Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                        Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                        Map.entry(\"newbits\", 16),\n                        Map.entry(\"netnum\", 14)\n                    )).result()),\n                    Map.entry(\"host\", 30)\n                )).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: IPv6 Enabled LAN\n      ipv6CidrBlock:\n        fn::invoke:\n          function: std:cidrsubnet\n          arguments:\n            input: ${example.ipv6CidrBlock}\n            newbits: 8\n            netnum: 2\n          return: result\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${example.id}\n      cores: 1\n      ram: 1024\n      imageName: Ubuntu-20.04\n      imagePassword: ${serverImagePassword.result}\n      volume:\n        name: system\n        size: 14\n        diskType: SSD\n      nic:\n        lan: '1'\n        dhcp: true\n        firewallActive: true\n  exampleNic:\n    type: ionoscloud:compute:Nic\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      serverId: ${exampleServer.id}\n      lan: ${exampleLan.id}\n      name: IPv6 Enabled NIC\n      dhcp: true\n      firewallActive: true\n      firewallType: INGRESS\n      dhcpv6: false\n      ipv6CidrBlock:\n        fn::invoke:\n          function: std:cidrsubnet\n          arguments:\n            input: ${exampleLan.ipv6CidrBlock}\n            newbits: 16\n            netnum: 14\n          return: result\n      ipv6Ips:\n        - fn::invoke:\n            function: std:cidrhost\n            arguments:\n              input:\n                fn::invoke:\n                  function: std:cidrsubnet\n                  arguments:\n                    input: ${exampleLan.ipv6CidrBlock}\n                    newbits: 16\n                    netnum: 14\n                  return: result\n              host: 10\n            return: result\n        - fn::invoke:\n            function: std:cidrhost\n            arguments:\n              input:\n                fn::invoke:\n                  function: std:cidrsubnet\n                  arguments:\n                    input: ${exampleLan.ipv6CidrBlock}\n                    newbits: 16\n                    netnum: 14\n                  return: result\n              host: 20\n            return: result\n        - fn::invoke:\n            function: std:cidrhost\n            arguments:\n              input:\n                fn::invoke:\n                  function: std:cidrsubnet\n                  arguments:\n                    input: ${exampleLan.ipv6CidrBlock}\n                    newbits: 16\n                    netnum: 14\n                  return: result\n              host: 30\n            return: result\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Example configuring Flowlog\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new ionoscloud.compute.Nic(\"example\", {\n    datacenterId: exampleIonoscloudDatacenter.id,\n    serverId: exampleIonoscloudServer.id,\n    lan: exampleIonoscloudLan.id,\n    name: \"IPV6 and Flowlog Enabled NIC\",\n    dhcp: true,\n    firewallActive: true,\n    firewallType: \"INGRESS\",\n    dhcpv6: false,\n    ipv6CidrBlock: std.cidrsubnet({\n        input: exampleIonoscloudLan.ipv6CidrBlock,\n        newbits: 16,\n        netnum: 14,\n    }).result,\n    ipv6Ips: [\n        std.cidrhost({\n            input: std.cidrsubnet({\n                input: exampleIonoscloudLan.ipv6CidrBlock,\n                newbits: 16,\n                netnum: 14,\n            }).result,\n            host: 10,\n        }).result,\n        std.cidrhost({\n            input: std.cidrsubnet({\n                input: exampleIonoscloudLan.ipv6CidrBlock,\n                newbits: 16,\n                netnum: 14,\n            }).result,\n            host: 20,\n        }).result,\n        std.cidrhost({\n            input: std.cidrsubnet({\n                input: exampleIonoscloudLan.ipv6CidrBlock,\n                newbits: 16,\n                netnum: 14,\n            }).result,\n            host: 30,\n        }).result,\n    ],\n    flowlog: {\n        action: \"ACCEPTED\",\n        bucket: \"flowlog-bucket\",\n        direction: \"INGRESS\",\n        name: \"flowlog\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_std as std\n\nexample = ionoscloud.compute.Nic(\"example\",\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    server_id=example_ionoscloud_server[\"id\"],\n    lan=example_ionoscloud_lan[\"id\"],\n    name=\"IPV6 and Flowlog Enabled NIC\",\n    dhcp=True,\n    firewall_active=True,\n    firewall_type=\"INGRESS\",\n    dhcpv6=False,\n    ipv6_cidr_block=std.cidrsubnet(input=example_ionoscloud_lan[\"ipv6CidrBlock\"],\n        newbits=16,\n        netnum=14)[\"result\"],\n    ipv6_ips=[\n        std.cidrhost(input=std.cidrsubnet(input=example_ionoscloud_lan[\"ipv6CidrBlock\"],\n                newbits=16,\n                netnum=14)[\"result\"],\n            host=10)[\"result\"],\n        std.cidrhost(input=std.cidrsubnet(input=example_ionoscloud_lan[\"ipv6CidrBlock\"],\n                newbits=16,\n                netnum=14)[\"result\"],\n            host=20)[\"result\"],\n        std.cidrhost(input=std.cidrsubnet(input=example_ionoscloud_lan[\"ipv6CidrBlock\"],\n                newbits=16,\n                netnum=14)[\"result\"],\n            host=30)[\"result\"],\n    ],\n    flowlog={\n        \"action\": \"ACCEPTED\",\n        \"bucket\": \"flowlog-bucket\",\n        \"direction\": \"INGRESS\",\n        \"name\": \"flowlog\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Nic(\"example\", new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ServerId = exampleIonoscloudServer.Id,\n        Lan = exampleIonoscloudLan.Id,\n        Name = \"IPV6 and Flowlog Enabled NIC\",\n        Dhcp = true,\n        FirewallActive = true,\n        FirewallType = \"INGRESS\",\n        Dhcpv6 = false,\n        Ipv6CidrBlock = Std.Index.Cidrsubnet.Invoke(new()\n        {\n            Input = exampleIonoscloudLan.Ipv6CidrBlock,\n            Newbits = 16,\n            Netnum = 14,\n        }).Result,\n        Ipv6Ips = new[]\n        {\n            Std.Index.Cidrhost.Invoke(new()\n            {\n                Input = Std.Index.Cidrsubnet.Invoke(new()\n                {\n                    Input = exampleIonoscloudLan.Ipv6CidrBlock,\n                    Newbits = 16,\n                    Netnum = 14,\n                }).Result,\n                Host = 10,\n            }).Result,\n            Std.Index.Cidrhost.Invoke(new()\n            {\n                Input = Std.Index.Cidrsubnet.Invoke(new()\n                {\n                    Input = exampleIonoscloudLan.Ipv6CidrBlock,\n                    Newbits = 16,\n                    Netnum = 14,\n                }).Result,\n                Host = 20,\n            }).Result,\n            Std.Index.Cidrhost.Invoke(new()\n            {\n                Input = Std.Index.Cidrsubnet.Invoke(new()\n                {\n                    Input = exampleIonoscloudLan.Ipv6CidrBlock,\n                    Newbits = 16,\n                    Netnum = 14,\n                }).Result,\n                Host = 30,\n            }).Result,\n        },\n        Flowlog = new Ionoscloud.Compute.Inputs.NicFlowlogArgs\n        {\n            Action = \"ACCEPTED\",\n            Bucket = \"flowlog-bucket\",\n            Direction = \"INGRESS\",\n            Name = \"flowlog\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeCidrsubnet, err := std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\"input\":   exampleIonoscloudLan.Ipv6CidrBlock,\n\t\t\t\"newbits\": 16,\n\t\t\t\"netnum\":  14,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost1, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleIonoscloudLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  14,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 10,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost2, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleIonoscloudLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  14,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 20,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost3, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleIonoscloudLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  14,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 30,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNic(ctx, \"example\", \u0026compute.NicArgs{\n\t\t\tDatacenterId:   pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tServerId:       pulumi.Any(exampleIonoscloudServer.Id),\n\t\t\tLan:            pulumi.Any(exampleIonoscloudLan.Id),\n\t\t\tName:           pulumi.String(\"IPV6 and Flowlog Enabled NIC\"),\n\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\tFirewallType:   pulumi.String(\"INGRESS\"),\n\t\t\tDhcpv6:         pulumi.Bool(false),\n\t\t\tIpv6CidrBlock:  invokeCidrsubnet.Result,\n\t\t\tIpv6Ips: pulumi.StringArray{\n\t\t\t\tinvokeCidrhost1.Result,\n\t\t\t\tinvokeCidrhost2.Result,\n\t\t\t\tinvokeCidrhost3.Result,\n\t\t\t},\n\t\t\tFlowlog: \u0026compute.NicFlowlogArgs{\n\t\t\t\tAction:    pulumi.String(\"ACCEPTED\"),\n\t\t\t\tBucket:    pulumi.String(\"flowlog-bucket\"),\n\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\tName:      pulumi.String(\"flowlog\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Nic;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NicArgs;\nimport com.pulumi.ionoscloud.compute.inputs.NicFlowlogArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Nic(\"example\", NicArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .serverId(exampleIonoscloudServer.id())\n            .lan(exampleIonoscloudLan.id())\n            .name(\"IPV6 and Flowlog Enabled NIC\")\n            .dhcp(true)\n            .firewallActive(true)\n            .firewallType(\"INGRESS\")\n            .dhcpv6(false)\n            .ipv6CidrBlock(StdFunctions.cidrsubnet(Map.ofEntries(\n                Map.entry(\"input\", exampleIonoscloudLan.ipv6CidrBlock()),\n                Map.entry(\"newbits\", 16),\n                Map.entry(\"netnum\", 14)\n            )).result())\n            .ipv6Ips(            \n                StdFunctions.cidrhost(Map.ofEntries(\n                    Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                        Map.entry(\"input\", exampleIonoscloudLan.ipv6CidrBlock()),\n                        Map.entry(\"newbits\", 16),\n                        Map.entry(\"netnum\", 14)\n                    )).result()),\n                    Map.entry(\"host\", 10)\n                )).result(),\n                StdFunctions.cidrhost(Map.ofEntries(\n                    Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                        Map.entry(\"input\", exampleIonoscloudLan.ipv6CidrBlock()),\n                        Map.entry(\"newbits\", 16),\n                        Map.entry(\"netnum\", 14)\n                    )).result()),\n                    Map.entry(\"host\", 20)\n                )).result(),\n                StdFunctions.cidrhost(Map.ofEntries(\n                    Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                        Map.entry(\"input\", exampleIonoscloudLan.ipv6CidrBlock()),\n                        Map.entry(\"newbits\", 16),\n                        Map.entry(\"netnum\", 14)\n                    )).result()),\n                    Map.entry(\"host\", 30)\n                )).result())\n            .flowlog(NicFlowlogArgs.builder()\n                .action(\"ACCEPTED\")\n                .bucket(\"flowlog-bucket\")\n                .direction(\"INGRESS\")\n                .name(\"flowlog\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Nic\n    properties:\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      serverId: ${exampleIonoscloudServer.id}\n      lan: ${exampleIonoscloudLan.id}\n      name: IPV6 and Flowlog Enabled NIC\n      dhcp: true\n      firewallActive: true\n      firewallType: INGRESS\n      dhcpv6: false\n      ipv6CidrBlock:\n        fn::invoke:\n          function: std:cidrsubnet\n          arguments:\n            input: ${exampleIonoscloudLan.ipv6CidrBlock}\n            newbits: 16\n            netnum: 14\n          return: result\n      ipv6Ips:\n        - fn::invoke:\n            function: std:cidrhost\n            arguments:\n              input:\n                fn::invoke:\n                  function: std:cidrsubnet\n                  arguments:\n                    input: ${exampleIonoscloudLan.ipv6CidrBlock}\n                    newbits: 16\n                    netnum: 14\n                  return: result\n              host: 10\n            return: result\n        - fn::invoke:\n            function: std:cidrhost\n            arguments:\n              input:\n                fn::invoke:\n                  function: std:cidrsubnet\n                  arguments:\n                    input: ${exampleIonoscloudLan.ipv6CidrBlock}\n                    newbits: 16\n                    netnum: 14\n                  return: result\n              host: 20\n            return: result\n        - fn::invoke:\n            function: std:cidrhost\n            arguments:\n              input:\n                fn::invoke:\n                  function: std:cidrsubnet\n                  arguments:\n                    input: ${exampleIonoscloudLan.ipv6CidrBlock}\n                    newbits: 16\n                    netnum: 14\n                  return: result\n              host: 30\n            return: result\n      flowlog:\n        action: ACCEPTED\n        bucket: flowlog-bucket\n        direction: INGRESS\n        name: flowlog\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThis will configure flowlog for accepted ingress traffic and will log it into an existing IONOS Object Storage bucket named `flowlog-bucket`. Any s3 compatible client can be used to create it. Adding a flowlog does not force re-creation of the NIC, but changing any other field than \n\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e will. Deleting a flowlog will also force NIC re-creation.\n\n## Working with load balancers\n\nPlease be aware that when using a NIC in a load balancer, the load balancer will\nchange the NIC's ID behind the scenes, therefore the plan will always report this change\ntrying to revert the state to the one specified by your terraform file.\nIn order to prevent this, use the \"lifecycle meta-argument\" when declaring your NIC,\nin order to ignore changes to the \u003cspan pulumi-lang-nodejs=\"`lan`\" pulumi-lang-dotnet=\"`Lan`\" pulumi-lang-go=\"`lan`\" pulumi-lang-python=\"`lan`\" pulumi-lang-yaml=\"`lan`\" pulumi-lang-java=\"`lan`\"\u003e`lan`\u003c/span\u003e attribute:\n\nHere's an example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Nic(\"example\", {\n    datacenterId: foobar.id,\n    serverId: exampleIonoscloudServer.id,\n    lan: 2,\n    dhcp: true,\n    firewallActive: true,\n    name: \"updated\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Nic(\"example\",\n    datacenter_id=foobar[\"id\"],\n    server_id=example_ionoscloud_server[\"id\"],\n    lan=2,\n    dhcp=True,\n    firewall_active=True,\n    name=\"updated\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Nic(\"example\", new()\n    {\n        DatacenterId = foobar.Id,\n        ServerId = exampleIonoscloudServer.Id,\n        Lan = 2,\n        Dhcp = true,\n        FirewallActive = true,\n        Name = \"updated\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNic(ctx, \"example\", \u0026compute.NicArgs{\n\t\t\tDatacenterId:   pulumi.Any(foobar.Id),\n\t\t\tServerId:       pulumi.Any(exampleIonoscloudServer.Id),\n\t\t\tLan:            pulumi.Int(2),\n\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\tName:           pulumi.String(\"updated\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Nic;\nimport com.ionoscloud.pulumi.ionoscloud.compute.NicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Nic(\"example\", NicArgs.builder()\n            .datacenterId(foobar.id())\n            .serverId(exampleIonoscloudServer.id())\n            .lan(2)\n            .dhcp(true)\n            .firewallActive(true)\n            .name(\"updated\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Nic\n    properties:\n      datacenterId: ${foobar.id}\n      serverId: ${exampleIonoscloudServer.id}\n      lan: '2'\n      dhcp: true\n      firewallActive: true\n      name: updated\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource **Nic** can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_nic.mynic datacenter uuid/server uuid/nic uuid\n```\n\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number (LUN) of the storage volume. Null if this NIC was created from CloudAPI and no DCD changes were done on the Datacenter.\n"
                },
                "dhcp": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the NIC should get an IP address using DHCP (true) or not (false).\n"
                },
                "dhcpv6": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the NIC should get an IPv6 address using DHCP (true) or not (false).\n"
                },
                "firewallActive": {
                    "type": "boolean",
                    "description": "[Boolean] If this resource is set to true and is nested under a server resource firewall, with open SSH port, resource must be nested under the NIC.\n"
                },
                "firewallType": {
                    "type": "string",
                    "description": "[String] The type of firewall rules that will be allowed on the NIC. If it is not specified it will take the default value INGRESS\n"
                },
                "flowlog": {
                    "$ref": "#/types/ionoscloud:compute/NicFlowlog:NicFlowlog",
                    "description": "Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of IP addresses assigned to a NIC. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "Automatically assigned /80 IPv6 CIDR block if the NIC is connected to an IPv6 enabled LAN. You can also specify an /80 IPv6 CIDR block for the NIC on your own, which must be inside the /64 IPv6 CIDR block of the LAN and unique.\n"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of IPv6 addresses assigned to a NIC. Explicitly assigned public IPs need to come from the NIC's Ipv6 CIDR block, Passing value null or empty array will assign an IPv6 address automatically from the NIC's CIDR block.\n"
                },
                "lan": {
                    "type": "integer",
                    "description": "[integer] The LAN ID the NIC will sit on.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "mac": {
                    "type": "string",
                    "description": "The MAC address of the NIC. Can be set on creation only. If not set, one will be assigned automatically by the API. Immutable, update forces re-creation.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the LAN.\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the Nic.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource. \n\n⚠️ **Note:**: Removing the \u003cspan pulumi-lang-nodejs=\"`flowlog`\" pulumi-lang-dotnet=\"`Flowlog`\" pulumi-lang-go=\"`flowlog`\" pulumi-lang-python=\"`flowlog`\" pulumi-lang-yaml=\"`flowlog`\" pulumi-lang-java=\"`flowlog`\"\u003e`flowlog`\u003c/span\u003e forces re-creation of the NIC resource.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The ID of a server.\n"
                }
            },
            "required": [
                "datacenterId",
                "deviceNumber",
                "firewallType",
                "ips",
                "ipv6CidrBlock",
                "ipv6Ips",
                "lan",
                "mac",
                "name",
                "pciSlot",
                "serverId"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "dhcp": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the NIC should get an IP address using DHCP (true) or not (false).\n"
                },
                "dhcpv6": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the NIC should get an IPv6 address using DHCP (true) or not (false).\n"
                },
                "firewallActive": {
                    "type": "boolean",
                    "description": "[Boolean] If this resource is set to true and is nested under a server resource firewall, with open SSH port, resource must be nested under the NIC.\n"
                },
                "firewallType": {
                    "type": "string",
                    "description": "[String] The type of firewall rules that will be allowed on the NIC. If it is not specified it will take the default value INGRESS\n"
                },
                "flowlog": {
                    "$ref": "#/types/ionoscloud:compute/NicFlowlog:NicFlowlog",
                    "description": "Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of IP addresses assigned to a NIC. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "Automatically assigned /80 IPv6 CIDR block if the NIC is connected to an IPv6 enabled LAN. You can also specify an /80 IPv6 CIDR block for the NIC on your own, which must be inside the /64 IPv6 CIDR block of the LAN and unique.\n"
                },
                "ipv6Ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of IPv6 addresses assigned to a NIC. Explicitly assigned public IPs need to come from the NIC's Ipv6 CIDR block, Passing value null or empty array will assign an IPv6 address automatically from the NIC's CIDR block.\n"
                },
                "lan": {
                    "type": "integer",
                    "description": "[integer] The LAN ID the NIC will sit on.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "mac": {
                    "type": "string",
                    "description": "The MAC address of the NIC. Can be set on creation only. If not set, one will be assigned automatically by the API. Immutable, update forces re-creation.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the LAN.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource. \n\n⚠️ **Note:**: Removing the \u003cspan pulumi-lang-nodejs=\"`flowlog`\" pulumi-lang-dotnet=\"`Flowlog`\" pulumi-lang-go=\"`flowlog`\" pulumi-lang-python=\"`flowlog`\" pulumi-lang-yaml=\"`flowlog`\" pulumi-lang-java=\"`flowlog`\"\u003e`flowlog`\u003c/span\u003e forces re-creation of the NIC resource.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The ID of a server.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "datacenterId",
                "lan",
                "serverId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Nic resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "deviceNumber": {
                        "type": "integer",
                        "description": "The Logical Unit Number (LUN) of the storage volume. Null if this NIC was created from CloudAPI and no DCD changes were done on the Datacenter.\n"
                    },
                    "dhcp": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if the NIC should get an IP address using DHCP (true) or not (false).\n"
                    },
                    "dhcpv6": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if the NIC should get an IPv6 address using DHCP (true) or not (false).\n"
                    },
                    "firewallActive": {
                        "type": "boolean",
                        "description": "[Boolean] If this resource is set to true and is nested under a server resource firewall, with open SSH port, resource must be nested under the NIC.\n"
                    },
                    "firewallType": {
                        "type": "string",
                        "description": "[String] The type of firewall rules that will be allowed on the NIC. If it is not specified it will take the default value INGRESS\n"
                    },
                    "flowlog": {
                        "$ref": "#/types/ionoscloud:compute/NicFlowlog:NicFlowlog",
                        "description": "Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                    },
                    "ips": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Collection of IP addresses assigned to a NIC. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n"
                    },
                    "ipv6CidrBlock": {
                        "type": "string",
                        "description": "Automatically assigned /80 IPv6 CIDR block if the NIC is connected to an IPv6 enabled LAN. You can also specify an /80 IPv6 CIDR block for the NIC on your own, which must be inside the /64 IPv6 CIDR block of the LAN and unique.\n"
                    },
                    "ipv6Ips": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Collection of IPv6 addresses assigned to a NIC. Explicitly assigned public IPs need to come from the NIC's Ipv6 CIDR block, Passing value null or empty array will assign an IPv6 address automatically from the NIC's CIDR block.\n"
                    },
                    "lan": {
                        "type": "integer",
                        "description": "[integer] The LAN ID the NIC will sit on.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "mac": {
                        "type": "string",
                        "description": "The MAC address of the NIC. Can be set on creation only. If not set, one will be assigned automatically by the API. Immutable, update forces re-creation.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the LAN.\n"
                    },
                    "pciSlot": {
                        "type": "integer",
                        "description": "The PCI slot number of the Nic.\n"
                    },
                    "securityGroupsIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of Security Group IDs for the resource. \n\n⚠️ **Note:**: Removing the \u003cspan pulumi-lang-nodejs=\"`flowlog`\" pulumi-lang-dotnet=\"`Flowlog`\" pulumi-lang-go=\"`flowlog`\" pulumi-lang-python=\"`flowlog`\" pulumi-lang-yaml=\"`flowlog`\" pulumi-lang-java=\"`flowlog`\"\u003e`flowlog`\u003c/span\u003e forces re-creation of the NIC resource.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "[string] The ID of a server.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/s3Key:S3Key": {
            "description": "Manages an **IONOS Object Storage Key** on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.User(\"example\", {\n    firstName: \"example\",\n    lastName: \"example\",\n    email: \"unique@email.com\",\n    password: \"abc123-321CBA\",\n    administrator: false,\n    forceSecAuth: false,\n    active: true,\n});\nconst exampleS3Key = new ionoscloud.compute.S3Key(\"example\", {\n    userId: example.id,\n    active: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.User(\"example\",\n    first_name=\"example\",\n    last_name=\"example\",\n    email=\"unique@email.com\",\n    password=\"abc123-321CBA\",\n    administrator=False,\n    force_sec_auth=False,\n    active=True)\nexample_s3_key = ionoscloud.compute.S3Key(\"example\",\n    user_id=example.id,\n    active=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.User(\"example\", new()\n    {\n        FirstName = \"example\",\n        LastName = \"example\",\n        Email = \"unique@email.com\",\n        Password = \"abc123-321CBA\",\n        Administrator = false,\n        ForceSecAuth = false,\n        Active = true,\n    });\n\n    var exampleS3Key = new Ionoscloud.Compute.S3Key(\"example\", new()\n    {\n        UserId = example.Id,\n        Active = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewUser(ctx, \"example\", \u0026compute.UserArgs{\n\t\t\tFirstName:     pulumi.String(\"example\"),\n\t\t\tLastName:      pulumi.String(\"example\"),\n\t\t\tEmail:         pulumi.String(\"unique@email.com\"),\n\t\t\tPassword:      pulumi.String(\"abc123-321CBA\"),\n\t\t\tAdministrator: pulumi.Bool(false),\n\t\t\tForceSecAuth:  pulumi.Bool(false),\n\t\t\tActive:        pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewS3Key(ctx, \"example\", \u0026compute.S3KeyArgs{\n\t\t\tUserId: example.ID(),\n\t\t\tActive: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.User;\nimport com.ionoscloud.pulumi.ionoscloud.compute.UserArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.S3Key;\nimport com.ionoscloud.pulumi.ionoscloud.compute.S3KeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new User(\"example\", UserArgs.builder()\n            .firstName(\"example\")\n            .lastName(\"example\")\n            .email(\"unique@email.com\")\n            .password(\"abc123-321CBA\")\n            .administrator(false)\n            .forceSecAuth(false)\n            .active(true)\n            .build());\n\n        var exampleS3Key = new S3Key(\"exampleS3Key\", S3KeyArgs.builder()\n            .userId(example.id())\n            .active(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:User\n    properties:\n      firstName: example\n      lastName: example\n      email: unique@email.com\n      password: abc123-321CBA\n      administrator: false\n      forceSecAuth: false\n      active: true\n  exampleS3Key:\n    type: ionoscloud:compute:S3Key\n    name: example\n    properties:\n      userId: ${example.id}\n      active: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAn IONOS Object Storage Unit resource can be imported using its user id as well as its `resource id`, e.g.\n\n```sh\n$ pulumi import ionoscloud:compute/s3Key:S3Key demo userid/s3Keyid\n```\n\nThis can be helpful when you want to import IONOS Object Storage Keys which you have already created manually or using other means, outside of terraform.\n\n⚠️ **Note:** Due to eventual consistency in the IONOS Cloud API, creating an S3 key immediately after assigning S3 privileges to a user may result in the error: \"The user needs to be part of a group that has ACCESS_S3_OBJECT_STORAGE privilege\".\nTo mitigate this, set the environment variable `IONOS_S3_KEY_CREATION_RETRY=true` to enable automatic retries during S3 key creation. The provider will retry the creation until it succeeds or the configured timeout is reached.\nThis is a temporary workaround until the API consistency issue is resolved.\n\n",
            "properties": {
                "active": {
                    "type": "boolean",
                    "description": "[boolean] Whether the IONOS Object Storage is active / enabled or not - Please keep in mind this is only required on create. Default value in true\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The IONOS Object Storage Secret key.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "[string] The UUID of the user owning the IONOS Object Storage Key.\n"
                }
            },
            "required": [
                "secretKey",
                "userId"
            ],
            "inputProperties": {
                "active": {
                    "type": "boolean",
                    "description": "[boolean] Whether the IONOS Object Storage is active / enabled or not - Please keep in mind this is only required on create. Default value in true\n"
                },
                "userId": {
                    "type": "string",
                    "description": "[string] The UUID of the user owning the IONOS Object Storage Key.\n"
                }
            },
            "requiredInputs": [
                "userId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering S3Key resources.\n",
                "properties": {
                    "active": {
                        "type": "boolean",
                        "description": "[boolean] Whether the IONOS Object Storage is active / enabled or not - Please keep in mind this is only required on create. Default value in true\n"
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The IONOS Object Storage Secret key.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "[string] The UUID of the user owning the IONOS Object Storage Key.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/server:Server": {
            "description": "Dedicated Core Servers or [Enterprise Servers](https://docs.ionos.com/cloud/compute-services/compute-engine/dedicated-core) are provisioned and hosted in one of IONOS' physical data centers. Dedicated Core Servers behave exactly like physical servers. They can be configured and managed with your choice of the operating system.\n\nCheck out [Limitations](https://docs.ionos.com/cloud/compute-services/compute-engine/dedicated-core#limitations).\n\n## Example Usage\n\nThis resource will create an operational server. After this section completes, the provisioner can be called.\n\n### Dedicated Core Server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = ionoscloud.compute.getImage({\n    type: \"HDD\",\n    cloudInit: \"V1\",\n    imageAlias: \"ubuntu:latest\",\n    location: \"us/las\",\n});\nconst exampleDatacenter = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: exampleDatacenter.location,\n    size: 4,\n    name: \"IP Block Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: exampleDatacenter.id,\n    cores: 1,\n    ram: 1024,\n    imageName: example.then(example =\u003e example.name),\n    imagePassword: serverImagePassword.result,\n    type: \"ENTERPRISE\",\n    volume: {\n        name: \"system\",\n        size: 5,\n        diskType: \"SSD Standard\",\n        userData: \"foo\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"ZONE_1\",\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"system\",\n        dhcp: true,\n        firewallActive: true,\n        firewallType: \"BIDIRECTIONAL\",\n        ips: [\n            exampleIPBlock.ips[0],\n            exampleIPBlock.ips[1],\n        ],\n        firewall: {\n            protocol: \"TCP\",\n            name: \"SSH\",\n            portRangeStart: 22,\n            portRangeEnd: 22,\n            sourceMac: \"00:0a:95:9d:68:17\",\n            sourceIp: exampleIPBlock.ips[2],\n            targetIp: exampleIPBlock.ips[3],\n            type: \"EGRESS\",\n        },\n    },\n    labels: [\n        {\n            key: \"labelkey1\",\n            value: \"labelvalue1\",\n        },\n        {\n            key: \"labelkey2\",\n            value: \"labelvalue2\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.get_image(type=\"HDD\",\n    cloud_init=\"V1\",\n    image_alias=\"ubuntu:latest\",\n    location=\"us/las\")\nexample_datacenter = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example_datacenter.id,\n    public=True,\n    name=\"Lan Example\")\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=example_datacenter.location,\n    size=4,\n    name=\"IP Block Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example_datacenter.id,\n    cores=1,\n    ram=1024,\n    image_name=example.name,\n    image_password=server_image_password[\"result\"],\n    type=\"ENTERPRISE\",\n    volume={\n        \"name\": \"system\",\n        \"size\": 5,\n        \"disk_type\": \"SSD Standard\",\n        \"user_data\": \"foo\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"ZONE_1\",\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"system\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n        \"firewall_type\": \"BIDIRECTIONAL\",\n        \"ips\": [\n            example_ip_block.ips[0],\n            example_ip_block.ips[1],\n        ],\n        \"firewall\": {\n            \"protocol\": \"TCP\",\n            \"name\": \"SSH\",\n            \"portRangeStart\": 22,\n            \"portRangeEnd\": 22,\n            \"sourceMac\": \"00:0a:95:9d:68:17\",\n            \"sourceIp\": example_ip_block.ips[2],\n            \"targetIp\": example_ip_block.ips[3],\n            \"type\": \"EGRESS\",\n        },\n    },\n    labels=[\n        {\n            \"key\": \"labelkey1\",\n            \"value\": \"labelvalue1\",\n        },\n        {\n            \"key\": \"labelkey2\",\n            \"value\": \"labelvalue2\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        Type = \"HDD\",\n        CloudInit = \"V1\",\n        ImageAlias = \"ubuntu:latest\",\n        Location = \"us/las\",\n    });\n\n    var exampleDatacenter = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = exampleDatacenter.Location,\n        Size = 4,\n        Name = \"IP Block Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = exampleDatacenter.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = example.Apply(getImageResult =\u003e getImageResult.Name),\n        ImagePassword = serverImagePassword.Result,\n        Type = \"ENTERPRISE\",\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 5,\n            DiskType = \"SSD Standard\",\n            UserData = \"foo\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"ZONE_1\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"system\",\n            Dhcp = true,\n            FirewallActive = true,\n            FirewallType = \"BIDIRECTIONAL\",\n            Ips = new[]\n            {\n                exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n                exampleIPBlock.Ips.Apply(ips =\u003e ips[1]),\n            },\n            Firewall = \n            {\n                { \"protocol\", \"TCP\" },\n                { \"name\", \"SSH\" },\n                { \"portRangeStart\", 22 },\n                { \"portRangeEnd\", 22 },\n                { \"sourceMac\", \"00:0a:95:9d:68:17\" },\n                { \"sourceIp\", exampleIPBlock.Ips.Apply(ips =\u003e ips[2]) },\n                { \"targetIp\", exampleIPBlock.Ips.Apply(ips =\u003e ips[3]) },\n                { \"type\", \"EGRESS\" },\n            },\n        },\n        Labels = new[]\n        {\n            new Ionoscloud.Compute.Inputs.ServerLabelArgs\n            {\n                Key = \"labelkey1\",\n                Value = \"labelvalue1\",\n            },\n            new Ionoscloud.Compute.Inputs.ServerLabelArgs\n            {\n                Key = \"labelkey2\",\n                Value = \"labelvalue2\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tType:       pulumi.StringRef(\"HDD\"),\n\t\t\tCloudInit:  pulumi.StringRef(\"V1\"),\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest\"),\n\t\t\tLocation:   pulumi.StringRef(\"us/las\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDatacenter, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: exampleDatacenter.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: exampleDatacenter.Location,\n\t\t\tSize:     pulumi.Int(4),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:  exampleDatacenter.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(pulumi.String(example.Name)),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tType:          pulumi.String(\"ENTERPRISE\"),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"system\"),\n\t\t\t\tSize:             pulumi.Int(5),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tUserData:         pulumi.String(\"foo\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"ZONE_1\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"system\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\tFirewallType:   pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[1], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tFirewall: map[string]interface{}{\n\t\t\t\t\t\"protocol\":       \"TCP\",\n\t\t\t\t\t\"name\":           \"SSH\",\n\t\t\t\t\t\"portRangeStart\": 22,\n\t\t\t\t\t\"portRangeEnd\":   22,\n\t\t\t\t\t\"sourceMac\":      \"00:0a:95:9d:68:17\",\n\t\t\t\t\t\"sourceIp\": exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[2], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"targetIp\": exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[3], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"type\": \"EGRESS\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: compute.ServerLabelArray{\n\t\t\t\t\u0026compute.ServerLabelArgs{\n\t\t\t\t\tKey:   pulumi.String(\"labelkey1\"),\n\t\t\t\t\tValue: pulumi.String(\"labelvalue1\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.ServerLabelArgs{\n\t\t\t\t\tKey:   pulumi.String(\"labelkey2\"),\n\t\t\t\t\tValue: pulumi.String(\"labelvalue2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .type(\"HDD\")\n            .cloudInit(\"V1\")\n            .imageAlias(\"ubuntu:latest\")\n            .location(\"us/las\")\n            .build());\n\n        var exampleDatacenter = new Datacenter(\"exampleDatacenter\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(exampleDatacenter.location())\n            .size(4)\n            .name(\"IP Block Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(exampleDatacenter.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(example.name())\n            .imagePassword(serverImagePassword.result())\n            .type(\"ENTERPRISE\")\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(5)\n                .diskType(\"SSD Standard\")\n                .userData(\"foo\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"ZONE_1\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"system\")\n                .dhcp(true)\n                .firewallActive(true)\n                .firewallType(\"BIDIRECTIONAL\")\n                .ips(                \n                    exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]),\n                    exampleIPBlock.ips().applyValue(_ips -\u003e _ips[1]))\n                .firewall(Map.ofEntries(\n                    Map.entry(\"protocol\", \"TCP\"),\n                    Map.entry(\"name\", \"SSH\"),\n                    Map.entry(\"portRangeStart\", 22),\n                    Map.entry(\"portRangeEnd\", 22),\n                    Map.entry(\"sourceMac\", \"00:0a:95:9d:68:17\"),\n                    Map.entry(\"sourceIp\", exampleIPBlock.ips().applyValue(_ips -\u003e _ips[2])),\n                    Map.entry(\"targetIp\", exampleIPBlock.ips().applyValue(_ips -\u003e _ips[3])),\n                    Map.entry(\"type\", \"EGRESS\")\n                ))\n                .build())\n            .labels(            \n                ServerLabelArgs.builder()\n                    .key(\"labelkey1\")\n                    .value(\"labelvalue1\")\n                    .build(),\n                ServerLabelArgs.builder()\n                    .key(\"labelkey2\")\n                    .value(\"labelvalue2\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: example\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      public: true\n      name: Lan Example\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: ${exampleDatacenter.location}\n      size: 4\n      name: IP Block Example\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${exampleDatacenter.id}\n      cores: 1\n      ram: 1024\n      imageName: ${example.name}\n      imagePassword: ${serverImagePassword.result}\n      type: ENTERPRISE\n      volume:\n        name: system\n        size: 5\n        diskType: SSD Standard\n        userData: foo\n        bus: VIRTIO\n        availabilityZone: ZONE_1\n      nic:\n        lan: ${exampleLan.id}\n        name: system\n        dhcp: true\n        firewallActive: true\n        firewallType: BIDIRECTIONAL\n        ips:\n          - ${exampleIPBlock.ips[0]}\n          - ${exampleIPBlock.ips[1]}\n        firewall:\n          protocol: TCP\n          name: SSH\n          portRangeStart: 22\n          portRangeEnd: 22\n          sourceMac: 00:0a:95:9d:68:17\n          sourceIp: ${exampleIPBlock.ips[2]}\n          targetIp: ${exampleIPBlock.ips[3]}\n          type: EGRESS\n      labels:\n        - key: labelkey1\n          value: labelvalue1\n        - key: labelkey2\n          value: labelvalue2\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        type: HDD\n        cloudInit: V1\n        imageAlias: ubuntu:latest\n        location: us/las\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### With IPv6 Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Resource Server Test\",\n    location: \"us/las\",\n});\nconst webserverIpblock = new ionoscloud.compute.IPBlock(\"webserver_ipblock\", {\n    location: \"us/las\",\n    size: 4,\n    name: \"webserver_ipblock\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"public\",\n    ipv6CidrBlock: std.cidrsubnet({\n        input: example.ipv6CidrBlock,\n        newbits: 8,\n        netnum: 10,\n    }).result,\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Resource Server Test\",\n    datacenterId: example.id,\n    cores: 1,\n    ram: 1024,\n    imageName: \"ubuntu:latest\",\n    imagePassword: serverImagePassword.result,\n    type: \"ENTERPRISE\",\n    volume: {\n        name: \"system\",\n        size: 5,\n        diskType: \"SSD Standard\",\n        userData: \"foo\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"ZONE_1\",\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"system\",\n        dhcp: true,\n        firewallActive: true,\n        firewallType: \"BIDIRECTIONAL\",\n        ips: [\n            webserverIpblock.ips[0],\n            webserverIpblock.ips[1],\n        ],\n        dhcpv6: true,\n        ipv6CidrBlock: std.cidrsubnet({\n            input: exampleLan.ipv6CidrBlock,\n            newbits: 16,\n            netnum: 24,\n        }).result,\n        ipv6Ips: [\n            std.cidrhost({\n                input: std.cidrsubnet({\n                    input: exampleLan.ipv6CidrBlock,\n                    newbits: 16,\n                    netnum: 24,\n                }).result,\n                host: 10,\n            }).result,\n            std.cidrhost({\n                input: std.cidrsubnet({\n                    input: exampleLan.ipv6CidrBlock,\n                    newbits: 16,\n                    netnum: 24,\n                }).result,\n                host: 20,\n            }).result,\n            std.cidrhost({\n                input: std.cidrsubnet({\n                    input: exampleLan.ipv6CidrBlock,\n                    newbits: 16,\n                    netnum: 24,\n                }).result,\n                host: 30,\n            }).result,\n        ],\n        firewall: {\n            protocol: \"TCP\",\n            name: \"SSH\",\n            portRangeStart: 22,\n            portRangeEnd: 22,\n            sourceMac: \"00:0a:95:9d:68:17\",\n            sourceIp: webserverIpblock.ips[2],\n            targetIp: webserverIpblock.ips[3],\n            type: \"EGRESS\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\nimport pulumi_std as std\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Resource Server Test\",\n    location=\"us/las\")\nwebserver_ipblock = ionoscloud.compute.IPBlock(\"webserver_ipblock\",\n    location=\"us/las\",\n    size=4,\n    name=\"webserver_ipblock\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"public\",\n    ipv6_cidr_block=std.cidrsubnet(input=example.ipv6_cidr_block,\n        newbits=8,\n        netnum=10)[\"result\"])\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Resource Server Test\",\n    datacenter_id=example.id,\n    cores=1,\n    ram=1024,\n    image_name=\"ubuntu:latest\",\n    image_password=server_image_password[\"result\"],\n    type=\"ENTERPRISE\",\n    volume={\n        \"name\": \"system\",\n        \"size\": 5,\n        \"disk_type\": \"SSD Standard\",\n        \"user_data\": \"foo\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"ZONE_1\",\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"system\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n        \"firewall_type\": \"BIDIRECTIONAL\",\n        \"ips\": [\n            webserver_ipblock.ips[0],\n            webserver_ipblock.ips[1],\n        ],\n        \"dhcpv6\": True,\n        \"ipv6_cidr_block\": std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n            newbits=16,\n            netnum=24)[\"result\"],\n        \"ipv6_ips\": [\n            std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                    newbits=16,\n                    netnum=24)[\"result\"],\n                host=10)[\"result\"],\n            std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                    newbits=16,\n                    netnum=24)[\"result\"],\n                host=20)[\"result\"],\n            std.cidrhost(input=std.cidrsubnet(input=example_lan.ipv6_cidr_block,\n                    newbits=16,\n                    netnum=24)[\"result\"],\n                host=30)[\"result\"],\n        ],\n        \"firewall\": {\n            \"protocol\": \"TCP\",\n            \"name\": \"SSH\",\n            \"portRangeStart\": 22,\n            \"portRangeEnd\": 22,\n            \"sourceMac\": \"00:0a:95:9d:68:17\",\n            \"sourceIp\": webserver_ipblock.ips[2],\n            \"targetIp\": webserver_ipblock.ips[3],\n            \"type\": \"EGRESS\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Resource Server Test\",\n        Location = \"us/las\",\n    });\n\n    var webserverIpblock = new Ionoscloud.Compute.IPBlock(\"webserver_ipblock\", new()\n    {\n        Location = \"us/las\",\n        Size = 4,\n        Name = \"webserver_ipblock\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"public\",\n        Ipv6CidrBlock = Std.Index.Cidrsubnet.Invoke(new()\n        {\n            Input = example.Ipv6CidrBlock,\n            Newbits = 8,\n            Netnum = 10,\n        }).Result,\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Resource Server Test\",\n        DatacenterId = example.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = \"ubuntu:latest\",\n        ImagePassword = serverImagePassword.Result,\n        Type = \"ENTERPRISE\",\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 5,\n            DiskType = \"SSD Standard\",\n            UserData = \"foo\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"ZONE_1\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"system\",\n            Dhcp = true,\n            FirewallActive = true,\n            FirewallType = \"BIDIRECTIONAL\",\n            Ips = new[]\n            {\n                webserverIpblock.Ips.Apply(ips =\u003e ips[0]),\n                webserverIpblock.Ips.Apply(ips =\u003e ips[1]),\n            },\n            Dhcpv6 = true,\n            Ipv6CidrBlock = Std.Index.Cidrsubnet.Invoke(new()\n            {\n                Input = exampleLan.Ipv6CidrBlock,\n                Newbits = 16,\n                Netnum = 24,\n            }).Result,\n            Ipv6Ips = new[]\n            {\n                Std.Index.Cidrhost.Invoke(new()\n                {\n                    Input = Std.Index.Cidrsubnet.Invoke(new()\n                    {\n                        Input = exampleLan.Ipv6CidrBlock,\n                        Newbits = 16,\n                        Netnum = 24,\n                    }).Result,\n                    Host = 10,\n                }).Result,\n                Std.Index.Cidrhost.Invoke(new()\n                {\n                    Input = Std.Index.Cidrsubnet.Invoke(new()\n                    {\n                        Input = exampleLan.Ipv6CidrBlock,\n                        Newbits = 16,\n                        Netnum = 24,\n                    }).Result,\n                    Host = 20,\n                }).Result,\n                Std.Index.Cidrhost.Invoke(new()\n                {\n                    Input = Std.Index.Cidrsubnet.Invoke(new()\n                    {\n                        Input = exampleLan.Ipv6CidrBlock,\n                        Newbits = 16,\n                        Netnum = 24,\n                    }).Result,\n                    Host = 30,\n                }).Result,\n            },\n            Firewall = \n            {\n                { \"protocol\", \"TCP\" },\n                { \"name\", \"SSH\" },\n                { \"portRangeStart\", 22 },\n                { \"portRangeEnd\", 22 },\n                { \"sourceMac\", \"00:0a:95:9d:68:17\" },\n                { \"sourceIp\", webserverIpblock.Ips.Apply(ips =\u003e ips[2]) },\n                { \"targetIp\", webserverIpblock.Ips.Apply(ips =\u003e ips[3]) },\n                { \"type\", \"EGRESS\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Resource Server Test\"),\n\t\t\tLocation: pulumi.String(\"us/las\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserverIpblock, err := compute.NewIPBlock(ctx, \"webserver_ipblock\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"us/las\"),\n\t\t\tSize:     pulumi.Int(4),\n\t\t\tName:     pulumi.String(\"webserver_ipblock\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrsubnet, err := std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\"input\":   example.Ipv6CidrBlock,\n\t\t\t\"newbits\": 8,\n\t\t\t\"netnum\":  10,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tPublic:        pulumi.Bool(true),\n\t\t\tName:          pulumi.String(\"public\"),\n\t\t\tIpv6CidrBlock: invokeCidrsubnet.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrsubnet1, err := std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\"newbits\": 16,\n\t\t\t\"netnum\":  24,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost2, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  24,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 10,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost3, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  24,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 20,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeCidrhost4, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Cidrsubnet(ctx, map[string]interface{}{\n\t\t\t\t\"input\":   exampleLan.Ipv6CidrBlock,\n\t\t\t\t\"newbits\": 16,\n\t\t\t\t\"netnum\":  24,\n\t\t\t}, nil).Result,\n\t\t\t\"host\": 30,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Resource Server Test\"),\n\t\t\tDatacenterId:  example.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(\"ubuntu:latest\"),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tType:          pulumi.String(\"ENTERPRISE\"),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"system\"),\n\t\t\t\tSize:             pulumi.Int(5),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tUserData:         pulumi.String(\"foo\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"ZONE_1\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"system\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\tFirewallType:   pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\twebserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\twebserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[1], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDhcpv6:        pulumi.Bool(true),\n\t\t\t\tIpv6CidrBlock: invokeCidrsubnet1.Result,\n\t\t\t\tIpv6Ips: pulumi.StringArray{\n\t\t\t\t\tinvokeCidrhost2.Result,\n\t\t\t\t\tinvokeCidrhost3.Result,\n\t\t\t\t\tinvokeCidrhost4.Result,\n\t\t\t\t},\n\t\t\t\tFirewall: map[string]interface{}{\n\t\t\t\t\t\"protocol\":       \"TCP\",\n\t\t\t\t\t\"name\":           \"SSH\",\n\t\t\t\t\t\"portRangeStart\": 22,\n\t\t\t\t\t\"portRangeEnd\":   22,\n\t\t\t\t\t\"sourceMac\":      \"00:0a:95:9d:68:17\",\n\t\t\t\t\t\"sourceIp\": webserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[2], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"targetIp\": webserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[3], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"type\": \"EGRESS\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Resource Server Test\")\n            .location(\"us/las\")\n            .build());\n\n        var webserverIpblock = new IPBlock(\"webserverIpblock\", IPBlockArgs.builder()\n            .location(\"us/las\")\n            .size(4)\n            .name(\"webserver_ipblock\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"public\")\n            .ipv6CidrBlock(StdFunctions.cidrsubnet(Map.ofEntries(\n                Map.entry(\"input\", example.ipv6CidrBlock()),\n                Map.entry(\"newbits\", 8),\n                Map.entry(\"netnum\", 10)\n            )).result())\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Resource Server Test\")\n            .datacenterId(example.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(\"ubuntu:latest\")\n            .imagePassword(serverImagePassword.result())\n            .type(\"ENTERPRISE\")\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(5)\n                .diskType(\"SSD Standard\")\n                .userData(\"foo\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"ZONE_1\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"system\")\n                .dhcp(true)\n                .firewallActive(true)\n                .firewallType(\"BIDIRECTIONAL\")\n                .ips(                \n                    webserverIpblock.ips().applyValue(_ips -\u003e _ips[0]),\n                    webserverIpblock.ips().applyValue(_ips -\u003e _ips[1]))\n                .dhcpv6(true)\n                .ipv6CidrBlock(StdFunctions.cidrsubnet(Map.ofEntries(\n                    Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                    Map.entry(\"newbits\", 16),\n                    Map.entry(\"netnum\", 24)\n                )).result())\n                .ipv6Ips(                \n                    StdFunctions.cidrhost(Map.ofEntries(\n                        Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                            Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                            Map.entry(\"newbits\", 16),\n                            Map.entry(\"netnum\", 24)\n                        )).result()),\n                        Map.entry(\"host\", 10)\n                    )).result(),\n                    StdFunctions.cidrhost(Map.ofEntries(\n                        Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                            Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                            Map.entry(\"newbits\", 16),\n                            Map.entry(\"netnum\", 24)\n                        )).result()),\n                        Map.entry(\"host\", 20)\n                    )).result(),\n                    StdFunctions.cidrhost(Map.ofEntries(\n                        Map.entry(\"input\", StdFunctions.cidrsubnet(Map.ofEntries(\n                            Map.entry(\"input\", exampleLan.ipv6CidrBlock()),\n                            Map.entry(\"newbits\", 16),\n                            Map.entry(\"netnum\", 24)\n                        )).result()),\n                        Map.entry(\"host\", 30)\n                    )).result())\n                .firewall(Map.ofEntries(\n                    Map.entry(\"protocol\", \"TCP\"),\n                    Map.entry(\"name\", \"SSH\"),\n                    Map.entry(\"portRangeStart\", 22),\n                    Map.entry(\"portRangeEnd\", 22),\n                    Map.entry(\"sourceMac\", \"00:0a:95:9d:68:17\"),\n                    Map.entry(\"sourceIp\", webserverIpblock.ips().applyValue(_ips -\u003e _ips[2])),\n                    Map.entry(\"targetIp\", webserverIpblock.ips().applyValue(_ips -\u003e _ips[3])),\n                    Map.entry(\"type\", \"EGRESS\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Resource Server Test\n      location: us/las\n  webserverIpblock:\n    type: ionoscloud:compute:IPBlock\n    name: webserver_ipblock\n    properties:\n      location: us/las\n      size: 4\n      name: webserver_ipblock\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: public\n      ipv6CidrBlock:\n        fn::invoke:\n          function: std:cidrsubnet\n          arguments:\n            input: ${example.ipv6CidrBlock}\n            newbits: 8\n            netnum: 10\n          return: result\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Resource Server Test\n      datacenterId: ${example.id}\n      cores: 1\n      ram: 1024\n      imageName: ubuntu:latest\n      imagePassword: ${serverImagePassword.result}\n      type: ENTERPRISE\n      volume:\n        name: system\n        size: 5\n        diskType: SSD Standard\n        userData: foo\n        bus: VIRTIO\n        availabilityZone: ZONE_1\n      nic:\n        lan: ${exampleLan.id}\n        name: system\n        dhcp: true\n        firewallActive: true\n        firewallType: BIDIRECTIONAL\n        ips:\n          - ${webserverIpblock.ips[0]}\n          - ${webserverIpblock.ips[1]}\n        dhcpv6: true\n        ipv6CidrBlock:\n          fn::invoke:\n            function: std:cidrsubnet\n            arguments:\n              input: ${exampleLan.ipv6CidrBlock}\n              newbits: 16\n              netnum: 24\n            return: result\n        ipv6Ips:\n          - fn::invoke:\n              function: std:cidrhost\n              arguments:\n                input:\n                  fn::invoke:\n                    function: std:cidrsubnet\n                    arguments:\n                      input: ${exampleLan.ipv6CidrBlock}\n                      newbits: 16\n                      netnum: 24\n                    return: result\n                host: 10\n              return: result\n          - fn::invoke:\n              function: std:cidrhost\n              arguments:\n                input:\n                  fn::invoke:\n                    function: std:cidrsubnet\n                    arguments:\n                      input: ${exampleLan.ipv6CidrBlock}\n                      newbits: 16\n                      netnum: 24\n                    return: result\n                host: 20\n              return: result\n          - fn::invoke:\n              function: std:cidrhost\n              arguments:\n                input:\n                  fn::invoke:\n                    function: std:cidrsubnet\n                    arguments:\n                      input: ${exampleLan.ipv6CidrBlock}\n                      newbits: 16\n                      netnum: 24\n                    return: result\n                host: 30\n              return: result\n        firewall:\n          protocol: TCP\n          name: SSH\n          portRangeStart: 22\n          portRangeEnd: 22\n          sourceMac: 00:0a:95:9d:68:17\n          sourceIp: ${webserverIpblock.ips[2]}\n          targetIp: ${webserverIpblock.ips[3]}\n          type: EGRESS\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### CUBE Server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = ionoscloud.compute.getTemplate({\n    name: \"Basic Cube XS\",\n});\nconst exampleDatacenter = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"de/txl\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    availabilityZone: \"ZONE_2\",\n    imageName: \"ubuntu:latest\",\n    type: \"CUBE\",\n    templateUuid: example.then(example =\u003e example.id),\n    imagePassword: serverImagePassword.result,\n    datacenterId: exampleDatacenter.id,\n    volume: {\n        name: \"Volume Example\",\n        licenceType: \"LINUX\",\n        diskType: \"DAS\",\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"Nic Example\",\n        dhcp: true,\n        firewallActive: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.get_template(name=\"Basic Cube XS\")\nexample_datacenter = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"de/txl\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example_datacenter.id,\n    public=True,\n    name=\"Lan Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    availability_zone=\"ZONE_2\",\n    image_name=\"ubuntu:latest\",\n    type=\"CUBE\",\n    template_uuid=example.id,\n    image_password=server_image_password[\"result\"],\n    datacenter_id=example_datacenter.id,\n    volume={\n        \"name\": \"Volume Example\",\n        \"licence_type\": \"LINUX\",\n        \"disk_type\": \"DAS\",\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"Nic Example\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTemplate.Invoke(new()\n    {\n        Name = \"Basic Cube XS\",\n    });\n\n    var exampleDatacenter = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"de/txl\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        AvailabilityZone = \"ZONE_2\",\n        ImageName = \"ubuntu:latest\",\n        Type = \"CUBE\",\n        TemplateUuid = example.Apply(getTemplateResult =\u003e getTemplateResult.Id),\n        ImagePassword = serverImagePassword.Result,\n        DatacenterId = exampleDatacenter.Id,\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"Volume Example\",\n            LicenceType = \"LINUX\",\n            DiskType = \"DAS\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"Nic Example\",\n            Dhcp = true,\n            FirewallActive = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.GetTemplate(ctx, \u0026compute.GetTemplateArgs{\n\t\t\tName: pulumi.StringRef(\"Basic Cube XS\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDatacenter, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: exampleDatacenter.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:             pulumi.String(\"Server Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_2\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tType:             pulumi.String(\"CUBE\"),\n\t\t\tTemplateUuid:     pulumi.String(pulumi.String(example.Id)),\n\t\t\tImagePassword:    serverImagePassword.Result,\n\t\t\tDatacenterId:     exampleDatacenter.ID(),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:        pulumi.String(\"Volume Example\"),\n\t\t\t\tLicenceType: pulumi.String(\"LINUX\"),\n\t\t\t\tDiskType:    pulumi.String(\"DAS\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"Nic Example\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()\n            .name(\"Basic Cube XS\")\n            .build());\n\n        var exampleDatacenter = new Datacenter(\"exampleDatacenter\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"de/txl\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .availabilityZone(\"ZONE_2\")\n            .imageName(\"ubuntu:latest\")\n            .type(\"CUBE\")\n            .templateUuid(example.id())\n            .imagePassword(serverImagePassword.result())\n            .datacenterId(exampleDatacenter.id())\n            .volume(ServerVolumeArgs.builder()\n                .name(\"Volume Example\")\n                .licenceType(\"LINUX\")\n                .diskType(\"DAS\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"Nic Example\")\n                .dhcp(true)\n                .firewallActive(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: example\n    properties:\n      name: Datacenter Example\n      location: de/txl\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      public: true\n      name: Lan Example\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      availabilityZone: ZONE_2\n      imageName: ubuntu:latest\n      type: CUBE\n      templateUuid: ${example.id}\n      imagePassword: ${serverImagePassword.result}\n      datacenterId: ${exampleDatacenter.id}\n      volume:\n        name: Volume Example\n        licenceType: LINUX\n        diskType: DAS\n      nic:\n        lan: ${exampleLan.id}\n        name: Nic Example\n        dhcp: true\n        firewallActive: true\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTemplate\n      arguments:\n        name: Basic Cube XS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Server that boots from CDROM \n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst cdromDatacenter = new ionoscloud.compute.Datacenter(\"cdrom\", {\n    name: \"CDROM Test\",\n    location: \"de/txl\",\n    description: \"CDROM image test\",\n    secAuthProtection: false,\n});\nconst _public = new ionoscloud.compute.Lan(\"public\", {\n    datacenterId: cdromDatacenter.id,\n    \"public\": true,\n    name: \"Uplink\",\n});\nconst cdrom = ionoscloud.compute.getImage({\n    imageAlias: \"ubuntu:latest_iso\",\n    type: \"CDROM\",\n    location: \"de/txl\",\n    cloudInit: \"NONE\",\n});\nconst test = new ionoscloud.compute.Server(\"test\", {\n    datacenterId: cdromDatacenter.id,\n    name: \"ubuntu_latest_from_cdrom\",\n    cores: 1,\n    ram: 1024,\n    cpuFamily: cdromDatacenter.cpuArchitectures.apply(cpuArchitectures =\u003e cpuArchitectures[0].cpuFamily),\n    type: \"ENTERPRISE\",\n    volume: {\n        name: \"hdd0\",\n        diskType: \"HDD\",\n        size: 50,\n        licenceType: \"OTHER\",\n    },\n    nic: {\n        lan: 1,\n        dhcp: true,\n        firewallActive: false,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\ncdrom_datacenter = ionoscloud.compute.Datacenter(\"cdrom\",\n    name=\"CDROM Test\",\n    location=\"de/txl\",\n    description=\"CDROM image test\",\n    sec_auth_protection=False)\npublic = ionoscloud.compute.Lan(\"public\",\n    datacenter_id=cdrom_datacenter.id,\n    public=True,\n    name=\"Uplink\")\ncdrom = ionoscloud.compute.get_image(image_alias=\"ubuntu:latest_iso\",\n    type=\"CDROM\",\n    location=\"de/txl\",\n    cloud_init=\"NONE\")\ntest = ionoscloud.compute.Server(\"test\",\n    datacenter_id=cdrom_datacenter.id,\n    name=\"ubuntu_latest_from_cdrom\",\n    cores=1,\n    ram=1024,\n    cpu_family=cdrom_datacenter.cpu_architectures[0].cpu_family,\n    type=\"ENTERPRISE\",\n    volume={\n        \"name\": \"hdd0\",\n        \"disk_type\": \"HDD\",\n        \"size\": 50,\n        \"licence_type\": \"OTHER\",\n    },\n    nic={\n        \"lan\": 1,\n        \"dhcp\": True,\n        \"firewall_active\": False,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cdromDatacenter = new Ionoscloud.Compute.Datacenter(\"cdrom\", new()\n    {\n        Name = \"CDROM Test\",\n        Location = \"de/txl\",\n        Description = \"CDROM image test\",\n        SecAuthProtection = false,\n    });\n\n    var @public = new Ionoscloud.Compute.Lan(\"public\", new()\n    {\n        DatacenterId = cdromDatacenter.Id,\n        Public = true,\n        Name = \"Uplink\",\n    });\n\n    var cdrom = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        ImageAlias = \"ubuntu:latest_iso\",\n        Type = \"CDROM\",\n        Location = \"de/txl\",\n        CloudInit = \"NONE\",\n    });\n\n    var test = new Ionoscloud.Compute.Server(\"test\", new()\n    {\n        DatacenterId = cdromDatacenter.Id,\n        Name = \"ubuntu_latest_from_cdrom\",\n        Cores = 1,\n        Ram = 1024,\n        CpuFamily = cdromDatacenter.CpuArchitectures.Apply(cpuArchitectures =\u003e cpuArchitectures[0].CpuFamily),\n        Type = \"ENTERPRISE\",\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"hdd0\",\n            DiskType = \"HDD\",\n            Size = 50,\n            LicenceType = \"OTHER\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = 1,\n            Dhcp = true,\n            FirewallActive = false,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcdromDatacenter, err := compute.NewDatacenter(ctx, \"cdrom\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"CDROM Test\"),\n\t\t\tLocation:          pulumi.String(\"de/txl\"),\n\t\t\tDescription:       pulumi.String(\"CDROM image test\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewLan(ctx, \"public\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: cdromDatacenter.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Uplink\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest_iso\"),\n\t\t\tType:       pulumi.StringRef(\"CDROM\"),\n\t\t\tLocation:   pulumi.StringRef(\"de/txl\"),\n\t\t\tCloudInit:  pulumi.StringRef(\"NONE\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewServer(ctx, \"test\", \u0026compute.ServerArgs{\n\t\t\tDatacenterId: cdromDatacenter.ID(),\n\t\t\tName:         pulumi.String(\"ubuntu_latest_from_cdrom\"),\n\t\t\tCores:        pulumi.Int(1),\n\t\t\tRam:          pulumi.Int(1024),\n\t\t\tCpuFamily: pulumi.String(cdromDatacenter.CpuArchitectures.ApplyT(func(cpuArchitectures []compute.DatacenterCpuArchitecture) (*string, error) {\n\t\t\t\treturn \u0026cpuArchitectures[0].CpuFamily, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:        pulumi.String(\"hdd0\"),\n\t\t\t\tDiskType:    pulumi.String(\"HDD\"),\n\t\t\t\tSize:        pulumi.Int(50),\n\t\t\t\tLicenceType: pulumi.String(\"OTHER\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            pulumi.Int(1),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cdromDatacenter = new Datacenter(\"cdromDatacenter\", DatacenterArgs.builder()\n            .name(\"CDROM Test\")\n            .location(\"de/txl\")\n            .description(\"CDROM image test\")\n            .secAuthProtection(false)\n            .build());\n\n        var public_ = new Lan(\"public\", LanArgs.builder()\n            .datacenterId(cdromDatacenter.id())\n            .public_(true)\n            .name(\"Uplink\")\n            .build());\n\n        final var cdrom = ComputeFunctions.getImage(GetImageArgs.builder()\n            .imageAlias(\"ubuntu:latest_iso\")\n            .type(\"CDROM\")\n            .location(\"de/txl\")\n            .cloudInit(\"NONE\")\n            .build());\n\n        var test = new Server(\"test\", ServerArgs.builder()\n            .datacenterId(cdromDatacenter.id())\n            .name(\"ubuntu_latest_from_cdrom\")\n            .cores(1)\n            .ram(1024)\n            .cpuFamily(cdromDatacenter.cpuArchitectures().applyValue(_cpuArchitectures -\u003e _cpuArchitectures[0].cpuFamily()))\n            .type(\"ENTERPRISE\")\n            .volume(ServerVolumeArgs.builder()\n                .name(\"hdd0\")\n                .diskType(\"HDD\")\n                .size(50)\n                .licenceType(\"OTHER\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(1)\n                .dhcp(true)\n                .firewallActive(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cdromDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: cdrom\n    properties:\n      name: CDROM Test\n      location: de/txl\n      description: CDROM image test\n      secAuthProtection: false\n  public:\n    type: ionoscloud:compute:Lan\n    properties:\n      datacenterId: ${cdromDatacenter.id}\n      public: true\n      name: Uplink\n  test:\n    type: ionoscloud:compute:Server\n    properties:\n      datacenterId: ${cdromDatacenter.id}\n      name: ubuntu_latest_from_cdrom\n      cores: 1\n      ram: 1024\n      cpuFamily: ${cdromDatacenter.cpuArchitectures[0].cpuFamily}\n      type: ENTERPRISE\n      volume:\n        name: hdd0\n        diskType: HDD\n        size: 50\n        licenceType: OTHER\n      nic:\n        lan: 1\n        dhcp: true\n        firewallActive: false\nvariables:\n  cdrom:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        imageAlias: ubuntu:latest_iso\n        type: CDROM\n        location: de/txl\n        cloudInit: NONE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\nPlease note that for any secondary volume, you need to set the **licence_type** property to **UNKNOWN**\n\n⚠️ **Note:** Important for deleting an \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e rule from within a list of inline resources defined on the same nic. There is one limitation to removing one firewall rule\nfrom the middle of the list of \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e rules. Terraform will actually modify the existing rules and delete the last one.\nMore details here. There is a workaround described in the issue \nthat involves moving the resources in the list prior to deletion.\n`terraform state mv \u003cresource-name\u003e.\u003cresource-id\u003e[\u003ci\u003e] \u003cresource-name\u003e.\u003cresource-id\u003e[\u003cj\u003e]`\n\n",
            "properties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n"
                },
                "bootCdrom": {
                    "type": "string",
                    "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                    "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "bootVolume": {
                    "type": "string",
                    "description": "The associated boot volume.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "(Computed)[integer] Number of server CPU cores.\n"
                },
                "cpuFamily": {
                    "type": "string",
                    "description": "[string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: \"INTEL_SKYLAKE\" or \"INTEL_XEON\".\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "firewallruleId": {
                    "type": "string",
                    "description": "The associated firewall rule.\n"
                },
                "firewallruleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The associated firewall rules.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "inlineVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list with the IDs for the volumes that are defined inside the server resource.\n"
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/ServerLabel:ServerLabel"
                    },
                    "description": "[set] A label can be seen as an object with only two required fields: \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, both of the \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e type. Please check the example presented above to see how a \u003cspan pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\"\u003e`label`\u003c/span\u003e can be used in the plan. A server can have multiple labels.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/ServerNic:ServerNic",
                    "description": "See the Nic section.\n"
                },
                "nicMultiQueue": {
                    "type": "boolean",
                    "description": "[bool] Activate or deactivate the Multi Queue feature on all NICs of the server. This feature is beneficial to enable when the NICs are experiencing performance issues (e.g. low throughput). Toggling this feature will also initiate a restart of the server. If the specified value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the feature will be activated; if it is not specified or set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the feature will be deactivated. The feature cannot be activated for `CUBE` servers.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efields are immutable.\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e If you want to create a **CUBE** server, you have to provide the \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e. In this case you can not set \u003cspan pulumi-lang-nodejs=\"`cores`\" pulumi-lang-dotnet=\"`Cores`\" pulumi-lang-go=\"`cores`\" pulumi-lang-python=\"`cores`\" pulumi-lang-yaml=\"`cores`\" pulumi-lang-java=\"`cores`\"\u003e`cores`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ram`\" pulumi-lang-dotnet=\"`Ram`\" pulumi-lang-go=\"`ram`\" pulumi-lang-python=\"`ram`\" pulumi-lang-yaml=\"`ram`\" pulumi-lang-java=\"`ram`\"\u003e`ram`\u003c/span\u003e and `volume.size` arguments, these being mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e.\n\u003e\n\u003e In all the other cases (**ENTERPRISE** servers) you have to provide values for \u003cspan pulumi-lang-nodejs=\"`cores`\" pulumi-lang-dotnet=\"`Cores`\" pulumi-lang-go=\"`cores`\" pulumi-lang-python=\"`cores`\" pulumi-lang-yaml=\"`cores`\" pulumi-lang-java=\"`cores`\"\u003e`cores`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ram`\" pulumi-lang-dotnet=\"`Ram`\" pulumi-lang-go=\"`ram`\" pulumi-lang-python=\"`ram`\" pulumi-lang-yaml=\"`ram`\" pulumi-lang-java=\"`ram`\"\u003e`ram`\u003c/span\u003e and `volume size`.\n"
                },
                "primaryIp": {
                    "type": "string",
                    "description": "The associated IP address.\n"
                },
                "primaryNic": {
                    "type": "string",
                    "description": "The associated NIC.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "(Computed)[integer] The amount of memory for the server in MB.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images.  Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. Does not support `~` expansion to homedir in the given path. This property is immutable.\n",
                    "deprecationMessage": "Will be renamed to\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003ein the future, to allow users to set both the ssh key path or directly the ssh key"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support `~` expansion to homedir in the given path.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Computed)[string] Server usages: * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - Server usages: [ENTERPRISE](https://docs.ionos.com/cloud/compute-services/compute-engine/dedicated-core) now named dedicated core, [CUBE](https://docs.ionos.com/cloud/compute-services/cubes) or [VCPU](https://docs.ionos.com/cloud/compute-services/compute-engine/vcpu-server). This property is immutable.\n"
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the server. E.g: `RUNNING`, `SHUTOFF` or `SUSPENDED`. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise(dedicated core).\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/ServerVolume:ServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "required": [
                "availabilityZone",
                "bootCdrom",
                "bootImage",
                "bootVolume",
                "cores",
                "cpuFamily",
                "datacenterId",
                "firewallruleId",
                "firewallruleIds",
                "hostname",
                "imageName",
                "imagePassword",
                "inlineVolumeIds",
                "name",
                "primaryIp",
                "primaryNic",
                "ram",
                "type",
                "vmState"
            ],
            "inputProperties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "bootCdrom": {
                    "type": "string",
                    "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                    "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "(Computed)[integer] Number of server CPU cores.\n"
                },
                "cpuFamily": {
                    "type": "string",
                    "description": "[string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: \"INTEL_SKYLAKE\" or \"INTEL_XEON\".\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "firewallruleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The associated firewall rules.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/ServerLabel:ServerLabel"
                    },
                    "description": "[set] A label can be seen as an object with only two required fields: \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, both of the \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e type. Please check the example presented above to see how a \u003cspan pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\"\u003e`label`\u003c/span\u003e can be used in the plan. A server can have multiple labels.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/ServerNic:ServerNic",
                    "description": "See the Nic section.\n"
                },
                "nicMultiQueue": {
                    "type": "boolean",
                    "description": "[bool] Activate or deactivate the Multi Queue feature on all NICs of the server. This feature is beneficial to enable when the NICs are experiencing performance issues (e.g. low throughput). Toggling this feature will also initiate a restart of the server. If the specified value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the feature will be activated; if it is not specified or set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the feature will be deactivated. The feature cannot be activated for `CUBE` servers.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efields are immutable.\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e If you want to create a **CUBE** server, you have to provide the \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e. In this case you can not set \u003cspan pulumi-lang-nodejs=\"`cores`\" pulumi-lang-dotnet=\"`Cores`\" pulumi-lang-go=\"`cores`\" pulumi-lang-python=\"`cores`\" pulumi-lang-yaml=\"`cores`\" pulumi-lang-java=\"`cores`\"\u003e`cores`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ram`\" pulumi-lang-dotnet=\"`Ram`\" pulumi-lang-go=\"`ram`\" pulumi-lang-python=\"`ram`\" pulumi-lang-yaml=\"`ram`\" pulumi-lang-java=\"`ram`\"\u003e`ram`\u003c/span\u003e and `volume.size` arguments, these being mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e.\n\u003e\n\u003e In all the other cases (**ENTERPRISE** servers) you have to provide values for \u003cspan pulumi-lang-nodejs=\"`cores`\" pulumi-lang-dotnet=\"`Cores`\" pulumi-lang-go=\"`cores`\" pulumi-lang-python=\"`cores`\" pulumi-lang-yaml=\"`cores`\" pulumi-lang-java=\"`cores`\"\u003e`cores`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ram`\" pulumi-lang-dotnet=\"`Ram`\" pulumi-lang-go=\"`ram`\" pulumi-lang-python=\"`ram`\" pulumi-lang-yaml=\"`ram`\" pulumi-lang-java=\"`ram`\"\u003e`ram`\u003c/span\u003e and `volume size`.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "(Computed)[integer] The amount of memory for the server in MB.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images.  Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. Does not support `~` expansion to homedir in the given path. This property is immutable.\n",
                    "deprecationMessage": "Will be renamed to\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003ein the future, to allow users to set both the ssh key path or directly the ssh key"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support `~` expansion to homedir in the given path.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "(Computed)[string] Server usages: * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - Server usages: [ENTERPRISE](https://docs.ionos.com/cloud/compute-services/compute-engine/dedicated-core) now named dedicated core, [CUBE](https://docs.ionos.com/cloud/compute-services/cubes) or [VCPU](https://docs.ionos.com/cloud/compute-services/compute-engine/vcpu-server). This property is immutable.\n"
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the server. E.g: `RUNNING`, `SHUTOFF` or `SUSPENDED`. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise(dedicated core).\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/ServerVolume:ServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "requiredInputs": [
                "datacenterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Server resources.\n",
                "properties": {
                    "allowReplace": {
                        "type": "boolean",
                        "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n"
                    },
                    "availabilityZone": {
                        "type": "string",
                        "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "bootCdrom": {
                        "type": "string",
                        "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)(Computed)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                        "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                    },
                    "bootImage": {
                        "type": "string",
                        "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                    },
                    "bootVolume": {
                        "type": "string",
                        "description": "The associated boot volume.\n"
                    },
                    "cores": {
                        "type": "integer",
                        "description": "(Computed)[integer] Number of server CPU cores.\n"
                    },
                    "cpuFamily": {
                        "type": "string",
                        "description": "[string] CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource. E.g.: \"INTEL_SKYLAKE\" or \"INTEL_XEON\".\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "firewallruleId": {
                        "type": "string",
                        "description": "The associated firewall rule.\n"
                    },
                    "firewallruleIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The associated firewall rules.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "(Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                    },
                    "imageName": {
                        "type": "string",
                        "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "imagePassword": {
                        "type": "string",
                        "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                        "secret": true
                    },
                    "inlineVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list with the IDs for the volumes that are defined inside the server resource.\n"
                    },
                    "labels": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/ServerLabel:ServerLabel"
                        },
                        "description": "[set] A label can be seen as an object with only two required fields: \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, both of the \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e type. Please check the example presented above to see how a \u003cspan pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\"\u003e`label`\u003c/span\u003e can be used in the plan. A server can have multiple labels.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the server.\n"
                    },
                    "nic": {
                        "$ref": "#/types/ionoscloud:compute/ServerNic:ServerNic",
                        "description": "See the Nic section.\n"
                    },
                    "nicMultiQueue": {
                        "type": "boolean",
                        "description": "[bool] Activate or deactivate the Multi Queue feature on all NICs of the server. This feature is beneficial to enable when the NICs are experiencing performance issues (e.g. low throughput). Toggling this feature will also initiate a restart of the server. If the specified value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the feature will be activated; if it is not specified or set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the feature will be deactivated. The feature cannot be activated for `CUBE` servers.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efields are immutable.\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e If you want to create a **CUBE** server, you have to provide the \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e. In this case you can not set \u003cspan pulumi-lang-nodejs=\"`cores`\" pulumi-lang-dotnet=\"`Cores`\" pulumi-lang-go=\"`cores`\" pulumi-lang-python=\"`cores`\" pulumi-lang-yaml=\"`cores`\" pulumi-lang-java=\"`cores`\"\u003e`cores`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ram`\" pulumi-lang-dotnet=\"`Ram`\" pulumi-lang-go=\"`ram`\" pulumi-lang-python=\"`ram`\" pulumi-lang-yaml=\"`ram`\" pulumi-lang-java=\"`ram`\"\u003e`ram`\u003c/span\u003e and `volume.size` arguments, these being mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e.\n\u003e\n\u003e In all the other cases (**ENTERPRISE** servers) you have to provide values for \u003cspan pulumi-lang-nodejs=\"`cores`\" pulumi-lang-dotnet=\"`Cores`\" pulumi-lang-go=\"`cores`\" pulumi-lang-python=\"`cores`\" pulumi-lang-yaml=\"`cores`\" pulumi-lang-java=\"`cores`\"\u003e`cores`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ram`\" pulumi-lang-dotnet=\"`Ram`\" pulumi-lang-go=\"`ram`\" pulumi-lang-python=\"`ram`\" pulumi-lang-yaml=\"`ram`\" pulumi-lang-java=\"`ram`\"\u003e`ram`\u003c/span\u003e and `volume size`.\n"
                    },
                    "primaryIp": {
                        "type": "string",
                        "description": "The associated IP address.\n"
                    },
                    "primaryNic": {
                        "type": "string",
                        "description": "The associated NIC.\n"
                    },
                    "ram": {
                        "type": "integer",
                        "description": "(Computed)[integer] The amount of memory for the server in MB.\n"
                    },
                    "securityGroupsIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of Security Group IDs for the\n"
                    },
                    "sshKeyPaths": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images.  Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. Does not support `~` expansion to homedir in the given path. This property is immutable.\n",
                        "deprecationMessage": "Will be renamed to\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003ein the future, to allow users to set both the ssh key path or directly the ssh key"
                    },
                    "sshKeys": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support `~` expansion to homedir in the given path.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "[string] The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n",
                        "willReplaceOnChanges": true
                    },
                    "type": {
                        "type": "string",
                        "description": "(Computed)[string] Server usages: * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - Server usages: [ENTERPRISE](https://docs.ionos.com/cloud/compute-services/compute-engine/dedicated-core) now named dedicated core, [CUBE](https://docs.ionos.com/cloud/compute-services/cubes) or [VCPU](https://docs.ionos.com/cloud/compute-services/compute-engine/vcpu-server). This property is immutable.\n"
                    },
                    "vmState": {
                        "type": "string",
                        "description": "[string] Sets the power state of the server. E.g: `RUNNING`, `SHUTOFF` or `SUSPENDED`. SUSPENDED state is only valid for cube. SHUTOFF state is only valid for enterprise(dedicated core).\n"
                    },
                    "volume": {
                        "$ref": "#/types/ionoscloud:compute/ServerVolume:ServerVolume",
                        "description": "See the Volume section.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/share:Share": {
            "description": "Manages **Shares** and list shares permissions granted to the group members for each shared resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleGroup = new ionoscloud.compute.Group(\"example\", {\n    name: \"Group Example\",\n    createDatacenter: true,\n    createSnapshot: true,\n    reserveIp: true,\n    accessActivityLog: true,\n    createPcc: true,\n    s3Privilege: true,\n    createBackupUnit: true,\n    createInternetAccess: true,\n    createK8sCluster: true,\n});\nconst exampleShare = new ionoscloud.compute.Share(\"example\", {\n    groupId: exampleGroup.id,\n    resourceId: example.id,\n    editPrivilege: true,\n    sharePrivilege: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_group = ionoscloud.compute.Group(\"example\",\n    name=\"Group Example\",\n    create_datacenter=True,\n    create_snapshot=True,\n    reserve_ip=True,\n    access_activity_log=True,\n    create_pcc=True,\n    s3_privilege=True,\n    create_backup_unit=True,\n    create_internet_access=True,\n    create_k8s_cluster=True)\nexample_share = ionoscloud.compute.Share(\"example\",\n    group_id=example_group.id,\n    resource_id=example.id,\n    edit_privilege=True,\n    share_privilege=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleGroup = new Ionoscloud.Compute.Group(\"example\", new()\n    {\n        Name = \"Group Example\",\n        CreateDatacenter = true,\n        CreateSnapshot = true,\n        ReserveIp = true,\n        AccessActivityLog = true,\n        CreatePcc = true,\n        S3Privilege = true,\n        CreateBackupUnit = true,\n        CreateInternetAccess = true,\n        CreateK8sCluster = true,\n    });\n\n    var exampleShare = new Ionoscloud.Compute.Share(\"example\", new()\n    {\n        GroupId = exampleGroup.Id,\n        ResourceId = example.Id,\n        EditPrivilege = true,\n        SharePrivilege = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGroup, err := compute.NewGroup(ctx, \"example\", \u0026compute.GroupArgs{\n\t\t\tName:                 pulumi.String(\"Group Example\"),\n\t\t\tCreateDatacenter:     pulumi.Bool(true),\n\t\t\tCreateSnapshot:       pulumi.Bool(true),\n\t\t\tReserveIp:            pulumi.Bool(true),\n\t\t\tAccessActivityLog:    pulumi.Bool(true),\n\t\t\tCreatePcc:            pulumi.Bool(true),\n\t\t\tS3Privilege:          pulumi.Bool(true),\n\t\t\tCreateBackupUnit:     pulumi.Bool(true),\n\t\t\tCreateInternetAccess: pulumi.Bool(true),\n\t\t\tCreateK8sCluster:     pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewShare(ctx, \"example\", \u0026compute.ShareArgs{\n\t\t\tGroupId:        exampleGroup.ID(),\n\t\t\tResourceId:     example.ID(),\n\t\t\tEditPrivilege:  pulumi.Bool(true),\n\t\t\tSharePrivilege: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Group;\nimport com.ionoscloud.pulumi.ionoscloud.compute.GroupArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Share;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ShareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder()\n            .name(\"Group Example\")\n            .createDatacenter(true)\n            .createSnapshot(true)\n            .reserveIp(true)\n            .accessActivityLog(true)\n            .createPcc(true)\n            .s3Privilege(true)\n            .createBackupUnit(true)\n            .createInternetAccess(true)\n            .createK8sCluster(true)\n            .build());\n\n        var exampleShare = new Share(\"exampleShare\", ShareArgs.builder()\n            .groupId(exampleGroup.id())\n            .resourceId(example.id())\n            .editPrivilege(true)\n            .sharePrivilege(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleGroup:\n    type: ionoscloud:compute:Group\n    name: example\n    properties:\n      name: Group Example\n      createDatacenter: true\n      createSnapshot: true\n      reserveIp: true\n      accessActivityLog: true\n      createPcc: true\n      s3Privilege: true\n      createBackupUnit: true\n      createInternetAccess: true\n      createK8sCluster: true\n  exampleShare:\n    type: ionoscloud:compute:Share\n    name: example\n    properties:\n      groupId: ${exampleGroup.id}\n      resourceId: ${example.id}\n      editPrivilege: true\n      sharePrivilege: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Share can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_share.myshare group uuid/resource uuid\n```\n\n",
            "properties": {
                "editPrivilege": {
                    "type": "boolean",
                    "description": "[Boolean] The group has permission to edit privileges on this resource.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "[string] The ID of the specific group containing the resource to update.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "[string] The ID of the specific resource to update.\n"
                },
                "sharePrivilege": {
                    "type": "boolean",
                    "description": "[Boolean] The group has permission to share this resource.\n\n⚠️ **Note:** There is a limitation due to which the creation of several shares at the same time leads\nto an error. To avoid this, `parallelism=1` can be used when running `pulumi up` command in order\nto create the resources in a sequential manner. Another solution involves the usage of \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e\nattributes inside the \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Share`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Share`\" pulumi-lang-go=\"`compute.Share`\" pulumi-lang-python=\"`compute.Share`\" pulumi-lang-yaml=\"`ionoscloud.compute.Share`\" pulumi-lang-java=\"`ionoscloud.compute.Share`\"\u003e`ionoscloud.compute.Share`\u003c/span\u003e resource to enforce the sequential creation of the shares.\n"
                }
            },
            "required": [
                "groupId",
                "resourceId"
            ],
            "inputProperties": {
                "editPrivilege": {
                    "type": "boolean",
                    "description": "[Boolean] The group has permission to edit privileges on this resource.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "[string] The ID of the specific group containing the resource to update.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "[string] The ID of the specific resource to update.\n"
                },
                "sharePrivilege": {
                    "type": "boolean",
                    "description": "[Boolean] The group has permission to share this resource.\n\n⚠️ **Note:** There is a limitation due to which the creation of several shares at the same time leads\nto an error. To avoid this, `parallelism=1` can be used when running `pulumi up` command in order\nto create the resources in a sequential manner. Another solution involves the usage of \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e\nattributes inside the \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Share`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Share`\" pulumi-lang-go=\"`compute.Share`\" pulumi-lang-python=\"`compute.Share`\" pulumi-lang-yaml=\"`ionoscloud.compute.Share`\" pulumi-lang-java=\"`ionoscloud.compute.Share`\"\u003e`ionoscloud.compute.Share`\u003c/span\u003e resource to enforce the sequential creation of the shares.\n"
                }
            },
            "requiredInputs": [
                "groupId",
                "resourceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Share resources.\n",
                "properties": {
                    "editPrivilege": {
                        "type": "boolean",
                        "description": "[Boolean] The group has permission to edit privileges on this resource.\n"
                    },
                    "groupId": {
                        "type": "string",
                        "description": "[string] The ID of the specific group containing the resource to update.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "[string] The ID of the specific resource to update.\n"
                    },
                    "sharePrivilege": {
                        "type": "boolean",
                        "description": "[Boolean] The group has permission to share this resource.\n\n⚠️ **Note:** There is a limitation due to which the creation of several shares at the same time leads\nto an error. To avoid this, `parallelism=1` can be used when running `pulumi up` command in order\nto create the resources in a sequential manner. Another solution involves the usage of \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`dependsOn`\u003c/span\u003e\nattributes inside the \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Share`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Share`\" pulumi-lang-go=\"`compute.Share`\" pulumi-lang-python=\"`compute.Share`\" pulumi-lang-yaml=\"`ionoscloud.compute.Share`\" pulumi-lang-java=\"`ionoscloud.compute.Share`\"\u003e`ionoscloud.compute.Share`\u003c/span\u003e resource to enforce the sequential creation of the shares.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/snapshot:Snapshot": {
            "description": "Manages [Snapshots](https://docs.ionos.com/cloud/storage-and-backup/images-snapshots/snapshots) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = ionoscloud.compute.getImage({\n    type: \"HDD\",\n    imageAlias: \"ubuntu:latest\",\n    location: \"us/las\",\n});\nconst exampleDatacenter = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: exampleDatacenter.id,\n    cores: 1,\n    ram: 1024,\n    imageName: example.then(example =\u003e example.id),\n    imagePassword: serverImagePassword.result,\n    type: \"ENTERPRISE\",\n    volume: {\n        name: \"system\",\n        size: 5,\n        diskType: \"SSD Standard\",\n        userData: \"foo\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"ZONE_1\",\n    },\n});\nconst testSnapshot = new ionoscloud.compute.Snapshot(\"test_snapshot\", {\n    datacenterId: exampleDatacenter.id,\n    volumeId: exampleServer.bootVolume,\n    name: \"Snapshot Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.get_image(type=\"HDD\",\n    image_alias=\"ubuntu:latest\",\n    location=\"us/las\")\nexample_datacenter = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example_datacenter.id,\n    public=True,\n    name=\"Lan Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example_datacenter.id,\n    cores=1,\n    ram=1024,\n    image_name=example.id,\n    image_password=server_image_password[\"result\"],\n    type=\"ENTERPRISE\",\n    volume={\n        \"name\": \"system\",\n        \"size\": 5,\n        \"disk_type\": \"SSD Standard\",\n        \"user_data\": \"foo\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"ZONE_1\",\n    })\ntest_snapshot = ionoscloud.compute.Snapshot(\"test_snapshot\",\n    datacenter_id=example_datacenter.id,\n    volume_id=example_server.boot_volume,\n    name=\"Snapshot Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        Type = \"HDD\",\n        ImageAlias = \"ubuntu:latest\",\n        Location = \"us/las\",\n    });\n\n    var exampleDatacenter = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = exampleDatacenter.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = example.Apply(getImageResult =\u003e getImageResult.Id),\n        ImagePassword = serverImagePassword.Result,\n        Type = \"ENTERPRISE\",\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 5,\n            DiskType = \"SSD Standard\",\n            UserData = \"foo\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"ZONE_1\",\n        },\n    });\n\n    var testSnapshot = new Ionoscloud.Compute.Snapshot(\"test_snapshot\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        VolumeId = exampleServer.BootVolume,\n        Name = \"Snapshot Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tType:       pulumi.StringRef(\"HDD\"),\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest\"),\n\t\t\tLocation:   pulumi.StringRef(\"us/las\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDatacenter, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: exampleDatacenter.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:  exampleDatacenter.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(pulumi.String(example.Id)),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tType:          pulumi.String(\"ENTERPRISE\"),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"system\"),\n\t\t\t\tSize:             pulumi.Int(5),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tUserData:         pulumi.String(\"foo\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"ZONE_1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSnapshot(ctx, \"test_snapshot\", \u0026compute.SnapshotArgs{\n\t\t\tDatacenterId: exampleDatacenter.ID(),\n\t\t\tVolumeId:     exampleServer.BootVolume,\n\t\t\tName:         pulumi.String(\"Snapshot Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Snapshot;\nimport com.ionoscloud.pulumi.ionoscloud.compute.SnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .type(\"HDD\")\n            .imageAlias(\"ubuntu:latest\")\n            .location(\"us/las\")\n            .build());\n\n        var exampleDatacenter = new Datacenter(\"exampleDatacenter\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(exampleDatacenter.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(example.id())\n            .imagePassword(serverImagePassword.result())\n            .type(\"ENTERPRISE\")\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(5)\n                .diskType(\"SSD Standard\")\n                .userData(\"foo\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"ZONE_1\")\n                .build())\n            .build());\n\n        var testSnapshot = new Snapshot(\"testSnapshot\", SnapshotArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .volumeId(exampleServer.bootVolume())\n            .name(\"Snapshot Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: example\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      public: true\n      name: Lan Example\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${exampleDatacenter.id}\n      cores: 1\n      ram: 1024\n      imageName: ${example.id}\n      imagePassword: ${serverImagePassword.result}\n      type: ENTERPRISE\n      volume:\n        name: system\n        size: 5\n        diskType: SSD Standard\n        userData: foo\n        bus: VIRTIO\n        availabilityZone: ZONE_1\n  testSnapshot:\n    type: ionoscloud:compute:Snapshot\n    name: test_snapshot\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      volumeId: ${exampleServer.bootVolume}\n      name: Snapshot Example\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        type: HDD\n        imageAlias: ubuntu:latest\n        location: us/las\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Snapshot can be imported using the `snapshot id`, e.g.\n\n```sh\nterraform import ionoscloud_snapshot.mysnapshot snapshot uuid\n```\n\n",
            "properties": {
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of CPU hot plug (no reboot required). Can only be updated.\n"
                },
                "cpuHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of CPU hot unplug (no reboot required)\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of the Virtual Data Center.\n"
                },
                "description": {
                    "type": "string",
                    "description": "(Computed)[string] Human readable description\n"
                },
                "discScsiHotPlug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot plug (no reboot required)\n"
                },
                "discScsiHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of SCSI drive hot unplug (no reboot required). This works only for non-Windows virtual Machines.\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of Virt-IO drive hot plug (no reboot required). Can only be updated.\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of Virt-IO drive hot unplug (no reboot required). This works only for non-Windows virtual Machines. Can only be updated.\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "(Computed)[string] OS type of this Snapshot\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of that image/snapshot\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the snapshot.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of nic hot plug (no reboot required). Can only be updated.\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of nic hot unplug (no reboot required). Can only be updated.\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of memory hot plug (no reboot required). Can only be updated.\n"
                },
                "ramHotUnplug": {
                    "type": "boolean",
                    "description": "Is capable of memory hot unplug (no reboot required)\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "(Computed)[boolean] Indicates if the image requires the legacy BIOS for compatibility or specific needs. During creation, if an image is used, the value will be inherited from the image, regardless of the value set in the plan. Later on, the value can be updated.\n"
                },
                "secAuthProtection": {
                    "type": "boolean",
                    "description": "Boolean value representing if the snapshot requires extra protection e.g. two factor protection\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the image in GB\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "[string] The ID of the specific volume to take the snapshot from.\n"
                }
            },
            "required": [
                "cpuHotPlug",
                "cpuHotUnplug",
                "datacenterId",
                "description",
                "discScsiHotPlug",
                "discScsiHotUnplug",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "licenceType",
                "location",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "ramHotPlug",
                "ramHotUnplug",
                "requireLegacyBios",
                "secAuthProtection",
                "size",
                "volumeId"
            ],
            "inputProperties": {
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of CPU hot plug (no reboot required). Can only be updated.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of the Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "(Computed)[string] Human readable description\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of Virt-IO drive hot plug (no reboot required). Can only be updated.\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of Virt-IO drive hot unplug (no reboot required). This works only for non-Windows virtual Machines. Can only be updated.\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "(Computed)[string] OS type of this Snapshot\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location of that image/snapshot\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the snapshot.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of nic hot plug (no reboot required). Can only be updated.\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of nic hot unplug (no reboot required). Can only be updated.\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "(Computed)[string] Is capable of memory hot plug (no reboot required). Can only be updated.\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "(Computed)[boolean] Indicates if the image requires the legacy BIOS for compatibility or specific needs. During creation, if an image is used, the value will be inherited from the image, regardless of the value set in the plan. Later on, the value can be updated.\n"
                },
                "secAuthProtection": {
                    "type": "boolean",
                    "description": "Boolean value representing if the snapshot requires extra protection e.g. two factor protection\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "[string] The ID of the specific volume to take the snapshot from.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "datacenterId",
                "volumeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Snapshot resources.\n",
                "properties": {
                    "cpuHotPlug": {
                        "type": "boolean",
                        "description": "(Computed)[string] Is capable of CPU hot plug (no reboot required). Can only be updated.\n"
                    },
                    "cpuHotUnplug": {
                        "type": "boolean",
                        "description": "Is capable of CPU hot unplug (no reboot required)\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of the Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "description": {
                        "type": "string",
                        "description": "(Computed)[string] Human readable description\n"
                    },
                    "discScsiHotPlug": {
                        "type": "boolean",
                        "description": "Is capable of SCSI drive hot plug (no reboot required)\n"
                    },
                    "discScsiHotUnplug": {
                        "type": "boolean",
                        "description": "Is capable of SCSI drive hot unplug (no reboot required). This works only for non-Windows virtual Machines.\n"
                    },
                    "discVirtioHotPlug": {
                        "type": "boolean",
                        "description": "(Computed)[string] Is capable of Virt-IO drive hot plug (no reboot required). Can only be updated.\n"
                    },
                    "discVirtioHotUnplug": {
                        "type": "boolean",
                        "description": "(Computed)[string] Is capable of Virt-IO drive hot unplug (no reboot required). This works only for non-Windows virtual Machines. Can only be updated.\n"
                    },
                    "licenceType": {
                        "type": "string",
                        "description": "(Computed)[string] OS type of this Snapshot\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Location of that image/snapshot\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the snapshot.\n"
                    },
                    "nicHotPlug": {
                        "type": "boolean",
                        "description": "(Computed)[string] Is capable of nic hot plug (no reboot required). Can only be updated.\n"
                    },
                    "nicHotUnplug": {
                        "type": "boolean",
                        "description": "(Computed)[string] Is capable of nic hot unplug (no reboot required). Can only be updated.\n"
                    },
                    "ramHotPlug": {
                        "type": "boolean",
                        "description": "(Computed)[string] Is capable of memory hot plug (no reboot required). Can only be updated.\n"
                    },
                    "ramHotUnplug": {
                        "type": "boolean",
                        "description": "Is capable of memory hot unplug (no reboot required)\n"
                    },
                    "requireLegacyBios": {
                        "type": "boolean",
                        "description": "(Computed)[boolean] Indicates if the image requires the legacy BIOS for compatibility or specific needs. During creation, if an image is used, the value will be inherited from the image, regardless of the value set in the plan. Later on, the value can be updated.\n"
                    },
                    "secAuthProtection": {
                        "type": "boolean",
                        "description": "Boolean value representing if the snapshot requires extra protection e.g. two factor protection\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the image in GB\n"
                    },
                    "volumeId": {
                        "type": "string",
                        "description": "[string] The ID of the specific volume to take the snapshot from.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/targetGroup:TargetGroup": {
            "description": "Manages a [Target Group](https://docs.ionos.com/cloud/network-services/application-load-balancer/overview#target-group) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.TargetGroup(\"example\", {\n    name: \"Target Group Example\",\n    algorithm: \"ROUND_ROBIN\",\n    protocol: \"HTTP\",\n    protocolVersion: \"HTTP1\",\n    targets: [\n        {\n            ip: \"22.231.2.2\",\n            port: 8080,\n            weight: 1,\n            proxyProtocol: \"v2ssl\",\n            healthCheckEnabled: true,\n            maintenanceEnabled: false,\n        },\n        {\n            ip: \"22.231.2.3\",\n            port: 8081,\n            weight: 124,\n            proxyProtocol: \"v2\",\n            healthCheckEnabled: false,\n            maintenanceEnabled: false,\n        },\n    ],\n    healthCheck: {\n        checkTimeout: 5000,\n        checkInterval: 50000,\n        retries: 2,\n    },\n    httpHealthCheck: {\n        path: \"/.\",\n        method: \"GET\",\n        matchType: \"STATUS_CODE\",\n        response: \"200\",\n        regex: true,\n        negate: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.TargetGroup(\"example\",\n    name=\"Target Group Example\",\n    algorithm=\"ROUND_ROBIN\",\n    protocol=\"HTTP\",\n    protocol_version=\"HTTP1\",\n    targets=[\n        {\n            \"ip\": \"22.231.2.2\",\n            \"port\": 8080,\n            \"weight\": 1,\n            \"proxy_protocol\": \"v2ssl\",\n            \"health_check_enabled\": True,\n            \"maintenance_enabled\": False,\n        },\n        {\n            \"ip\": \"22.231.2.3\",\n            \"port\": 8081,\n            \"weight\": 124,\n            \"proxy_protocol\": \"v2\",\n            \"health_check_enabled\": False,\n            \"maintenance_enabled\": False,\n        },\n    ],\n    health_check={\n        \"check_timeout\": 5000,\n        \"check_interval\": 50000,\n        \"retries\": 2,\n    },\n    http_health_check={\n        \"path\": \"/.\",\n        \"method\": \"GET\",\n        \"match_type\": \"STATUS_CODE\",\n        \"response\": \"200\",\n        \"regex\": True,\n        \"negate\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.TargetGroup(\"example\", new()\n    {\n        Name = \"Target Group Example\",\n        Algorithm = \"ROUND_ROBIN\",\n        Protocol = \"HTTP\",\n        ProtocolVersion = \"HTTP1\",\n        Targets = new[]\n        {\n            new Ionoscloud.Compute.Inputs.TargetGroupTargetArgs\n            {\n                Ip = \"22.231.2.2\",\n                Port = 8080,\n                Weight = 1,\n                ProxyProtocol = \"v2ssl\",\n                HealthCheckEnabled = true,\n                MaintenanceEnabled = false,\n            },\n            new Ionoscloud.Compute.Inputs.TargetGroupTargetArgs\n            {\n                Ip = \"22.231.2.3\",\n                Port = 8081,\n                Weight = 124,\n                ProxyProtocol = \"v2\",\n                HealthCheckEnabled = false,\n                MaintenanceEnabled = false,\n            },\n        },\n        HealthCheck = new Ionoscloud.Compute.Inputs.TargetGroupHealthCheckArgs\n        {\n            CheckTimeout = 5000,\n            CheckInterval = 50000,\n            Retries = 2,\n        },\n        HttpHealthCheck = new Ionoscloud.Compute.Inputs.TargetGroupHttpHealthCheckArgs\n        {\n            Path = \"/.\",\n            Method = \"GET\",\n            MatchType = \"STATUS_CODE\",\n            Response = \"200\",\n            Regex = true,\n            Negate = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewTargetGroup(ctx, \"example\", \u0026compute.TargetGroupArgs{\n\t\t\tName:            pulumi.String(\"Target Group Example\"),\n\t\t\tAlgorithm:       pulumi.String(\"ROUND_ROBIN\"),\n\t\t\tProtocol:        pulumi.String(\"HTTP\"),\n\t\t\tProtocolVersion: pulumi.String(\"HTTP1\"),\n\t\t\tTargets: compute.TargetGroupTargetArray{\n\t\t\t\t\u0026compute.TargetGroupTargetArgs{\n\t\t\t\t\tIp:                 pulumi.String(\"22.231.2.2\"),\n\t\t\t\t\tPort:               pulumi.Int(8080),\n\t\t\t\t\tWeight:             pulumi.Int(1),\n\t\t\t\t\tProxyProtocol:      pulumi.String(\"v2ssl\"),\n\t\t\t\t\tHealthCheckEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaintenanceEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\t\u0026compute.TargetGroupTargetArgs{\n\t\t\t\t\tIp:                 pulumi.String(\"22.231.2.3\"),\n\t\t\t\t\tPort:               pulumi.Int(8081),\n\t\t\t\t\tWeight:             pulumi.Int(124),\n\t\t\t\t\tProxyProtocol:      pulumi.String(\"v2\"),\n\t\t\t\t\tHealthCheckEnabled: pulumi.Bool(false),\n\t\t\t\t\tMaintenanceEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthCheck: \u0026compute.TargetGroupHealthCheckArgs{\n\t\t\t\tCheckTimeout:  pulumi.Int(5000),\n\t\t\t\tCheckInterval: pulumi.Int(50000),\n\t\t\t\tRetries:       pulumi.Int(2),\n\t\t\t},\n\t\t\tHttpHealthCheck: \u0026compute.TargetGroupHttpHealthCheckArgs{\n\t\t\t\tPath:      pulumi.String(\"/.\"),\n\t\t\t\tMethod:    pulumi.String(\"GET\"),\n\t\t\t\tMatchType: pulumi.String(\"STATUS_CODE\"),\n\t\t\t\tResponse:  pulumi.String(\"200\"),\n\t\t\t\tRegex:     pulumi.Bool(true),\n\t\t\t\tNegate:    pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.TargetGroup;\nimport com.ionoscloud.pulumi.ionoscloud.compute.TargetGroupArgs;\nimport com.pulumi.ionoscloud.compute.inputs.TargetGroupTargetArgs;\nimport com.pulumi.ionoscloud.compute.inputs.TargetGroupHealthCheckArgs;\nimport com.pulumi.ionoscloud.compute.inputs.TargetGroupHttpHealthCheckArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new TargetGroup(\"example\", TargetGroupArgs.builder()\n            .name(\"Target Group Example\")\n            .algorithm(\"ROUND_ROBIN\")\n            .protocol(\"HTTP\")\n            .protocolVersion(\"HTTP1\")\n            .targets(            \n                TargetGroupTargetArgs.builder()\n                    .ip(\"22.231.2.2\")\n                    .port(8080)\n                    .weight(1)\n                    .proxyProtocol(\"v2ssl\")\n                    .healthCheckEnabled(true)\n                    .maintenanceEnabled(false)\n                    .build(),\n                TargetGroupTargetArgs.builder()\n                    .ip(\"22.231.2.3\")\n                    .port(8081)\n                    .weight(124)\n                    .proxyProtocol(\"v2\")\n                    .healthCheckEnabled(false)\n                    .maintenanceEnabled(false)\n                    .build())\n            .healthCheck(TargetGroupHealthCheckArgs.builder()\n                .checkTimeout(5000)\n                .checkInterval(50000)\n                .retries(2)\n                .build())\n            .httpHealthCheck(TargetGroupHttpHealthCheckArgs.builder()\n                .path(\"/.\")\n                .method(\"GET\")\n                .matchType(\"STATUS_CODE\")\n                .response(\"200\")\n                .regex(true)\n                .negate(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:TargetGroup\n    properties:\n      name: Target Group Example\n      algorithm: ROUND_ROBIN\n      protocol: HTTP\n      protocolVersion: HTTP1\n      targets:\n        - ip: 22.231.2.2\n          port: '8080'\n          weight: '1'\n          proxyProtocol: v2ssl\n          healthCheckEnabled: true\n          maintenanceEnabled: false\n        - ip: 22.231.2.3\n          port: '8081'\n          weight: '124'\n          proxyProtocol: v2\n          healthCheckEnabled: false\n          maintenanceEnabled: false\n      healthCheck:\n        checkTimeout: 5000\n        checkInterval: 50000\n        retries: 2\n      httpHealthCheck:\n        path: /.\n        method: GET\n        matchType: STATUS_CODE\n        response: '200'\n        regex: true\n        negate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Target Group can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_target_group.myTargetGroup target group uuid\n```\n\n",
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "[string] Balancing algorithm.\n"
                },
                "healthCheck": {
                    "$ref": "#/types/ionoscloud:compute/TargetGroupHealthCheck:TargetGroupHealthCheck",
                    "description": "Health check attributes for Target Group.\n"
                },
                "httpHealthCheck": {
                    "$ref": "#/types/ionoscloud:compute/TargetGroupHttpHealthCheck:TargetGroupHttpHealthCheck",
                    "description": "Http health check attributes for Target Group\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the target group.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Balancing protocol.\n"
                },
                "protocolVersion": {
                    "type": "string",
                    "description": "[string] The forwarding protocol version. Value is ignored when protocol is not 'HTTP'.\n"
                },
                "targets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/TargetGroupTarget:TargetGroupTarget"
                    },
                    "description": "[list] Array of items in the collection\n"
                }
            },
            "required": [
                "algorithm",
                "healthCheck",
                "httpHealthCheck",
                "name",
                "protocol",
                "protocolVersion",
                "targets"
            ],
            "inputProperties": {
                "algorithm": {
                    "type": "string",
                    "description": "[string] Balancing algorithm.\n"
                },
                "healthCheck": {
                    "$ref": "#/types/ionoscloud:compute/TargetGroupHealthCheck:TargetGroupHealthCheck",
                    "description": "Health check attributes for Target Group.\n"
                },
                "httpHealthCheck": {
                    "$ref": "#/types/ionoscloud:compute/TargetGroupHttpHealthCheck:TargetGroupHttpHealthCheck",
                    "description": "Http health check attributes for Target Group\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the target group.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Balancing protocol.\n"
                },
                "protocolVersion": {
                    "type": "string",
                    "description": "[string] The forwarding protocol version. Value is ignored when protocol is not 'HTTP'.\n"
                },
                "targets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/TargetGroupTarget:TargetGroupTarget"
                    },
                    "description": "[list] Array of items in the collection\n"
                }
            },
            "requiredInputs": [
                "algorithm",
                "protocol",
                "protocolVersion"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering TargetGroup resources.\n",
                "properties": {
                    "algorithm": {
                        "type": "string",
                        "description": "[string] Balancing algorithm.\n"
                    },
                    "healthCheck": {
                        "$ref": "#/types/ionoscloud:compute/TargetGroupHealthCheck:TargetGroupHealthCheck",
                        "description": "Health check attributes for Target Group.\n"
                    },
                    "httpHealthCheck": {
                        "$ref": "#/types/ionoscloud:compute/TargetGroupHttpHealthCheck:TargetGroupHttpHealthCheck",
                        "description": "Http health check attributes for Target Group\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the target group.\n"
                    },
                    "protocol": {
                        "type": "string",
                        "description": "[string] Balancing protocol.\n"
                    },
                    "protocolVersion": {
                        "type": "string",
                        "description": "[string] The forwarding protocol version. Value is ignored when protocol is not 'HTTP'.\n"
                    },
                    "targets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/TargetGroupTarget:TargetGroupTarget"
                        },
                        "description": "[list] Array of items in the collection\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/user:User": {
            "description": "Manages **Users** and list users and groups associated with that user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst group1 = new ionoscloud.compute.Group(\"group1\", {\n    name: \"group1\",\n    createDatacenter: true,\n    createSnapshot: true,\n    reserveIp: true,\n    accessActivityLog: false,\n    createK8sCluster: true,\n});\nconst group2 = new ionoscloud.compute.Group(\"group2\", {\n    name: \"group2\",\n    createDatacenter: true,\n    createSnapshot: true,\n    reserveIp: true,\n    accessActivityLog: false,\n    createK8sCluster: true,\n});\nconst group3 = new ionoscloud.compute.Group(\"group3\", {\n    name: \"group3\",\n    createDatacenter: true,\n    createSnapshot: true,\n    reserveIp: true,\n    accessActivityLog: false,\n});\nconst userPassword = new random.index.Password(\"user_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst example = new ionoscloud.compute.User(\"example\", {\n    firstName: \"example\",\n    lastName: \"example\",\n    email: \"unique@ionos.com\",\n    password: userPassword.result,\n    administrator: false,\n    forceSecAuth: false,\n    active: true,\n    groupIds: [\n        group1.id,\n        group2.id,\n        group3.id,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\ngroup1 = ionoscloud.compute.Group(\"group1\",\n    name=\"group1\",\n    create_datacenter=True,\n    create_snapshot=True,\n    reserve_ip=True,\n    access_activity_log=False,\n    create_k8s_cluster=True)\ngroup2 = ionoscloud.compute.Group(\"group2\",\n    name=\"group2\",\n    create_datacenter=True,\n    create_snapshot=True,\n    reserve_ip=True,\n    access_activity_log=False,\n    create_k8s_cluster=True)\ngroup3 = ionoscloud.compute.Group(\"group3\",\n    name=\"group3\",\n    create_datacenter=True,\n    create_snapshot=True,\n    reserve_ip=True,\n    access_activity_log=False)\nuser_password = random.Password(\"user_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nexample = ionoscloud.compute.User(\"example\",\n    first_name=\"example\",\n    last_name=\"example\",\n    email=\"unique@ionos.com\",\n    password=user_password[\"result\"],\n    administrator=False,\n    force_sec_auth=False,\n    active=True,\n    group_ids=[\n        group1.id,\n        group2.id,\n        group3.id,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var group1 = new Ionoscloud.Compute.Group(\"group1\", new()\n    {\n        Name = \"group1\",\n        CreateDatacenter = true,\n        CreateSnapshot = true,\n        ReserveIp = true,\n        AccessActivityLog = false,\n        CreateK8sCluster = true,\n    });\n\n    var group2 = new Ionoscloud.Compute.Group(\"group2\", new()\n    {\n        Name = \"group2\",\n        CreateDatacenter = true,\n        CreateSnapshot = true,\n        ReserveIp = true,\n        AccessActivityLog = false,\n        CreateK8sCluster = true,\n    });\n\n    var group3 = new Ionoscloud.Compute.Group(\"group3\", new()\n    {\n        Name = \"group3\",\n        CreateDatacenter = true,\n        CreateSnapshot = true,\n        ReserveIp = true,\n        AccessActivityLog = false,\n    });\n\n    var userPassword = new Random.Index.Password(\"user_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var example = new Ionoscloud.Compute.User(\"example\", new()\n    {\n        FirstName = \"example\",\n        LastName = \"example\",\n        Email = \"unique@ionos.com\",\n        Password = userPassword.Result,\n        Administrator = false,\n        ForceSecAuth = false,\n        Active = true,\n        GroupIds = new[]\n        {\n            group1.Id,\n            group2.Id,\n            group3.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup1, err := compute.NewGroup(ctx, \"group1\", \u0026compute.GroupArgs{\n\t\t\tName:              pulumi.String(\"group1\"),\n\t\t\tCreateDatacenter:  pulumi.Bool(true),\n\t\t\tCreateSnapshot:    pulumi.Bool(true),\n\t\t\tReserveIp:         pulumi.Bool(true),\n\t\t\tAccessActivityLog: pulumi.Bool(false),\n\t\t\tCreateK8sCluster:  pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroup2, err := compute.NewGroup(ctx, \"group2\", \u0026compute.GroupArgs{\n\t\t\tName:              pulumi.String(\"group2\"),\n\t\t\tCreateDatacenter:  pulumi.Bool(true),\n\t\t\tCreateSnapshot:    pulumi.Bool(true),\n\t\t\tReserveIp:         pulumi.Bool(true),\n\t\t\tAccessActivityLog: pulumi.Bool(false),\n\t\t\tCreateK8sCluster:  pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroup3, err := compute.NewGroup(ctx, \"group3\", \u0026compute.GroupArgs{\n\t\t\tName:              pulumi.String(\"group3\"),\n\t\t\tCreateDatacenter:  pulumi.Bool(true),\n\t\t\tCreateSnapshot:    pulumi.Bool(true),\n\t\t\tReserveIp:         pulumi.Bool(true),\n\t\t\tAccessActivityLog: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuserPassword, err := random.NewPassword(ctx, \"user_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewUser(ctx, \"example\", \u0026compute.UserArgs{\n\t\t\tFirstName:     pulumi.String(\"example\"),\n\t\t\tLastName:      pulumi.String(\"example\"),\n\t\t\tEmail:         pulumi.String(\"unique@ionos.com\"),\n\t\t\tPassword:      userPassword.Result,\n\t\t\tAdministrator: pulumi.Bool(false),\n\t\t\tForceSecAuth:  pulumi.Bool(false),\n\t\t\tActive:        pulumi.Bool(true),\n\t\t\tGroupIds: pulumi.StringArray{\n\t\t\t\tgroup1.ID(),\n\t\t\t\tgroup2.ID(),\n\t\t\t\tgroup3.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Group;\nimport com.ionoscloud.pulumi.ionoscloud.compute.GroupArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.User;\nimport com.ionoscloud.pulumi.ionoscloud.compute.UserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var group1 = new Group(\"group1\", GroupArgs.builder()\n            .name(\"group1\")\n            .createDatacenter(true)\n            .createSnapshot(true)\n            .reserveIp(true)\n            .accessActivityLog(false)\n            .createK8sCluster(true)\n            .build());\n\n        var group2 = new Group(\"group2\", GroupArgs.builder()\n            .name(\"group2\")\n            .createDatacenter(true)\n            .createSnapshot(true)\n            .reserveIp(true)\n            .accessActivityLog(false)\n            .createK8sCluster(true)\n            .build());\n\n        var group3 = new Group(\"group3\", GroupArgs.builder()\n            .name(\"group3\")\n            .createDatacenter(true)\n            .createSnapshot(true)\n            .reserveIp(true)\n            .accessActivityLog(false)\n            .build());\n\n        var userPassword = new Password(\"userPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var example = new User(\"example\", UserArgs.builder()\n            .firstName(\"example\")\n            .lastName(\"example\")\n            .email(\"unique@ionos.com\")\n            .password(userPassword.result())\n            .administrator(false)\n            .forceSecAuth(false)\n            .active(true)\n            .groupIds(            \n                group1.id(),\n                group2.id(),\n                group3.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:User\n    properties:\n      firstName: example\n      lastName: example\n      email: unique@ionos.com\n      password: ${userPassword.result}\n      administrator: false\n      forceSecAuth: false\n      active: true\n      groupIds:\n        - ${group1.id}\n        - ${group2.id}\n        - ${group3.id}\n  group1:\n    type: ionoscloud:compute:Group\n    properties:\n      name: group1\n      createDatacenter: true\n      createSnapshot: true\n      reserveIp: true\n      accessActivityLog: false\n      createK8sCluster: true\n  group2:\n    type: ionoscloud:compute:Group\n    properties:\n      name: group2\n      createDatacenter: true\n      createSnapshot: true\n      reserveIp: true\n      accessActivityLog: false\n      createK8sCluster: true\n  group3:\n    type: ionoscloud:compute:Group\n    properties:\n      name: group3\n      createDatacenter: true\n      createSnapshot: true\n      reserveIp: true\n      accessActivityLog: false\n  userPassword:\n    type: random:password\n    name: user_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Write Only Password That Is Not Saved In State:\n\nNote: Requires Terraform 1.11 or higher. In this way, the password is not saved in state. \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e must be used along with \u003cspan pulumi-lang-nodejs=\"`passwordWoVersion`\" pulumi-lang-dotnet=\"`PasswordWoVersion`\" pulumi-lang-go=\"`passwordWoVersion`\" pulumi-lang-python=\"`password_wo_version`\" pulumi-lang-yaml=\"`passwordWoVersion`\" pulumi-lang-java=\"`passwordWoVersion`\"\u003e`passwordWoVersion`\u003c/span\u003e. Updating \u003cspan pulumi-lang-nodejs=\"`passwordWoVersion`\" pulumi-lang-dotnet=\"`PasswordWoVersion`\" pulumi-lang-go=\"`passwordWoVersion`\" pulumi-lang-python=\"`password_wo_version`\" pulumi-lang-yaml=\"`passwordWoVersion`\" pulumi-lang-java=\"`passwordWoVersion`\"\u003e`passwordWoVersion`\u003c/span\u003e will trigger an update to the value of \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst userPassword = new random.index.Password(\"user_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst example = new ionoscloud.compute.User(\"example\", {\n    firstName: \"example\",\n    lastName: \"example\",\n    email: \"unique@ionos.com\",\n    passwordWo: userPassword.result,\n    passwordWoVersion: 1,\n    administrator: false,\n    forceSecAuth: false,\n    active: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nuser_password = random.Password(\"user_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nexample = ionoscloud.compute.User(\"example\",\n    first_name=\"example\",\n    last_name=\"example\",\n    email=\"unique@ionos.com\",\n    password_wo=user_password[\"result\"],\n    password_wo_version=1,\n    administrator=False,\n    force_sec_auth=False,\n    active=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var userPassword = new Random.Index.Password(\"user_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var example = new Ionoscloud.Compute.User(\"example\", new()\n    {\n        FirstName = \"example\",\n        LastName = \"example\",\n        Email = \"unique@ionos.com\",\n        PasswordWo = userPassword.Result,\n        PasswordWoVersion = 1,\n        Administrator = false,\n        ForceSecAuth = false,\n        Active = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuserPassword, err := random.NewPassword(ctx, \"user_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewUser(ctx, \"example\", \u0026compute.UserArgs{\n\t\t\tFirstName:         pulumi.String(\"example\"),\n\t\t\tLastName:          pulumi.String(\"example\"),\n\t\t\tEmail:             pulumi.String(\"unique@ionos.com\"),\n\t\t\tPasswordWo:        userPassword.Result,\n\t\t\tPasswordWoVersion: pulumi.Int(1),\n\t\t\tAdministrator:     pulumi.Bool(false),\n\t\t\tForceSecAuth:      pulumi.Bool(false),\n\t\t\tActive:            pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.User;\nimport com.ionoscloud.pulumi.ionoscloud.compute.UserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var userPassword = new Password(\"userPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var example = new User(\"example\", UserArgs.builder()\n            .firstName(\"example\")\n            .lastName(\"example\")\n            .email(\"unique@ionos.com\")\n            .passwordWo(userPassword.result())\n            .passwordWoVersion(1)\n            .administrator(false)\n            .forceSecAuth(false)\n            .active(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:User\n    properties:\n      firstName: example\n      lastName: example\n      email: unique@ionos.com\n      passwordWo: ${userPassword.result}\n      passwordWoVersion: '1'\n      administrator: false\n      forceSecAuth: false\n      active: true\n  userPassword:\n    type: random:password\n    name: user_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource User can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_user.myuser user uuid\n```\n\n",
            "properties": {
                "active": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the user is active\n"
                },
                "administrator": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the user has administrative rights. Administrators do not need to be managed in groups, as they automatically have access to all resources associated with the contract.\n"
                },
                "email": {
                    "type": "string",
                    "description": "[string] An e-mail address for the user.\n"
                },
                "firstName": {
                    "type": "string",
                    "description": "[string] A first name for the user.\n"
                },
                "forceSecAuth": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if secure (two-factor) authentication should be forced for the user (true) or not (false).\n"
                },
                "groupIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[Set] The groups that this user will be a member of\n**NOTE:** Group_ids field cannot be used at the same time with\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003efield in group resource. Trying to add the same user to the same group in both ways in the same plan will result in a cyclic dependency error.\n**NOTE:** \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e requires Teraform 1.11 or higher.\n"
                },
                "lastName": {
                    "type": "string",
                    "description": "[string] A last name for the user.\n"
                },
                "password": {
                    "type": "string",
                    "description": "A password for the user. If you are using terraform 1.11 or higher, you can use \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e to avoid storing the password in the state file.",
                    "secret": true
                },
                "passwordWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nuser password. This value is always marked as sensitive in the plan output, regardless of \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e. Additionally, `write-only` values are never stored to state. \u003cspan pulumi-lang-nodejs=\"`passwordWoVersion`\" pulumi-lang-dotnet=\"`PasswordWoVersion`\" pulumi-lang-go=\"`passwordWoVersion`\" pulumi-lang-python=\"`password_wo_version`\" pulumi-lang-yaml=\"`passwordWoVersion`\" pulumi-lang-java=\"`passwordWoVersion`\"\u003e`passwordWoVersion`\u003c/span\u003e can be used to trigger an update and is required with this argument. In Terraform CLI version 0.15 and later, this may require additional configuration handling for certain scenarios. For more information, see the Terraform v0.15 Upgrade Guide.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "Used together with \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e to trigger an update. Increment this value when an update to the \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e is required.\n"
                },
                "s3CanonicalUserId": {
                    "type": "string",
                    "description": "Canonical (IONOS Object Storage) id of the user for a given identity\n"
                },
                "secAuthActive": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if secure authentication is active for the user or not. *it can not be used in create requests - can be used in update*\n"
                }
            },
            "required": [
                "email",
                "firstName",
                "lastName",
                "s3CanonicalUserId",
                "secAuthActive"
            ],
            "inputProperties": {
                "active": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the user is active\n"
                },
                "administrator": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if the user has administrative rights. Administrators do not need to be managed in groups, as they automatically have access to all resources associated with the contract.\n"
                },
                "email": {
                    "type": "string",
                    "description": "[string] An e-mail address for the user.\n"
                },
                "firstName": {
                    "type": "string",
                    "description": "[string] A first name for the user.\n"
                },
                "forceSecAuth": {
                    "type": "boolean",
                    "description": "[Boolean] Indicates if secure (two-factor) authentication should be forced for the user (true) or not (false).\n"
                },
                "groupIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[Set] The groups that this user will be a member of\n**NOTE:** Group_ids field cannot be used at the same time with\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003efield in group resource. Trying to add the same user to the same group in both ways in the same plan will result in a cyclic dependency error.\n**NOTE:** \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e requires Teraform 1.11 or higher.\n"
                },
                "lastName": {
                    "type": "string",
                    "description": "[string] A last name for the user.\n"
                },
                "password": {
                    "type": "string",
                    "description": "A password for the user. If you are using terraform 1.11 or higher, you can use \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e to avoid storing the password in the state file.",
                    "secret": true
                },
                "passwordWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nuser password. This value is always marked as sensitive in the plan output, regardless of \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e. Additionally, `write-only` values are never stored to state. \u003cspan pulumi-lang-nodejs=\"`passwordWoVersion`\" pulumi-lang-dotnet=\"`PasswordWoVersion`\" pulumi-lang-go=\"`passwordWoVersion`\" pulumi-lang-python=\"`password_wo_version`\" pulumi-lang-yaml=\"`passwordWoVersion`\" pulumi-lang-java=\"`passwordWoVersion`\"\u003e`passwordWoVersion`\u003c/span\u003e can be used to trigger an update and is required with this argument. In Terraform CLI version 0.15 and later, this may require additional configuration handling for certain scenarios. For more information, see the Terraform v0.15 Upgrade Guide.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "Used together with \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e to trigger an update. Increment this value when an update to the \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e is required.\n"
                }
            },
            "requiredInputs": [
                "email",
                "firstName",
                "lastName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering User resources.\n",
                "properties": {
                    "active": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if the user is active\n"
                    },
                    "administrator": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if the user has administrative rights. Administrators do not need to be managed in groups, as they automatically have access to all resources associated with the contract.\n"
                    },
                    "email": {
                        "type": "string",
                        "description": "[string] An e-mail address for the user.\n"
                    },
                    "firstName": {
                        "type": "string",
                        "description": "[string] A first name for the user.\n"
                    },
                    "forceSecAuth": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if secure (two-factor) authentication should be forced for the user (true) or not (false).\n"
                    },
                    "groupIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[Set] The groups that this user will be a member of\n**NOTE:** Group_ids field cannot be used at the same time with\u003cspan pulumi-lang-nodejs=\" userIds \" pulumi-lang-dotnet=\" UserIds \" pulumi-lang-go=\" userIds \" pulumi-lang-python=\" user_ids \" pulumi-lang-yaml=\" userIds \" pulumi-lang-java=\" userIds \"\u003e userIds \u003c/span\u003efield in group resource. Trying to add the same user to the same group in both ways in the same plan will result in a cyclic dependency error.\n**NOTE:** \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e requires Teraform 1.11 or higher.\n"
                    },
                    "lastName": {
                        "type": "string",
                        "description": "[string] A last name for the user.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "A password for the user. If you are using terraform 1.11 or higher, you can use \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e instead of \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e to avoid storing the password in the state file.",
                        "secret": true
                    },
                    "passwordWo": {
                        "type": "string",
                        "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nuser password. This value is always marked as sensitive in the plan output, regardless of \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e. Additionally, `write-only` values are never stored to state. \u003cspan pulumi-lang-nodejs=\"`passwordWoVersion`\" pulumi-lang-dotnet=\"`PasswordWoVersion`\" pulumi-lang-go=\"`passwordWoVersion`\" pulumi-lang-python=\"`password_wo_version`\" pulumi-lang-yaml=\"`passwordWoVersion`\" pulumi-lang-java=\"`passwordWoVersion`\"\u003e`passwordWoVersion`\u003c/span\u003e can be used to trigger an update and is required with this argument. In Terraform CLI version 0.15 and later, this may require additional configuration handling for certain scenarios. For more information, see the Terraform v0.15 Upgrade Guide.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "Used together with \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e to trigger an update. Increment this value when an update to the \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`passwordWo`\u003c/span\u003e is required.\n"
                    },
                    "s3CanonicalUserId": {
                        "type": "string",
                        "description": "Canonical (IONOS Object Storage) id of the user for a given identity\n"
                    },
                    "secAuthActive": {
                        "type": "boolean",
                        "description": "[Boolean] Indicates if secure authentication is active for the user or not. *it can not be used in create requests - can be used in update*\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/vCPUServer:VCPUServer": {
            "description": "A [vCPU Server](https://docs.ionos.com/cloud/compute-services/compute-engine/vcpu-server) that you create is a new Virtual Machine (VM) provisioned and hosted in one of IONOS' physical data centers. A vCPU Server behaves exactly like physical servers and you can use them either standalone or in combination with other IONOS Cloud products.\n\nThese servers are configured with virtual CPUs and distributed among multiple users sharing the same physical server. The performance of your vCPU Server relies on various factors, including the underlying CPU of the physical server, VM configurations, and the current load on the physical server.\n\nThis section lists the limitations of [vCPU Servers](https://docs.ionos.com/cloud/compute-services/compute-engine/vcpu-server#limitations-of-vcpu-servers)\n\n## Example Usage\n\n### VCPU Server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = ionoscloud.compute.getImage({\n    type: \"HDD\",\n    imageAlias: \"ubuntu:latest\",\n    location: \"de/txl\",\n});\nconst exampleDatacenter = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"de/txl\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: exampleDatacenter.location,\n    size: 4,\n    name: \"IP Block Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleVCPUServer = new ionoscloud.compute.VCPUServer(\"example\", {\n    name: \"VCPU Server Example\",\n    datacenterId: exampleDatacenter.id,\n    cores: 1,\n    ram: 1024,\n    imageName: example.then(example =\u003e example.id),\n    imagePassword: serverImagePassword.result,\n    volume: {\n        name: \"system\",\n        size: 5,\n        diskType: \"SSD Standard\",\n        userData: \"foo\",\n        bus: \"VIRTIO\",\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"system\",\n        dhcp: true,\n        firewallActive: true,\n        firewallType: \"BIDIRECTIONAL\",\n        ips: [\n            exampleIPBlock.ips[0],\n            exampleIPBlock.ips[1],\n        ],\n        firewall: {\n            protocol: \"TCP\",\n            name: \"SSH\",\n            portRangeStart: 22,\n            portRangeEnd: 22,\n            sourceMac: \"00:0a:95:9d:68:17\",\n            sourceIp: exampleIPBlock.ips[2],\n            targetIp: exampleIPBlock.ips[3],\n            type: \"EGRESS\",\n        },\n    },\n    labels: [\n        {\n            key: \"labelkey1\",\n            value: \"labelvalue1\",\n        },\n        {\n            key: \"labelkey2\",\n            value: \"labelvalue2\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.get_image(type=\"HDD\",\n    image_alias=\"ubuntu:latest\",\n    location=\"de/txl\")\nexample_datacenter = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"de/txl\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example_datacenter.id,\n    public=True,\n    name=\"Lan Example\")\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=example_datacenter.location,\n    size=4,\n    name=\"IP Block Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_vcpu_server = ionoscloud.compute.VCPUServer(\"example\",\n    name=\"VCPU Server Example\",\n    datacenter_id=example_datacenter.id,\n    cores=1,\n    ram=1024,\n    image_name=example.id,\n    image_password=server_image_password[\"result\"],\n    volume={\n        \"name\": \"system\",\n        \"size\": 5,\n        \"disk_type\": \"SSD Standard\",\n        \"user_data\": \"foo\",\n        \"bus\": \"VIRTIO\",\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"system\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n        \"firewall_type\": \"BIDIRECTIONAL\",\n        \"ips\": [\n            example_ip_block.ips[0],\n            example_ip_block.ips[1],\n        ],\n        \"firewall\": {\n            \"protocol\": \"TCP\",\n            \"name\": \"SSH\",\n            \"portRangeStart\": 22,\n            \"portRangeEnd\": 22,\n            \"sourceMac\": \"00:0a:95:9d:68:17\",\n            \"sourceIp\": example_ip_block.ips[2],\n            \"targetIp\": example_ip_block.ips[3],\n            \"type\": \"EGRESS\",\n        },\n    },\n    labels=[\n        {\n            \"key\": \"labelkey1\",\n            \"value\": \"labelvalue1\",\n        },\n        {\n            \"key\": \"labelkey2\",\n            \"value\": \"labelvalue2\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        Type = \"HDD\",\n        ImageAlias = \"ubuntu:latest\",\n        Location = \"de/txl\",\n    });\n\n    var exampleDatacenter = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"de/txl\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = exampleDatacenter.Location,\n        Size = 4,\n        Name = \"IP Block Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleVCPUServer = new Ionoscloud.Compute.VCPUServer(\"example\", new()\n    {\n        Name = \"VCPU Server Example\",\n        DatacenterId = exampleDatacenter.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = example.Apply(getImageResult =\u003e getImageResult.Id),\n        ImagePassword = serverImagePassword.Result,\n        Volume = new Ionoscloud.Compute.Inputs.VCPUServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 5,\n            DiskType = \"SSD Standard\",\n            UserData = \"foo\",\n            Bus = \"VIRTIO\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.VCPUServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"system\",\n            Dhcp = true,\n            FirewallActive = true,\n            FirewallType = \"BIDIRECTIONAL\",\n            Ips = new[]\n            {\n                exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n                exampleIPBlock.Ips.Apply(ips =\u003e ips[1]),\n            },\n            Firewall = \n            {\n                { \"protocol\", \"TCP\" },\n                { \"name\", \"SSH\" },\n                { \"portRangeStart\", 22 },\n                { \"portRangeEnd\", 22 },\n                { \"sourceMac\", \"00:0a:95:9d:68:17\" },\n                { \"sourceIp\", exampleIPBlock.Ips.Apply(ips =\u003e ips[2]) },\n                { \"targetIp\", exampleIPBlock.Ips.Apply(ips =\u003e ips[3]) },\n                { \"type\", \"EGRESS\" },\n            },\n        },\n        Labels = new[]\n        {\n            new Ionoscloud.Compute.Inputs.VCPUServerLabelArgs\n            {\n                Key = \"labelkey1\",\n                Value = \"labelvalue1\",\n            },\n            new Ionoscloud.Compute.Inputs.VCPUServerLabelArgs\n            {\n                Key = \"labelkey2\",\n                Value = \"labelvalue2\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tType:       pulumi.StringRef(\"HDD\"),\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest\"),\n\t\t\tLocation:   pulumi.StringRef(\"de/txl\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDatacenter, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"de/txl\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: exampleDatacenter.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: exampleDatacenter.Location,\n\t\t\tSize:     pulumi.Int(4),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVCPUServer(ctx, \"example\", \u0026compute.VCPUServerArgs{\n\t\t\tName:          pulumi.String(\"VCPU Server Example\"),\n\t\t\tDatacenterId:  exampleDatacenter.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(pulumi.String(example.Id)),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tVolume: \u0026compute.VCPUServerVolumeArgs{\n\t\t\t\tName:     pulumi.String(\"system\"),\n\t\t\t\tSize:     pulumi.Int(5),\n\t\t\t\tDiskType: pulumi.String(\"SSD Standard\"),\n\t\t\t\tUserData: pulumi.String(\"foo\"),\n\t\t\t\tBus:      pulumi.String(\"VIRTIO\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.VCPUServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"system\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\tFirewallType:   pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[1], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tFirewall: map[string]interface{}{\n\t\t\t\t\t\"protocol\":       \"TCP\",\n\t\t\t\t\t\"name\":           \"SSH\",\n\t\t\t\t\t\"portRangeStart\": 22,\n\t\t\t\t\t\"portRangeEnd\":   22,\n\t\t\t\t\t\"sourceMac\":      \"00:0a:95:9d:68:17\",\n\t\t\t\t\t\"sourceIp\": exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[2], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"targetIp\": exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[3], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"type\": \"EGRESS\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: compute.VCPUServerLabelArray{\n\t\t\t\t\u0026compute.VCPUServerLabelArgs{\n\t\t\t\t\tKey:   pulumi.String(\"labelkey1\"),\n\t\t\t\t\tValue: pulumi.String(\"labelvalue1\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.VCPUServerLabelArgs{\n\t\t\t\t\tKey:   pulumi.String(\"labelkey2\"),\n\t\t\t\t\tValue: pulumi.String(\"labelvalue2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.VCPUServer;\nimport com.ionoscloud.pulumi.ionoscloud.compute.VCPUServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.VCPUServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.VCPUServerNicArgs;\nimport com.pulumi.ionoscloud.compute.inputs.VCPUServerLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .type(\"HDD\")\n            .imageAlias(\"ubuntu:latest\")\n            .location(\"de/txl\")\n            .build());\n\n        var exampleDatacenter = new Datacenter(\"exampleDatacenter\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"de/txl\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(exampleDatacenter.location())\n            .size(4)\n            .name(\"IP Block Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleVCPUServer = new VCPUServer(\"exampleVCPUServer\", VCPUServerArgs.builder()\n            .name(\"VCPU Server Example\")\n            .datacenterId(exampleDatacenter.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(example.id())\n            .imagePassword(serverImagePassword.result())\n            .volume(VCPUServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(5)\n                .diskType(\"SSD Standard\")\n                .userData(\"foo\")\n                .bus(\"VIRTIO\")\n                .build())\n            .nic(VCPUServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"system\")\n                .dhcp(true)\n                .firewallActive(true)\n                .firewallType(\"BIDIRECTIONAL\")\n                .ips(                \n                    exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]),\n                    exampleIPBlock.ips().applyValue(_ips -\u003e _ips[1]))\n                .firewall(Map.ofEntries(\n                    Map.entry(\"protocol\", \"TCP\"),\n                    Map.entry(\"name\", \"SSH\"),\n                    Map.entry(\"portRangeStart\", 22),\n                    Map.entry(\"portRangeEnd\", 22),\n                    Map.entry(\"sourceMac\", \"00:0a:95:9d:68:17\"),\n                    Map.entry(\"sourceIp\", exampleIPBlock.ips().applyValue(_ips -\u003e _ips[2])),\n                    Map.entry(\"targetIp\", exampleIPBlock.ips().applyValue(_ips -\u003e _ips[3])),\n                    Map.entry(\"type\", \"EGRESS\")\n                ))\n                .build())\n            .labels(            \n                VCPUServerLabelArgs.builder()\n                    .key(\"labelkey1\")\n                    .value(\"labelvalue1\")\n                    .build(),\n                VCPUServerLabelArgs.builder()\n                    .key(\"labelkey2\")\n                    .value(\"labelvalue2\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: example\n    properties:\n      name: Datacenter Example\n      location: de/txl\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      public: true\n      name: Lan Example\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: ${exampleDatacenter.location}\n      size: 4\n      name: IP Block Example\n  exampleVCPUServer:\n    type: ionoscloud:compute:VCPUServer\n    name: example\n    properties:\n      name: VCPU Server Example\n      datacenterId: ${exampleDatacenter.id}\n      cores: 1\n      ram: 1024\n      imageName: ${example.id}\n      imagePassword: ${serverImagePassword.result}\n      volume:\n        name: system\n        size: 5\n        diskType: SSD Standard\n        userData: foo\n        bus: VIRTIO\n      nic:\n        lan: ${exampleLan.id}\n        name: system\n        dhcp: true\n        firewallActive: true\n        firewallType: BIDIRECTIONAL\n        ips:\n          - ${exampleIPBlock.ips[0]}\n          - ${exampleIPBlock.ips[1]}\n        firewall:\n          protocol: TCP\n          name: SSH\n          portRangeStart: 22\n          portRangeEnd: 22\n          sourceMac: 00:0a:95:9d:68:17\n          sourceIp: ${exampleIPBlock.ips[2]}\n          targetIp: ${exampleIPBlock.ips[3]}\n          type: EGRESS\n      labels:\n        - key: labelkey1\n          value: labelvalue1\n        - key: labelkey2\n          value: labelvalue2\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        type: HDD\n        imageAlias: ubuntu:latest\n        location: de/txl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\nPlease note that for any secondary volume, you need to set the **licence_type** property to **UNKNOWN**\n\n⚠️ **Note:** Important for deleting an \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e rule from within a list of inline resources defined on the same nic. There is one limitation to removing one firewall rule\nfrom the middle of the list of \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e rules. Terraform will actually modify the existing rules and delete the last one.\nMore details here. There is a workaround described in the issue \nthat involves moving the resources in the list prior to deletion.\n`terraform state mv \u003cresource-name\u003e.\u003cresource-id\u003e[\u003ci\u003e] \u003cresource-name\u003e.\u003cresource-id\u003e[\u003cj\u003e]`\n\n## Import\n\nResource VCPU Server can be imported using the `resource id` and the `datacenter id`, for example, passing only resource id and datacenter id means that the first nic found linked to the server will be attached to it.\n\n```sh\nterraform import ionoscloud_vcpu_server.myserver datacenter uuid/server uuid\n```\nOptionally, you can pass \u003cspan pulumi-lang-nodejs=\"`primaryNic`\" pulumi-lang-dotnet=\"`PrimaryNic`\" pulumi-lang-go=\"`primaryNic`\" pulumi-lang-python=\"`primary_nic`\" pulumi-lang-yaml=\"`primaryNic`\" pulumi-lang-java=\"`primaryNic`\"\u003e`primaryNic`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`firewallruleId`\" pulumi-lang-dotnet=\"`FirewallruleId`\" pulumi-lang-go=\"`firewallruleId`\" pulumi-lang-python=\"`firewallrule_id`\" pulumi-lang-yaml=\"`firewallruleId`\" pulumi-lang-java=\"`firewallruleId`\"\u003e`firewallruleId`\u003c/span\u003e so terraform will know to import also the first nic and firewall rule (if it exists on the server):\n```sh\nterraform import ionoscloud_vcpu_server.myserver datacenter uuid/server uuid/primary nic id/firewall rule id\n```\n\n",
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n"
                },
                "bootCdrom": {
                    "type": "string",
                    "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                    "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "bootVolume": {
                    "type": "string",
                    "description": "The associated boot volume.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "[integer] Number of server CPU cores.\n"
                },
                "cpuFamily": {
                    "type": "string"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "firewallruleId": {
                    "type": "string",
                    "description": "The associated firewall rule.\n"
                },
                "firewallruleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The associated firewall rules.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] The password for the image.\n",
                    "secret": true
                },
                "inlineVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list with the IDs for the volumes that are defined inside the server resource.\n"
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/VCPUServerLabel:VCPUServerLabel"
                    },
                    "description": "A label can be seen as an object with only two required fields: \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, both of the \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e type. Please check the example presented above to see how a \u003cspan pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\"\u003e`label`\u003c/span\u003e can be used in the plan. A server can have multiple labels.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/VCPUServerNic:VCPUServerNic",
                    "description": "See the Nic section.\n"
                },
                "nicMultiQueue": {
                    "type": "boolean",
                    "description": "[bool] Activate or deactivate the Multi Queue feature on all NICs of the server. This feature is beneficial to enable when the NICs are experiencing performance issues (e.g. low throughput). Toggling this feature will also initiate a restart of the server. If the specified value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the feature will be activated; if it is not specified or set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the feature will be deactivated.\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efield is immutable.\n"
                },
                "primaryIp": {
                    "type": "string",
                    "description": "The associated IP address.\n"
                },
                "primaryNic": {
                    "type": "string",
                    "description": "The associated NIC.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[integer] The amount of memory for the server in MB.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support `~` expansion to homedir in the given path.\n"
                },
                "type": {
                    "type": "string"
                },
                "vmState": {
                    "type": "string",
                    "description": "Sets the power state of the vcpu server. Possible values: `RUNNING` or `SHUTOFF`."
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/VCPUServerVolume:VCPUServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "required": [
                "availabilityZone",
                "bootCdrom",
                "bootImage",
                "bootVolume",
                "cores",
                "cpuFamily",
                "datacenterId",
                "firewallruleId",
                "firewallruleIds",
                "hostname",
                "imageName",
                "imagePassword",
                "inlineVolumeIds",
                "name",
                "primaryIp",
                "primaryNic",
                "ram",
                "type",
                "vmState",
                "volume"
            ],
            "inputProperties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "bootCdrom": {
                    "type": "string",
                    "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                    "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "[integer] Number of server CPU cores.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "firewallruleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The associated firewall rules.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] The password for the image.\n",
                    "secret": true
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:compute/VCPUServerLabel:VCPUServerLabel"
                    },
                    "description": "A label can be seen as an object with only two required fields: \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, both of the \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e type. Please check the example presented above to see how a \u003cspan pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\"\u003e`label`\u003c/span\u003e can be used in the plan. A server can have multiple labels.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:compute/VCPUServerNic:VCPUServerNic",
                    "description": "See the Nic section.\n"
                },
                "nicMultiQueue": {
                    "type": "boolean",
                    "description": "[bool] Activate or deactivate the Multi Queue feature on all NICs of the server. This feature is beneficial to enable when the NICs are experiencing performance issues (e.g. low throughput). Toggling this feature will also initiate a restart of the server. If the specified value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the feature will be activated; if it is not specified or set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the feature will be deactivated.\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efield is immutable.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[integer] The amount of memory for the server in MB.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support `~` expansion to homedir in the given path.\n",
                    "willReplaceOnChanges": true
                },
                "vmState": {
                    "type": "string",
                    "description": "Sets the power state of the vcpu server. Possible values: `RUNNING` or `SHUTOFF`."
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:compute/VCPUServerVolume:VCPUServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "requiredInputs": [
                "cores",
                "datacenterId",
                "ram",
                "volume"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VCPUServer resources.\n",
                "properties": {
                    "availabilityZone": {
                        "type": "string",
                        "description": "[string] The availability zone in which the server should exist. E.g: `AUTO`, `ZONE_1`, `ZONE_2`. This property is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "bootCdrom": {
                        "type": "string",
                        "description": "***DEPRECATED*** Please refer to\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-dotnet=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-go=\" compute.BootDeviceSelection \" pulumi-lang-python=\" compute.BootDeviceSelection \" pulumi-lang-yaml=\" ionoscloud.compute.BootDeviceSelection \" pulumi-lang-java=\" ionoscloud.compute.BootDeviceSelection \"\u003e ionoscloud.compute.BootDeviceSelection \u003c/span\u003e(Optional)[string] The associated boot drive, if any. Must be the UUID of a bootable CDROM image that can be retrieved using the\u003cspan pulumi-lang-nodejs=\" ionoscloud.compute.getImage \" pulumi-lang-dotnet=\" ionoscloud.compute.getImage \" pulumi-lang-go=\" compute.getImage \" pulumi-lang-python=\" compute_get_image \" pulumi-lang-yaml=\" ionoscloud.compute.getImage \" pulumi-lang-java=\" ionoscloud.compute.getImage \"\u003e ionoscloud.compute.getImage \u003c/span\u003edata source.\n",
                        "deprecationMessage": "Please use the 'ionoscloud_server_boot_device_selection' resource for managing the boot device of the server."
                    },
                    "bootImage": {
                        "type": "string",
                        "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                    },
                    "bootVolume": {
                        "type": "string",
                        "description": "The associated boot volume.\n"
                    },
                    "cores": {
                        "type": "integer",
                        "description": "[integer] Number of server CPU cores.\n"
                    },
                    "cpuFamily": {
                        "type": "string"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "firewallruleId": {
                        "type": "string",
                        "description": "The associated firewall rule.\n"
                    },
                    "firewallruleIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The associated firewall rules.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "(Computed)[string] The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server\n"
                    },
                    "imageName": {
                        "type": "string",
                        "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "imagePassword": {
                        "type": "string",
                        "description": "[string] The password for the image.\n",
                        "secret": true
                    },
                    "inlineVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list with the IDs for the volumes that are defined inside the server resource.\n"
                    },
                    "labels": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/VCPUServerLabel:VCPUServerLabel"
                        },
                        "description": "A label can be seen as an object with only two required fields: \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, both of the \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e type. Please check the example presented above to see how a \u003cspan pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\"\u003e`label`\u003c/span\u003e can be used in the plan. A server can have multiple labels.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the server.\n"
                    },
                    "nic": {
                        "$ref": "#/types/ionoscloud:compute/VCPUServerNic:VCPUServerNic",
                        "description": "See the Nic section.\n"
                    },
                    "nicMultiQueue": {
                        "type": "boolean",
                        "description": "[bool] Activate or deactivate the Multi Queue feature on all NICs of the server. This feature is beneficial to enable when the NICs are experiencing performance issues (e.g. low throughput). Toggling this feature will also initiate a restart of the server. If the specified value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the feature will be activated; if it is not specified or set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the feature will be deactivated.\n\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efield is immutable.\n"
                    },
                    "primaryIp": {
                        "type": "string",
                        "description": "The associated IP address.\n"
                    },
                    "primaryNic": {
                        "type": "string",
                        "description": "The associated NIC.\n"
                    },
                    "ram": {
                        "type": "integer",
                        "description": "[integer] The amount of memory for the server in MB.\n"
                    },
                    "securityGroupsIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of Security Group IDs for the resource.\n"
                    },
                    "sshKeys": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Immutable List of absolute or relative paths to files containing public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Public SSH keys are set on the image as authorized keys for appropriate SSH login to the instance using the corresponding private key. This field may only be set in creation requests. When reading, it always returns null. SSH keys are only supported if a public Linux image is used for the volume creation. Does not support `~` expansion to homedir in the given path.\n",
                        "willReplaceOnChanges": true
                    },
                    "type": {
                        "type": "string"
                    },
                    "vmState": {
                        "type": "string",
                        "description": "Sets the power state of the vcpu server. Possible values: `RUNNING` or `SHUTOFF`."
                    },
                    "volume": {
                        "$ref": "#/types/ionoscloud:compute/VCPUServerVolume:VCPUServerVolume",
                        "description": "See the Volume section.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:compute/volume:Volume": {
            "description": "Manages a [Volume](https://docs.ionos.com/cloud/storage-and-backup/block-storage) on IonosCloud.\n\n## Example Usage\n\nA primary volume will be created with the server. If there is a need for additional volumes, this resource handles it.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = ionoscloud.compute.getImage({\n    type: \"HDD\",\n    cloudInit: \"V1\",\n    imageAlias: \"ubuntu:latest\",\n    location: \"us/las\",\n});\nconst exampleDatacenter = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst exampleIPBlock = new ionoscloud.compute.IPBlock(\"example\", {\n    location: exampleDatacenter.location,\n    size: 4,\n    name: \"IP Block Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleServer = new ionoscloud.compute.Server(\"example\", {\n    name: \"Server Example\",\n    datacenterId: exampleDatacenter.id,\n    cores: 1,\n    ram: 1024,\n    imageName: example.then(example =\u003e example.name),\n    imagePassword: serverImagePassword.result,\n    type: \"ENTERPRISE\",\n    volume: {\n        name: \"system\",\n        size: 5,\n        diskType: \"SSD Standard\",\n        userData: \"foo\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"ZONE_1\",\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"system\",\n        dhcp: true,\n        firewallActive: true,\n        firewallType: \"BIDIRECTIONAL\",\n        ips: [\n            exampleIPBlock.ips[0],\n            exampleIPBlock.ips[1],\n        ],\n        firewall: {\n            protocol: \"TCP\",\n            name: \"SSH\",\n            portRangeStart: 22,\n            portRangeEnd: 22,\n            sourceMac: \"00:0a:95:9d:68:17\",\n            sourceIp: exampleIPBlock.ips[2],\n            targetIp: exampleIPBlock.ips[3],\n            type: \"EGRESS\",\n        },\n    },\n});\nconst volumeImagePassword = new random.index.Password(\"volume_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleVolume = new ionoscloud.compute.Volume(\"example\", {\n    datacenterId: exampleDatacenter.id,\n    serverId: exampleServer.id,\n    name: \"Volume Example\",\n    availabilityZone: \"ZONE_1\",\n    size: 5,\n    diskType: \"SSD Standard\",\n    bus: \"VIRTIO\",\n    imageName: example.then(example =\u003e example.name),\n    imagePassword: volumeImagePassword.result,\n    userData: \"foo\",\n});\nconst example2 = new ionoscloud.compute.Volume(\"example2\", {\n    datacenterId: exampleDatacenter.id,\n    serverId: exampleServer.id,\n    name: \"Another Volume Example\",\n    availabilityZone: \"ZONE_1\",\n    size: 5,\n    diskType: \"SSD Standard\",\n    bus: \"VIRTIO\",\n    licenceType: \"OTHER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.get_image(type=\"HDD\",\n    cloud_init=\"V1\",\n    image_alias=\"ubuntu:latest\",\n    location=\"us/las\")\nexample_datacenter = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example_datacenter.id,\n    public=True,\n    name=\"Lan Example\")\nexample_ip_block = ionoscloud.compute.IPBlock(\"example\",\n    location=example_datacenter.location,\n    size=4,\n    name=\"IP Block Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_server = ionoscloud.compute.Server(\"example\",\n    name=\"Server Example\",\n    datacenter_id=example_datacenter.id,\n    cores=1,\n    ram=1024,\n    image_name=example.name,\n    image_password=server_image_password[\"result\"],\n    type=\"ENTERPRISE\",\n    volume={\n        \"name\": \"system\",\n        \"size\": 5,\n        \"disk_type\": \"SSD Standard\",\n        \"user_data\": \"foo\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"ZONE_1\",\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"system\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n        \"firewall_type\": \"BIDIRECTIONAL\",\n        \"ips\": [\n            example_ip_block.ips[0],\n            example_ip_block.ips[1],\n        ],\n        \"firewall\": {\n            \"protocol\": \"TCP\",\n            \"name\": \"SSH\",\n            \"portRangeStart\": 22,\n            \"portRangeEnd\": 22,\n            \"sourceMac\": \"00:0a:95:9d:68:17\",\n            \"sourceIp\": example_ip_block.ips[2],\n            \"targetIp\": example_ip_block.ips[3],\n            \"type\": \"EGRESS\",\n        },\n    })\nvolume_image_password = random.Password(\"volume_image_password\",\n    length=16,\n    special=False)\nexample_volume = ionoscloud.compute.Volume(\"example\",\n    datacenter_id=example_datacenter.id,\n    server_id=example_server.id,\n    name=\"Volume Example\",\n    availability_zone=\"ZONE_1\",\n    size=5,\n    disk_type=\"SSD Standard\",\n    bus=\"VIRTIO\",\n    image_name=example.name,\n    image_password=volume_image_password[\"result\"],\n    user_data=\"foo\")\nexample2 = ionoscloud.compute.Volume(\"example2\",\n    datacenter_id=example_datacenter.id,\n    server_id=example_server.id,\n    name=\"Another Volume Example\",\n    availability_zone=\"ZONE_1\",\n    size=5,\n    disk_type=\"SSD Standard\",\n    bus=\"VIRTIO\",\n    licence_type=\"OTHER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        Type = \"HDD\",\n        CloudInit = \"V1\",\n        ImageAlias = \"ubuntu:latest\",\n        Location = \"us/las\",\n    });\n\n    var exampleDatacenter = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var exampleIPBlock = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = exampleDatacenter.Location,\n        Size = 4,\n        Name = \"IP Block Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleServer = new Ionoscloud.Compute.Server(\"example\", new()\n    {\n        Name = \"Server Example\",\n        DatacenterId = exampleDatacenter.Id,\n        Cores = 1,\n        Ram = 1024,\n        ImageName = example.Apply(getImageResult =\u003e getImageResult.Name),\n        ImagePassword = serverImagePassword.Result,\n        Type = \"ENTERPRISE\",\n        Volume = new Ionoscloud.Compute.Inputs.ServerVolumeArgs\n        {\n            Name = \"system\",\n            Size = 5,\n            DiskType = \"SSD Standard\",\n            UserData = \"foo\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"ZONE_1\",\n        },\n        Nic = new Ionoscloud.Compute.Inputs.ServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"system\",\n            Dhcp = true,\n            FirewallActive = true,\n            FirewallType = \"BIDIRECTIONAL\",\n            Ips = new[]\n            {\n                exampleIPBlock.Ips.Apply(ips =\u003e ips[0]),\n                exampleIPBlock.Ips.Apply(ips =\u003e ips[1]),\n            },\n            Firewall = \n            {\n                { \"protocol\", \"TCP\" },\n                { \"name\", \"SSH\" },\n                { \"portRangeStart\", 22 },\n                { \"portRangeEnd\", 22 },\n                { \"sourceMac\", \"00:0a:95:9d:68:17\" },\n                { \"sourceIp\", exampleIPBlock.Ips.Apply(ips =\u003e ips[2]) },\n                { \"targetIp\", exampleIPBlock.Ips.Apply(ips =\u003e ips[3]) },\n                { \"type\", \"EGRESS\" },\n            },\n        },\n    });\n\n    var volumeImagePassword = new Random.Index.Password(\"volume_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleVolume = new Ionoscloud.Compute.Volume(\"example\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        ServerId = exampleServer.Id,\n        Name = \"Volume Example\",\n        AvailabilityZone = \"ZONE_1\",\n        Size = 5,\n        DiskType = \"SSD Standard\",\n        Bus = \"VIRTIO\",\n        ImageName = example.Apply(getImageResult =\u003e getImageResult.Name),\n        ImagePassword = volumeImagePassword.Result,\n        UserData = \"foo\",\n    });\n\n    var example2 = new Ionoscloud.Compute.Volume(\"example2\", new()\n    {\n        DatacenterId = exampleDatacenter.Id,\n        ServerId = exampleServer.Id,\n        Name = \"Another Volume Example\",\n        AvailabilityZone = \"ZONE_1\",\n        Size = 5,\n        DiskType = \"SSD Standard\",\n        Bus = \"VIRTIO\",\n        LicenceType = \"OTHER\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tType:       pulumi.StringRef(\"HDD\"),\n\t\t\tCloudInit:  pulumi.StringRef(\"V1\"),\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest\"),\n\t\t\tLocation:   pulumi.StringRef(\"us/las\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDatacenter, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: exampleDatacenter.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleIPBlock, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: exampleDatacenter.Location,\n\t\t\tSize:     pulumi.Int(4),\n\t\t\tName:     pulumi.String(\"IP Block Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServer, err := compute.NewServer(ctx, \"example\", \u0026compute.ServerArgs{\n\t\t\tName:          pulumi.String(\"Server Example\"),\n\t\t\tDatacenterId:  exampleDatacenter.ID(),\n\t\t\tCores:         pulumi.Int(1),\n\t\t\tRam:           pulumi.Int(1024),\n\t\t\tImageName:     pulumi.String(pulumi.String(example.Name)),\n\t\t\tImagePassword: serverImagePassword.Result,\n\t\t\tType:          pulumi.String(\"ENTERPRISE\"),\n\t\t\tVolume: \u0026compute.ServerVolumeArgs{\n\t\t\t\tName:             pulumi.String(\"system\"),\n\t\t\t\tSize:             pulumi.Int(5),\n\t\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\t\tUserData:         pulumi.String(\"foo\"),\n\t\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone: pulumi.String(\"ZONE_1\"),\n\t\t\t},\n\t\t\tNic: \u0026compute.ServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"system\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\tFirewallType:   pulumi.String(\"BIDIRECTIONAL\"),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\texampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[1], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tFirewall: map[string]interface{}{\n\t\t\t\t\t\"protocol\":       \"TCP\",\n\t\t\t\t\t\"name\":           \"SSH\",\n\t\t\t\t\t\"portRangeStart\": 22,\n\t\t\t\t\t\"portRangeEnd\":   22,\n\t\t\t\t\t\"sourceMac\":      \"00:0a:95:9d:68:17\",\n\t\t\t\t\t\"sourceIp\": exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[2], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"targetIp\": exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[3], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\"type\": \"EGRESS\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolumeImagePassword, err := random.NewPassword(ctx, \"volume_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVolume(ctx, \"example\", \u0026compute.VolumeArgs{\n\t\t\tDatacenterId:     exampleDatacenter.ID(),\n\t\t\tServerId:         exampleServer.ID(),\n\t\t\tName:             pulumi.String(\"Volume Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_1\"),\n\t\t\tSize:             pulumi.Int(5),\n\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\tImageName:        pulumi.String(pulumi.String(example.Name)),\n\t\t\tImagePassword:    volumeImagePassword.Result,\n\t\t\tUserData:         pulumi.String(\"foo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVolume(ctx, \"example2\", \u0026compute.VolumeArgs{\n\t\t\tDatacenterId:     exampleDatacenter.ID(),\n\t\t\tServerId:         exampleServer.ID(),\n\t\t\tName:             pulumi.String(\"Another Volume Example\"),\n\t\t\tAvailabilityZone: pulumi.String(\"ZONE_1\"),\n\t\t\tSize:             pulumi.Int(5),\n\t\t\tDiskType:         pulumi.String(\"SSD Standard\"),\n\t\t\tBus:              pulumi.String(\"VIRTIO\"),\n\t\t\tLicenceType:      pulumi.String(\"OTHER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Server;\nimport com.ionoscloud.pulumi.ionoscloud.compute.ServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.ServerNicArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Volume;\nimport com.ionoscloud.pulumi.ionoscloud.compute.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .type(\"HDD\")\n            .cloudInit(\"V1\")\n            .imageAlias(\"ubuntu:latest\")\n            .location(\"us/las\")\n            .build());\n\n        var exampleDatacenter = new Datacenter(\"exampleDatacenter\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var exampleIPBlock = new IPBlock(\"exampleIPBlock\", IPBlockArgs.builder()\n            .location(exampleDatacenter.location())\n            .size(4)\n            .name(\"IP Block Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleServer = new Server(\"exampleServer\", ServerArgs.builder()\n            .name(\"Server Example\")\n            .datacenterId(exampleDatacenter.id())\n            .cores(1)\n            .ram(1024)\n            .imageName(example.name())\n            .imagePassword(serverImagePassword.result())\n            .type(\"ENTERPRISE\")\n            .volume(ServerVolumeArgs.builder()\n                .name(\"system\")\n                .size(5)\n                .diskType(\"SSD Standard\")\n                .userData(\"foo\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"ZONE_1\")\n                .build())\n            .nic(ServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"system\")\n                .dhcp(true)\n                .firewallActive(true)\n                .firewallType(\"BIDIRECTIONAL\")\n                .ips(                \n                    exampleIPBlock.ips().applyValue(_ips -\u003e _ips[0]),\n                    exampleIPBlock.ips().applyValue(_ips -\u003e _ips[1]))\n                .firewall(Map.ofEntries(\n                    Map.entry(\"protocol\", \"TCP\"),\n                    Map.entry(\"name\", \"SSH\"),\n                    Map.entry(\"portRangeStart\", 22),\n                    Map.entry(\"portRangeEnd\", 22),\n                    Map.entry(\"sourceMac\", \"00:0a:95:9d:68:17\"),\n                    Map.entry(\"sourceIp\", exampleIPBlock.ips().applyValue(_ips -\u003e _ips[2])),\n                    Map.entry(\"targetIp\", exampleIPBlock.ips().applyValue(_ips -\u003e _ips[3])),\n                    Map.entry(\"type\", \"EGRESS\")\n                ))\n                .build())\n            .build());\n\n        var volumeImagePassword = new Password(\"volumeImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleVolume = new Volume(\"exampleVolume\", VolumeArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .serverId(exampleServer.id())\n            .name(\"Volume Example\")\n            .availabilityZone(\"ZONE_1\")\n            .size(5)\n            .diskType(\"SSD Standard\")\n            .bus(\"VIRTIO\")\n            .imageName(example.name())\n            .imagePassword(volumeImagePassword.result())\n            .userData(\"foo\")\n            .build());\n\n        var example2 = new Volume(\"example2\", VolumeArgs.builder()\n            .datacenterId(exampleDatacenter.id())\n            .serverId(exampleServer.id())\n            .name(\"Another Volume Example\")\n            .availabilityZone(\"ZONE_1\")\n            .size(5)\n            .diskType(\"SSD Standard\")\n            .bus(\"VIRTIO\")\n            .licenceType(\"OTHER\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: example\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      public: true\n      name: Lan Example\n  exampleIPBlock:\n    type: ionoscloud:compute:IPBlock\n    name: example\n    properties:\n      location: ${exampleDatacenter.location}\n      size: 4\n      name: IP Block Example\n  exampleServer:\n    type: ionoscloud:compute:Server\n    name: example\n    properties:\n      name: Server Example\n      datacenterId: ${exampleDatacenter.id}\n      cores: 1\n      ram: 1024\n      imageName: ${example.name}\n      imagePassword: ${serverImagePassword.result}\n      type: ENTERPRISE\n      volume:\n        name: system\n        size: 5\n        diskType: SSD Standard\n        userData: foo\n        bus: VIRTIO\n        availabilityZone: ZONE_1\n      nic:\n        lan: ${exampleLan.id}\n        name: system\n        dhcp: true\n        firewallActive: true\n        firewallType: BIDIRECTIONAL\n        ips:\n          - ${exampleIPBlock.ips[0]}\n          - ${exampleIPBlock.ips[1]}\n        firewall:\n          protocol: TCP\n          name: SSH\n          portRangeStart: 22\n          portRangeEnd: 22\n          sourceMac: 00:0a:95:9d:68:17\n          sourceIp: ${exampleIPBlock.ips[2]}\n          targetIp: ${exampleIPBlock.ips[3]}\n          type: EGRESS\n  exampleVolume:\n    type: ionoscloud:compute:Volume\n    name: example\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      serverId: ${exampleServer.id}\n      name: Volume Example\n      availabilityZone: ZONE_1\n      size: 5\n      diskType: SSD Standard\n      bus: VIRTIO\n      imageName: ${example.name}\n      imagePassword: ${volumeImagePassword.result}\n      userData: foo\n  example2:\n    type: ionoscloud:compute:Volume\n    properties:\n      datacenterId: ${exampleDatacenter.id}\n      serverId: ${exampleServer.id}\n      name: Another Volume Example\n      availabilityZone: ZONE_1\n      size: 5\n      diskType: SSD Standard\n      bus: VIRTIO\n      licenceType: OTHER\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n  volumeImagePassword:\n    type: random:password\n    name: volume_image_password\n    properties:\n      length: 16\n      special: false\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        type: HDD\n        cloudInit: V1\n        imageAlias: ubuntu:latest\n        location: us/las\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Volume can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_volume.myvolume datacenter uuid/server uuid/volume uuid\n```\n\n",
            "properties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The storage availability zone assigned to the volume: AUTO, ZONE_1, ZONE_2, or ZONE_3. This property is immutable\n"
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "[string] The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n"
                },
                "bootServer": {
                    "type": "string",
                    "description": "[string] The UUID of the attached server.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "[Boolean] The bus type of the volume: VIRTIO or IDE.\n"
                },
                "cpuHotPlug": {
                    "type": "boolean",
                    "description": "[string] Is capable of CPU hot plug (no reboot required)\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "deviceNumber": {
                    "type": "integer",
                    "description": "The Logical Unit Number of the storage volume. Null for volumes not mounted to any VM.\n"
                },
                "discVirtioHotPlug": {
                    "type": "boolean",
                    "description": "[string] Is capable of Virt-IO drive hot plug (no reboot required)\n"
                },
                "discVirtioHotUnplug": {
                    "type": "boolean",
                    "description": "[string] Is capable of Virt-IO drive hot unplug (no reboot required). This works only for non-Windows virtual Machines.\n"
                },
                "diskType": {
                    "type": "string",
                    "description": "[string] The volume type: HDD or SSD. This property is immutable.\n"
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "(Computed) [boolean] Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if not previously set by the image used to create the volume. If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "image": {
                    "type": "string",
                    "description": "The image or snapshot UUID.\n"
                },
                "imageId": {
                    "type": "string"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshkeyPath`\" pulumi-lang-dotnet=\"`SshkeyPath`\" pulumi-lang-go=\"`sshkeyPath`\" pulumi-lang-python=\"`sshkey_path`\" pulumi-lang-yaml=\"`sshkeyPath`\" pulumi-lang-java=\"`sshkeyPath`\"\u003e`sshkeyPath`\u003c/span\u003e is not provided.\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`imageName`\u003c/span\u003e is not provided.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the volume.\n"
                },
                "nicHotPlug": {
                    "type": "boolean",
                    "description": "[string] Is capable of nic hot plug (no reboot required)\n"
                },
                "nicHotUnplug": {
                    "type": "boolean",
                    "description": "[string] Is capable of nic hot unplug (no reboot required)\n"
                },
                "pciSlot": {
                    "type": "integer",
                    "description": "The PCI slot number of the storage volume. Null for volumes not mounted to any VM.\n"
                },
                "ramHotPlug": {
                    "type": "boolean",
                    "description": "[string] Is capable of memory hot plug (no reboot required)\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "(Computed)[boolean] Indicates if the image requires the legacy BIOS for compatibility or specific needs. During creation, if an image is used, the value will be inherited from the image, regardless of the value set in the plan. Later on, the value can be updated.\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efields are immutable.\n\u003e If you want to create a **CUBE** server, the type of the inline volume must be set to **DAS**. In this case, you can not set the \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e argument since it is taken from the \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e you set in the server.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The ID of a server.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "[integer] The size of the volume in GB.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. This property is immutable.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. This property is immutable.\n"
                },
                "sshkey": {
                    "type": "string",
                    "description": "The associated public SSH key.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "[string] The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. This option will work only with cloud-init compatible images.\n"
                }
            },
            "required": [
                "availabilityZone",
                "backupUnitId",
                "bootServer",
                "bus",
                "cpuHotPlug",
                "datacenterId",
                "deviceNumber",
                "discVirtioHotPlug",
                "discVirtioHotUnplug",
                "diskType",
                "exposeSerial",
                "image",
                "imageId",
                "licenceType",
                "name",
                "nicHotPlug",
                "nicHotUnplug",
                "pciSlot",
                "ramHotPlug",
                "requireLegacyBios",
                "serverId",
                "size",
                "sshkey",
                "userData"
            ],
            "inputProperties": {
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The storage availability zone assigned to the volume: AUTO, ZONE_1, ZONE_2, or ZONE_3. This property is immutable\n"
                },
                "backupUnitId": {
                    "type": "string",
                    "description": "[string] The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n"
                },
                "bus": {
                    "type": "string",
                    "description": "[Boolean] The bus type of the volume: VIRTIO or IDE.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "diskType": {
                    "type": "string",
                    "description": "[string] The volume type: HDD or SSD. This property is immutable.\n"
                },
                "exposeSerial": {
                    "type": "boolean",
                    "description": "(Computed) [boolean] Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if not previously set by the image used to create the volume. If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshkeyPath`\" pulumi-lang-dotnet=\"`SshkeyPath`\" pulumi-lang-go=\"`sshkeyPath`\" pulumi-lang-python=\"`sshkey_path`\" pulumi-lang-yaml=\"`sshkeyPath`\" pulumi-lang-java=\"`sshkeyPath`\"\u003e`sshkeyPath`\u003c/span\u003e is not provided.\n"
                },
                "licenceType": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`imageName`\u003c/span\u003e is not provided.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the volume.\n"
                },
                "requireLegacyBios": {
                    "type": "boolean",
                    "description": "(Computed)[boolean] Indicates if the image requires the legacy BIOS for compatibility or specific needs. During creation, if an image is used, the value will be inherited from the image, regardless of the value set in the plan. Later on, the value can be updated.\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efields are immutable.\n\u003e If you want to create a **CUBE** server, the type of the inline volume must be set to **DAS**. In this case, you can not set the \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e argument since it is taken from the \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e you set in the server.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "[string] The ID of a server.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "[integer] The size of the volume in GB.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. This property is immutable.\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. This property is immutable.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "[string] The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. This option will work only with cloud-init compatible images.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "diskType",
                "serverId",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Volume resources.\n",
                "properties": {
                    "availabilityZone": {
                        "type": "string",
                        "description": "[string] The storage availability zone assigned to the volume: AUTO, ZONE_1, ZONE_2, or ZONE_3. This property is immutable\n"
                    },
                    "backupUnitId": {
                        "type": "string",
                        "description": "[string] The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n"
                    },
                    "bootServer": {
                        "type": "string",
                        "description": "[string] The UUID of the attached server.\n"
                    },
                    "bus": {
                        "type": "string",
                        "description": "[Boolean] The bus type of the volume: VIRTIO or IDE.\n"
                    },
                    "cpuHotPlug": {
                        "type": "boolean",
                        "description": "[string] Is capable of CPU hot plug (no reboot required)\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "deviceNumber": {
                        "type": "integer",
                        "description": "The Logical Unit Number of the storage volume. Null for volumes not mounted to any VM.\n"
                    },
                    "discVirtioHotPlug": {
                        "type": "boolean",
                        "description": "[string] Is capable of Virt-IO drive hot plug (no reboot required)\n"
                    },
                    "discVirtioHotUnplug": {
                        "type": "boolean",
                        "description": "[string] Is capable of Virt-IO drive hot unplug (no reboot required). This works only for non-Windows virtual Machines.\n"
                    },
                    "diskType": {
                        "type": "string",
                        "description": "[string] The volume type: HDD or SSD. This property is immutable.\n"
                    },
                    "exposeSerial": {
                        "type": "boolean",
                        "description": "(Computed) [boolean] Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if not previously set by the image used to create the volume. If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n"
                    },
                    "image": {
                        "type": "string",
                        "description": "The image or snapshot UUID.\n"
                    },
                    "imageId": {
                        "type": "string"
                    },
                    "imageName": {
                        "type": "string",
                        "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                    },
                    "imagePassword": {
                        "type": "string",
                        "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshkeyPath`\" pulumi-lang-dotnet=\"`SshkeyPath`\" pulumi-lang-go=\"`sshkeyPath`\" pulumi-lang-python=\"`sshkey_path`\" pulumi-lang-yaml=\"`sshkeyPath`\" pulumi-lang-java=\"`sshkeyPath`\"\u003e`sshkeyPath`\u003c/span\u003e is not provided.\n"
                    },
                    "licenceType": {
                        "type": "string",
                        "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`imageName`\u003c/span\u003e is not provided.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the volume.\n"
                    },
                    "nicHotPlug": {
                        "type": "boolean",
                        "description": "[string] Is capable of nic hot plug (no reboot required)\n"
                    },
                    "nicHotUnplug": {
                        "type": "boolean",
                        "description": "[string] Is capable of nic hot unplug (no reboot required)\n"
                    },
                    "pciSlot": {
                        "type": "integer",
                        "description": "The PCI slot number of the storage volume. Null for volumes not mounted to any VM.\n"
                    },
                    "ramHotPlug": {
                        "type": "boolean",
                        "description": "[string] Is capable of memory hot plug (no reboot required)\n"
                    },
                    "requireLegacyBios": {
                        "type": "boolean",
                        "description": "(Computed)[boolean] Indicates if the image requires the legacy BIOS for compatibility or specific needs. During creation, if an image is used, the value will be inherited from the image, regardless of the value set in the plan. Later on, the value can be updated.\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e\u003cspan pulumi-lang-nodejs=\" sshKeyPath \" pulumi-lang-dotnet=\" SshKeyPath \" pulumi-lang-go=\" sshKeyPath \" pulumi-lang-python=\" ssh_key_path \" pulumi-lang-yaml=\" sshKeyPath \" pulumi-lang-java=\" sshKeyPath \"\u003e sshKeyPath \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e sshKeys \u003c/span\u003efields are immutable.\n\u003e If you want to create a **CUBE** server, the type of the inline volume must be set to **DAS**. In this case, you can not set the \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e argument since it is taken from the \u003cspan pulumi-lang-nodejs=\"`templateUuid`\" pulumi-lang-dotnet=\"`TemplateUuid`\" pulumi-lang-go=\"`templateUuid`\" pulumi-lang-python=\"`template_uuid`\" pulumi-lang-yaml=\"`templateUuid`\" pulumi-lang-java=\"`templateUuid`\"\u003e`templateUuid`\u003c/span\u003e you set in the server.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "[string] The ID of a server.\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "[integer] The size of the volume in GB.\n"
                    },
                    "sshKeyPaths": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. This property is immutable.\n"
                    },
                    "sshKeys": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] List of absolute paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Also accepts ssh keys directly. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided. This property is immutable.\n"
                    },
                    "sshkey": {
                        "type": "string",
                        "description": "The associated public SSH key.\n"
                    },
                    "userData": {
                        "type": "string",
                        "description": "[string] The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. This option will work only with cloud-init compatible images.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:creg/registry:Registry": {
            "description": "Manages an [Container Registry](https://docs.ionos.com/cloud/containers/private-container-registry/overview) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.creg.Registry(\"example\", {\n    garbageCollectionSchedule: {\n        days: [\n            \"Monday\",\n            \"Tuesday\",\n        ],\n        time: \"05:19:00+00:00\",\n    },\n    location: \"de/fra\",\n    name: \"container-registry-example\",\n    apiSubnetAllowLists: [\"1.2.3.4/32\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.Registry(\"example\",\n    garbage_collection_schedule={\n        \"days\": [\n            \"Monday\",\n            \"Tuesday\",\n        ],\n        \"time\": \"05:19:00+00:00\",\n    },\n    location=\"de/fra\",\n    name=\"container-registry-example\",\n    api_subnet_allow_lists=[\"1.2.3.4/32\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Creg.Registry(\"example\", new()\n    {\n        GarbageCollectionSchedule = new Ionoscloud.Creg.Inputs.RegistryGarbageCollectionScheduleArgs\n        {\n            Days = new[]\n            {\n                \"Monday\",\n                \"Tuesday\",\n            },\n            Time = \"05:19:00+00:00\",\n        },\n        Location = \"de/fra\",\n        Name = \"container-registry-example\",\n        ApiSubnetAllowLists = new[]\n        {\n            \"1.2.3.4/32\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.NewRegistry(ctx, \"example\", \u0026creg.RegistryArgs{\n\t\t\tGarbageCollectionSchedule: \u0026creg.RegistryGarbageCollectionScheduleArgs{\n\t\t\t\tDays: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"Monday\"),\n\t\t\t\t\tpulumi.String(\"Tuesday\"),\n\t\t\t\t},\n\t\t\t\tTime: pulumi.String(\"05:19:00+00:00\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tName:     pulumi.String(\"container-registry-example\"),\n\t\t\tApiSubnetAllowLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1.2.3.4/32\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.creg.Registry;\nimport com.ionoscloud.pulumi.ionoscloud.creg.RegistryArgs;\nimport com.pulumi.ionoscloud.creg.inputs.RegistryGarbageCollectionScheduleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Registry(\"example\", RegistryArgs.builder()\n            .garbageCollectionSchedule(RegistryGarbageCollectionScheduleArgs.builder()\n                .days(                \n                    \"Monday\",\n                    \"Tuesday\")\n                .time(\"05:19:00+00:00\")\n                .build())\n            .location(\"de/fra\")\n            .name(\"container-registry-example\")\n            .apiSubnetAllowLists(\"1.2.3.4/32\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:creg:Registry\n    properties:\n      garbageCollectionSchedule:\n        days:\n          - Monday\n          - Tuesday\n        time: 05:19:00+00:00\n      location: de/fra\n      name: container-registry-example\n      apiSubnetAllowLists:\n        - 1.2.3.4/32\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Container Registry can be imported using the `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_container_registry.mycr container_registry uuid\n```\n\n",
            "properties": {
                "apiSubnetAllowLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] The subnet CIDRs that are allowed to connect to the registry.  Specify \"a.b.c.d/32\" for an individual IP address. __Note__: If this list is empty or not set, there are no restrictions.\n"
                },
                "features": {
                    "$ref": "#/types/ionoscloud:creg/RegistryFeatures:RegistryFeatures",
                    "description": "[Map]\n"
                },
                "garbageCollectionSchedule": {
                    "$ref": "#/types/ionoscloud:creg/RegistryGarbageCollectionSchedule:RegistryGarbageCollectionSchedule",
                    "description": "[Map]\n"
                },
                "hostname": {
                    "type": "string"
                },
                "location": {
                    "type": "string",
                    "description": "[string] Immutable, update forces re-creation of the resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container registry. Immutable, update forces re-creation of the resource.\n"
                },
                "storageUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:creg/RegistryStorageUsage:RegistryStorageUsage"
                    }
                }
            },
            "required": [
                "features",
                "garbageCollectionSchedule",
                "hostname",
                "location",
                "name",
                "storageUsages"
            ],
            "inputProperties": {
                "apiSubnetAllowLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] The subnet CIDRs that are allowed to connect to the registry.  Specify \"a.b.c.d/32\" for an individual IP address. __Note__: If this list is empty or not set, there are no restrictions.\n"
                },
                "features": {
                    "$ref": "#/types/ionoscloud:creg/RegistryFeatures:RegistryFeatures",
                    "description": "[Map]\n"
                },
                "garbageCollectionSchedule": {
                    "$ref": "#/types/ionoscloud:creg/RegistryGarbageCollectionSchedule:RegistryGarbageCollectionSchedule",
                    "description": "[Map]\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] Immutable, update forces re-creation of the resource.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container registry. Immutable, update forces re-creation of the resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "location"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Registry resources.\n",
                "properties": {
                    "apiSubnetAllowLists": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] The subnet CIDRs that are allowed to connect to the registry.  Specify \"a.b.c.d/32\" for an individual IP address. __Note__: If this list is empty or not set, there are no restrictions.\n"
                    },
                    "features": {
                        "$ref": "#/types/ionoscloud:creg/RegistryFeatures:RegistryFeatures",
                        "description": "[Map]\n"
                    },
                    "garbageCollectionSchedule": {
                        "$ref": "#/types/ionoscloud:creg/RegistryGarbageCollectionSchedule:RegistryGarbageCollectionSchedule",
                        "description": "[Map]\n"
                    },
                    "hostname": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] Immutable, update forces re-creation of the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the container registry. Immutable, update forces re-creation of the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "storageUsages": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/RegistryStorageUsage:RegistryStorageUsage"
                        }
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:creg/registryToken:RegistryToken": {
            "description": "Manages an [Container Registry Token](https://docs.ionos.com/cloud/containers/private-container-registry/overview) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.creg.Registry(\"example\", {\n    garbageCollectionSchedule: {\n        days: [\n            \"Monday\",\n            \"Tuesday\",\n        ],\n        time: \"05:19:00+00:00\",\n    },\n    location: \"de/fra\",\n    name: \"container-registry-example\",\n});\nconst exampleRegistryToken = new ionoscloud.creg.RegistryToken(\"example\", {\n    expiryDate: \"2023-01-13 16:27:42Z\",\n    name: \"container-registry-token-example\",\n    scopes: [{\n        actions: [\"push\"],\n        name: \"Scope1\",\n        type: \"repository\",\n    }],\n    status: \"enabled\",\n    registryId: example.id,\n    savePasswordToFile: \"pass.txt\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.Registry(\"example\",\n    garbage_collection_schedule={\n        \"days\": [\n            \"Monday\",\n            \"Tuesday\",\n        ],\n        \"time\": \"05:19:00+00:00\",\n    },\n    location=\"de/fra\",\n    name=\"container-registry-example\")\nexample_registry_token = ionoscloud.creg.RegistryToken(\"example\",\n    expiry_date=\"2023-01-13 16:27:42Z\",\n    name=\"container-registry-token-example\",\n    scopes=[{\n        \"actions\": [\"push\"],\n        \"name\": \"Scope1\",\n        \"type\": \"repository\",\n    }],\n    status=\"enabled\",\n    registry_id=example.id,\n    save_password_to_file=\"pass.txt\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Creg.Registry(\"example\", new()\n    {\n        GarbageCollectionSchedule = new Ionoscloud.Creg.Inputs.RegistryGarbageCollectionScheduleArgs\n        {\n            Days = new[]\n            {\n                \"Monday\",\n                \"Tuesday\",\n            },\n            Time = \"05:19:00+00:00\",\n        },\n        Location = \"de/fra\",\n        Name = \"container-registry-example\",\n    });\n\n    var exampleRegistryToken = new Ionoscloud.Creg.RegistryToken(\"example\", new()\n    {\n        ExpiryDate = \"2023-01-13 16:27:42Z\",\n        Name = \"container-registry-token-example\",\n        Scopes = new[]\n        {\n            new Ionoscloud.Creg.Inputs.RegistryTokenScopeArgs\n            {\n                Actions = new[]\n                {\n                    \"push\",\n                },\n                Name = \"Scope1\",\n                Type = \"repository\",\n            },\n        },\n        Status = \"enabled\",\n        RegistryId = example.Id,\n        SavePasswordToFile = \"pass.txt\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := creg.NewRegistry(ctx, \"example\", \u0026creg.RegistryArgs{\n\t\t\tGarbageCollectionSchedule: \u0026creg.RegistryGarbageCollectionScheduleArgs{\n\t\t\t\tDays: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"Monday\"),\n\t\t\t\t\tpulumi.String(\"Tuesday\"),\n\t\t\t\t},\n\t\t\t\tTime: pulumi.String(\"05:19:00+00:00\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tName:     pulumi.String(\"container-registry-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = creg.NewRegistryToken(ctx, \"example\", \u0026creg.RegistryTokenArgs{\n\t\t\tExpiryDate: pulumi.String(\"2023-01-13 16:27:42Z\"),\n\t\t\tName:       pulumi.String(\"container-registry-token-example\"),\n\t\t\tScopes: creg.RegistryTokenScopeArray{\n\t\t\t\t\u0026creg.RegistryTokenScopeArgs{\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"push\"),\n\t\t\t\t\t},\n\t\t\t\t\tName: pulumi.String(\"Scope1\"),\n\t\t\t\t\tType: pulumi.String(\"repository\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStatus:             pulumi.String(\"enabled\"),\n\t\t\tRegistryId:         example.ID(),\n\t\t\tSavePasswordToFile: pulumi.String(\"pass.txt\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.creg.Registry;\nimport com.ionoscloud.pulumi.ionoscloud.creg.RegistryArgs;\nimport com.pulumi.ionoscloud.creg.inputs.RegistryGarbageCollectionScheduleArgs;\nimport com.ionoscloud.pulumi.ionoscloud.creg.RegistryToken;\nimport com.ionoscloud.pulumi.ionoscloud.creg.RegistryTokenArgs;\nimport com.pulumi.ionoscloud.creg.inputs.RegistryTokenScopeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Registry(\"example\", RegistryArgs.builder()\n            .garbageCollectionSchedule(RegistryGarbageCollectionScheduleArgs.builder()\n                .days(                \n                    \"Monday\",\n                    \"Tuesday\")\n                .time(\"05:19:00+00:00\")\n                .build())\n            .location(\"de/fra\")\n            .name(\"container-registry-example\")\n            .build());\n\n        var exampleRegistryToken = new RegistryToken(\"exampleRegistryToken\", RegistryTokenArgs.builder()\n            .expiryDate(\"2023-01-13 16:27:42Z\")\n            .name(\"container-registry-token-example\")\n            .scopes(RegistryTokenScopeArgs.builder()\n                .actions(\"push\")\n                .name(\"Scope1\")\n                .type(\"repository\")\n                .build())\n            .status(\"enabled\")\n            .registryId(example.id())\n            .savePasswordToFile(\"pass.txt\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:creg:Registry\n    properties:\n      garbageCollectionSchedule:\n        days:\n          - Monday\n          - Tuesday\n        time: 05:19:00+00:00\n      location: de/fra\n      name: container-registry-example\n  exampleRegistryToken:\n    type: ionoscloud:creg:RegistryToken\n    name: example\n    properties:\n      expiryDate: 2023-01-13 16:27:42Z\n      name: container-registry-token-example\n      scopes:\n        - actions:\n            - push\n          name: Scope1\n          type: repository\n      status: enabled\n      registryId: ${example.id}\n      savePasswordToFile: pass.txt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Container Registry Token can be imported using the `container registry id` and `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_container_registry_token.mycrtoken container_registry uuid/container_registry_token uuid\n```\n\n",
            "properties": {
                "credentials": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:creg/RegistryTokenCredential:RegistryTokenCredential"
                    },
                    "description": "[map]\n"
                },
                "expiryDate": {
                    "type": "string"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the container registry token. Immutable, update forces re-creation of the resource.\n* `expiry-date`           - (Optional)[string] The value must be supplied as ISO 8601 timestamp\n"
                },
                "registryId": {
                    "type": "string",
                    "description": "[string] The ID of the container registry\n"
                },
                "savePasswordToFile": {
                    "type": "string",
                    "description": "[string] Saves token password to file. Only works on create. Takes as argument a file name, or a file path\n\n\u003e **⚠ WARNING** \u003cspan pulumi-lang-nodejs=\"`savePasswordToFile`\" pulumi-lang-dotnet=\"`SavePasswordToFile`\" pulumi-lang-go=\"`savePasswordToFile`\" pulumi-lang-python=\"`save_password_to_file`\" pulumi-lang-yaml=\"`savePasswordToFile`\" pulumi-lang-java=\"`savePasswordToFile`\"\u003e`savePasswordToFile`\u003c/span\u003e must be used with caution.\n\u003e It will save the password(token) returned on create to a file. This is the only way to get the token.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:creg/RegistryTokenScope:RegistryTokenScope"
                    },
                    "description": "(Computed) [map]\n"
                },
                "status": {
                    "type": "string",
                    "description": "[string] Must have one of the values: \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\"\u003e`disabled`\u003c/span\u003e\n"
                }
            },
            "required": [
                "credentials",
                "name",
                "registryId",
                "scopes",
                "status"
            ],
            "inputProperties": {
                "expiryDate": {
                    "type": "string"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the container registry token. Immutable, update forces re-creation of the resource.\n* `expiry-date`           - (Optional)[string] The value must be supplied as ISO 8601 timestamp\n",
                    "willReplaceOnChanges": true
                },
                "registryId": {
                    "type": "string",
                    "description": "[string] The ID of the container registry\n"
                },
                "savePasswordToFile": {
                    "type": "string",
                    "description": "[string] Saves token password to file. Only works on create. Takes as argument a file name, or a file path\n\n\u003e **⚠ WARNING** \u003cspan pulumi-lang-nodejs=\"`savePasswordToFile`\" pulumi-lang-dotnet=\"`SavePasswordToFile`\" pulumi-lang-go=\"`savePasswordToFile`\" pulumi-lang-python=\"`save_password_to_file`\" pulumi-lang-yaml=\"`savePasswordToFile`\" pulumi-lang-java=\"`savePasswordToFile`\"\u003e`savePasswordToFile`\u003c/span\u003e must be used with caution.\n\u003e It will save the password(token) returned on create to a file. This is the only way to get the token.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:creg/RegistryTokenScope:RegistryTokenScope"
                    },
                    "description": "(Computed) [map]\n"
                },
                "status": {
                    "type": "string",
                    "description": "[string] Must have one of the values: \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\"\u003e`disabled`\u003c/span\u003e\n"
                }
            },
            "requiredInputs": [
                "registryId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering RegistryToken resources.\n",
                "properties": {
                    "credentials": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/RegistryTokenCredential:RegistryTokenCredential"
                        },
                        "description": "[map]\n"
                    },
                    "expiryDate": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the container registry token. Immutable, update forces re-creation of the resource.\n* `expiry-date`           - (Optional)[string] The value must be supplied as ISO 8601 timestamp\n",
                        "willReplaceOnChanges": true
                    },
                    "registryId": {
                        "type": "string",
                        "description": "[string] The ID of the container registry\n"
                    },
                    "savePasswordToFile": {
                        "type": "string",
                        "description": "[string] Saves token password to file. Only works on create. Takes as argument a file name, or a file path\n\n\u003e **⚠ WARNING** \u003cspan pulumi-lang-nodejs=\"`savePasswordToFile`\" pulumi-lang-dotnet=\"`SavePasswordToFile`\" pulumi-lang-go=\"`savePasswordToFile`\" pulumi-lang-python=\"`save_password_to_file`\" pulumi-lang-yaml=\"`savePasswordToFile`\" pulumi-lang-java=\"`savePasswordToFile`\"\u003e`savePasswordToFile`\u003c/span\u003e must be used with caution.\n\u003e It will save the password(token) returned on create to a file. This is the only way to get the token.\n"
                    },
                    "scopes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/RegistryTokenScope:RegistryTokenScope"
                        },
                        "description": "(Computed) [map]\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "[string] Must have one of the values: \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\"\u003e`disabled`\u003c/span\u003e\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dbaas/inMemoryDBReplicaSet:InMemoryDBReplicaSet": {
            "description": "Manages a [DBaaS InMemoryDB Replica Set](https://docs.ionos.com/cloud/databases/in-memory-db/overview) Replica Set.\n\n## Import\n\nResource DBaaS InMemoryDB Replica Set can be imported using the \u003cspan pulumi-lang-nodejs=\"`replicasetId`\" pulumi-lang-dotnet=\"`ReplicasetId`\" pulumi-lang-go=\"`replicasetId`\" pulumi-lang-python=\"`replicaset_id`\" pulumi-lang-yaml=\"`replicasetId`\" pulumi-lang-java=\"`replicasetId`\"\u003e`replicasetId`\u003c/span\u003e and the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, separated by `:`, e.g:\n\n```sh\nterraform import ionoscloud_inmemorydb_replicaset.example location:replicaSet uuid\n```\n\n",
            "properties": {
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetConnections:InMemoryDBReplicaSetConnections",
                    "description": "[object] The network connection for your replica set. Only one connection is allowed. Updates to the value of the fields force the replica set to be re-created.\n"
                },
                "credentials": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetCredentials:InMemoryDBReplicaSetCredentials",
                    "description": "[object] Credentials for the InMemoryDB replicaset, only one type of password can be used since they are mutually exclusive. These values are used to create the initial InMemoryDB user, updating any of these will force recreation of the replica set resource.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The human-readable name of your replica set.\n"
                },
                "dnsName": {
                    "type": "string",
                    "description": "[string] The DNS name pointing to your replica set. Will be used to connect to the active/standalone instance.\n\n\u003e **⚠ NOTE:** `IONOS_API_URL_INMEMORYDB` can be used to set a custom API URL for the resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                },
                "evictionPolicy": {
                    "type": "string",
                    "description": "[string] The eviction policy for the replica set, possible values are:\n"
                },
                "initialSnapshotId": {
                    "type": "string",
                    "description": "[string] The ID of a snapshot to restore the replica set from. If set, the replica set will be created from the snapshot.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of your replica set. Updates to the value of the field force the replica set to be re-created. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`, other available locations are: `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`, `us/ewr`, `us/las`, `us/mci`, `fr/par`\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetMaintenanceWindow:InMemoryDBReplicaSetMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                },
                "persistenceMode": {
                    "type": "string",
                    "description": "[string] Specifies How and If data is persisted, possible values are:\n* `None` - Data is inMemory only and will not be persisted. Useful for cache only applications.\n* `AOF` - (Append Only File) AOF persistence logs every write operation received by the server. These operations can then be replayed again at server startup, reconstructing the original dataset. Commands are logged using the same format as the InMemoryDB protocol itself.\n* `RDB` - RDB persistence performs snapshots of the current in memory state.\n* `RDB_AOF` - Both RDB and AOF persistence are enabled.\n"
                },
                "replicas": {
                    "type": "integer",
                    "description": "[int] The total number of replicas in the replica set (one active and n-1 passive). In case of a standalone instance, the value is 1. In all other cases, the value is \u003e 1. The replicas will not be available as read replicas, they are only standby for a failure of the active instance.\n"
                },
                "resources": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetResources:InMemoryDBReplicaSetResources",
                    "description": "[object] The resources of the individual replicas.\n"
                },
                "version": {
                    "type": "string",
                    "description": "[string] The InMemoryDB version of your replica set.\n"
                }
            },
            "required": [
                "connections",
                "credentials",
                "displayName",
                "dnsName",
                "evictionPolicy",
                "maintenanceWindow",
                "persistenceMode",
                "replicas",
                "resources",
                "version"
            ],
            "inputProperties": {
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetConnections:InMemoryDBReplicaSetConnections",
                    "description": "[object] The network connection for your replica set. Only one connection is allowed. Updates to the value of the fields force the replica set to be re-created.\n"
                },
                "credentials": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetCredentials:InMemoryDBReplicaSetCredentials",
                    "description": "[object] Credentials for the InMemoryDB replicaset, only one type of password can be used since they are mutually exclusive. These values are used to create the initial InMemoryDB user, updating any of these will force recreation of the replica set resource.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The human-readable name of your replica set.\n"
                },
                "evictionPolicy": {
                    "type": "string",
                    "description": "[string] The eviction policy for the replica set, possible values are:\n"
                },
                "initialSnapshotId": {
                    "type": "string",
                    "description": "[string] The ID of a snapshot to restore the replica set from. If set, the replica set will be created from the snapshot.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of your replica set. Updates to the value of the field force the replica set to be re-created. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`, other available locations are: `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`, `us/ewr`, `us/las`, `us/mci`, `fr/par`\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetMaintenanceWindow:InMemoryDBReplicaSetMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                },
                "persistenceMode": {
                    "type": "string",
                    "description": "[string] Specifies How and If data is persisted, possible values are:\n* `None` - Data is inMemory only and will not be persisted. Useful for cache only applications.\n* `AOF` - (Append Only File) AOF persistence logs every write operation received by the server. These operations can then be replayed again at server startup, reconstructing the original dataset. Commands are logged using the same format as the InMemoryDB protocol itself.\n* `RDB` - RDB persistence performs snapshots of the current in memory state.\n* `RDB_AOF` - Both RDB and AOF persistence are enabled.\n"
                },
                "replicas": {
                    "type": "integer",
                    "description": "[int] The total number of replicas in the replica set (one active and n-1 passive). In case of a standalone instance, the value is 1. In all other cases, the value is \u003e 1. The replicas will not be available as read replicas, they are only standby for a failure of the active instance.\n"
                },
                "resources": {
                    "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetResources:InMemoryDBReplicaSetResources",
                    "description": "[object] The resources of the individual replicas.\n"
                },
                "version": {
                    "type": "string",
                    "description": "[string] The InMemoryDB version of your replica set.\n"
                }
            },
            "requiredInputs": [
                "connections",
                "credentials",
                "displayName",
                "evictionPolicy",
                "persistenceMode",
                "replicas",
                "resources",
                "version"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InMemoryDBReplicaSet resources.\n",
                "properties": {
                    "connections": {
                        "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetConnections:InMemoryDBReplicaSetConnections",
                        "description": "[object] The network connection for your replica set. Only one connection is allowed. Updates to the value of the fields force the replica set to be re-created.\n"
                    },
                    "credentials": {
                        "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetCredentials:InMemoryDBReplicaSetCredentials",
                        "description": "[object] Credentials for the InMemoryDB replicaset, only one type of password can be used since they are mutually exclusive. These values are used to create the initial InMemoryDB user, updating any of these will force recreation of the replica set resource.\n"
                    },
                    "displayName": {
                        "type": "string",
                        "description": "[string] The human-readable name of your replica set.\n"
                    },
                    "dnsName": {
                        "type": "string",
                        "description": "[string] The DNS name pointing to your replica set. Will be used to connect to the active/standalone instance.\n\n\u003e **⚠ NOTE:** `IONOS_API_URL_INMEMORYDB` can be used to set a custom API URL for the resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                    },
                    "evictionPolicy": {
                        "type": "string",
                        "description": "[string] The eviction policy for the replica set, possible values are:\n"
                    },
                    "initialSnapshotId": {
                        "type": "string",
                        "description": "[string] The ID of a snapshot to restore the replica set from. If set, the replica set will be created from the snapshot.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of your replica set. Updates to the value of the field force the replica set to be re-created. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`, other available locations are: `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`, `us/ewr`, `us/las`, `us/mci`, `fr/par`\n",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetMaintenanceWindow:InMemoryDBReplicaSetMaintenanceWindow",
                        "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                    },
                    "persistenceMode": {
                        "type": "string",
                        "description": "[string] Specifies How and If data is persisted, possible values are:\n* `None` - Data is inMemory only and will not be persisted. Useful for cache only applications.\n* `AOF` - (Append Only File) AOF persistence logs every write operation received by the server. These operations can then be replayed again at server startup, reconstructing the original dataset. Commands are logged using the same format as the InMemoryDB protocol itself.\n* `RDB` - RDB persistence performs snapshots of the current in memory state.\n* `RDB_AOF` - Both RDB and AOF persistence are enabled.\n"
                    },
                    "replicas": {
                        "type": "integer",
                        "description": "[int] The total number of replicas in the replica set (one active and n-1 passive). In case of a standalone instance, the value is 1. In all other cases, the value is \u003e 1. The replicas will not be available as read replicas, they are only standby for a failure of the active instance.\n"
                    },
                    "resources": {
                        "$ref": "#/types/ionoscloud:dbaas/InMemoryDBReplicaSetResources:InMemoryDBReplicaSetResources",
                        "description": "[object] The resources of the individual replicas.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "[string] The InMemoryDB version of your replica set.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dbaas/mariaDBCluster:MariaDBCluster": {
            "description": "Manages a [DBaaS MariaDB Cluster](https://docs.ionos.com/cloud/databases/mariadb/overview). \n\n## Import\n\nResource DBaaS MariaDB Cluster can be imported using the \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e and the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, separated by `:`, e.g.\n\n```sh\nterraform import ionoscloud_mariadb_cluster.mycluster location:cluster uuid\n```\n\n",
            "properties": {
                "backup": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterBackup:MariaDBClusterBackup",
                    "description": "Properties configuring the backup of the cluster. Immutable, change forces re-creation of the cluster.\n"
                },
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterConnections:MariaDBClusterConnections",
                    "description": "The network connection for your cluster. Only one connection is allowed.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "[int] The number of CPU cores per instance.\n"
                },
                "credentials": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterCredentials:MariaDBClusterCredentials",
                    "description": "Credentials for the database user to be created.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The friendly name of your cluster.\n"
                },
                "dnsName": {
                    "type": "string",
                    "description": "[string] The DNS name pointing to your cluster.\n\n\u003e **⚠ WARNING:** `IONOS_API_URL_MARIADB` can be used to set a custom API URL for the MariaDB Cluster. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                },
                "instances": {
                    "type": "integer",
                    "description": "[int] The total number of instances in the cluster (one primary and n-1 secondary).\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location in which the cluster will be created. Different service endpoints are used based on location, possible options are: \"de/fra\", \"de/txl\", \"es/vit\", \"fr/par\", \"gb/lhr\", \"us/ewr\", \"us/las\", \"us/mci\". If not set, the endpoint will be the one corresponding to \"de/txl\".\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterMaintenanceWindow:MariaDBClusterMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur\n"
                },
                "mariadbVersion": {
                    "type": "string",
                    "description": "[string] The MariaDB version of your cluster. Cannot be downgraded.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[int] The amount of memory per instance in gigabytes (GB).\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "[int] The amount of storage per instance in gigabytes (GB).\n"
                }
            },
            "required": [
                "backup",
                "connections",
                "cores",
                "credentials",
                "displayName",
                "dnsName",
                "instances",
                "maintenanceWindow",
                "mariadbVersion",
                "ram",
                "storageSize"
            ],
            "inputProperties": {
                "backup": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterBackup:MariaDBClusterBackup",
                    "description": "Properties configuring the backup of the cluster. Immutable, change forces re-creation of the cluster.\n",
                    "willReplaceOnChanges": true
                },
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterConnections:MariaDBClusterConnections",
                    "description": "The network connection for your cluster. Only one connection is allowed.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "[int] The number of CPU cores per instance.\n"
                },
                "credentials": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterCredentials:MariaDBClusterCredentials",
                    "description": "Credentials for the database user to be created.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The friendly name of your cluster.\n"
                },
                "instances": {
                    "type": "integer",
                    "description": "[int] The total number of instances in the cluster (one primary and n-1 secondary).\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location in which the cluster will be created. Different service endpoints are used based on location, possible options are: \"de/fra\", \"de/txl\", \"es/vit\", \"fr/par\", \"gb/lhr\", \"us/ewr\", \"us/las\", \"us/mci\". If not set, the endpoint will be the one corresponding to \"de/txl\".\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterMaintenanceWindow:MariaDBClusterMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur\n"
                },
                "mariadbVersion": {
                    "type": "string",
                    "description": "[string] The MariaDB version of your cluster. Cannot be downgraded.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[int] The amount of memory per instance in gigabytes (GB).\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "[int] The amount of storage per instance in gigabytes (GB).\n"
                }
            },
            "requiredInputs": [
                "connections",
                "cores",
                "credentials",
                "displayName",
                "instances",
                "mariadbVersion",
                "ram",
                "storageSize"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MariaDBCluster resources.\n",
                "properties": {
                    "backup": {
                        "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterBackup:MariaDBClusterBackup",
                        "description": "Properties configuring the backup of the cluster. Immutable, change forces re-creation of the cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "connections": {
                        "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterConnections:MariaDBClusterConnections",
                        "description": "The network connection for your cluster. Only one connection is allowed.\n"
                    },
                    "cores": {
                        "type": "integer",
                        "description": "[int] The number of CPU cores per instance.\n"
                    },
                    "credentials": {
                        "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterCredentials:MariaDBClusterCredentials",
                        "description": "Credentials for the database user to be created.\n"
                    },
                    "displayName": {
                        "type": "string",
                        "description": "[string] The friendly name of your cluster.\n"
                    },
                    "dnsName": {
                        "type": "string",
                        "description": "[string] The DNS name pointing to your cluster.\n\n\u003e **⚠ WARNING:** `IONOS_API_URL_MARIADB` can be used to set a custom API URL for the MariaDB Cluster. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                    },
                    "instances": {
                        "type": "integer",
                        "description": "[int] The total number of instances in the cluster (one primary and n-1 secondary).\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location in which the cluster will be created. Different service endpoints are used based on location, possible options are: \"de/fra\", \"de/txl\", \"es/vit\", \"fr/par\", \"gb/lhr\", \"us/ewr\", \"us/las\", \"us/mci\". If not set, the endpoint will be the one corresponding to \"de/txl\".\n",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:dbaas/MariaDBClusterMaintenanceWindow:MariaDBClusterMaintenanceWindow",
                        "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur\n"
                    },
                    "mariadbVersion": {
                        "type": "string",
                        "description": "[string] The MariaDB version of your cluster. Cannot be downgraded.\n"
                    },
                    "ram": {
                        "type": "integer",
                        "description": "[int] The amount of memory per instance in gigabytes (GB).\n"
                    },
                    "storageSize": {
                        "type": "integer",
                        "description": "[int] The amount of storage per instance in gigabytes (GB).\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dbaas/mongoCluster:MongoCluster": {
            "description": "Manages a [DbaaS Mongo Cluster](https://docs.ionos.com/cloud/databases/mongodb/overview).\n\n## Example Usage\n\n### Playground Or Business Editions. They Require Template_id Defined.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst datacenterExample = new ionoscloud.compute.Datacenter(\"datacenter_example\", {\n    name: \"example\",\n    location: \"de/txl\",\n    description: \"Datacenter for testing dbaas cluster\",\n});\nconst lanExample = new ionoscloud.compute.Lan(\"lan_example\", {\n    datacenterId: datacenterExample.id,\n    \"public\": false,\n    name: \"example\",\n});\nconst exampleMongoCluster = new ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\", {\n    maintenanceWindow: {\n        dayOfTheWeek: \"Sunday\",\n        time: \"09:00:00\",\n    },\n    mongodbVersion: \"6.0\",\n    instances: 1,\n    displayName: \"example_mongo_cluster\",\n    location: datacenterExample.location,\n    connections: {\n        datacenterId: datacenterExample.id,\n        lanId: lanExample.id,\n        cidrLists: [\"192.168.1.108/24\"],\n    },\n    templateId: \"6b78ea06-ee0e-4689-998c-fc9c46e781f6\",\n});\nconst clusterPassword = new random.index.Password(\"cluster_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\ndatacenter_example = ionoscloud.compute.Datacenter(\"datacenter_example\",\n    name=\"example\",\n    location=\"de/txl\",\n    description=\"Datacenter for testing dbaas cluster\")\nlan_example = ionoscloud.compute.Lan(\"lan_example\",\n    datacenter_id=datacenter_example.id,\n    public=False,\n    name=\"example\")\nexample_mongo_cluster = ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\",\n    maintenance_window={\n        \"day_of_the_week\": \"Sunday\",\n        \"time\": \"09:00:00\",\n    },\n    mongodb_version=\"6.0\",\n    instances=1,\n    display_name=\"example_mongo_cluster\",\n    location=datacenter_example.location,\n    connections={\n        \"datacenter_id\": datacenter_example.id,\n        \"lan_id\": lan_example.id,\n        \"cidr_lists\": [\"192.168.1.108/24\"],\n    },\n    template_id=\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\")\ncluster_password = random.Password(\"cluster_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var datacenterExample = new Ionoscloud.Compute.Datacenter(\"datacenter_example\", new()\n    {\n        Name = \"example\",\n        Location = \"de/txl\",\n        Description = \"Datacenter for testing dbaas cluster\",\n    });\n\n    var lanExample = new Ionoscloud.Compute.Lan(\"lan_example\", new()\n    {\n        DatacenterId = datacenterExample.Id,\n        Public = false,\n        Name = \"example\",\n    });\n\n    var exampleMongoCluster = new Ionoscloud.Dbaas.MongoCluster(\"example_mongo_cluster\", new()\n    {\n        MaintenanceWindow = new Ionoscloud.Dbaas.Inputs.MongoClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Sunday\",\n            Time = \"09:00:00\",\n        },\n        MongodbVersion = \"6.0\",\n        Instances = 1,\n        DisplayName = \"example_mongo_cluster\",\n        Location = datacenterExample.Location,\n        Connections = new Ionoscloud.Dbaas.Inputs.MongoClusterConnectionsArgs\n        {\n            DatacenterId = datacenterExample.Id,\n            LanId = lanExample.Id,\n            CidrLists = new[]\n            {\n                \"192.168.1.108/24\",\n            },\n        },\n        TemplateId = \"6b78ea06-ee0e-4689-998c-fc9c46e781f6\",\n    });\n\n    var clusterPassword = new Random.Index.Password(\"cluster_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatacenterExample, err := compute.NewDatacenter(ctx, \"datacenter_example\", \u0026compute.DatacenterArgs{\n\t\t\tName:        pulumi.String(\"example\"),\n\t\t\tLocation:    pulumi.String(\"de/txl\"),\n\t\t\tDescription: pulumi.String(\"Datacenter for testing dbaas cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlanExample, err := compute.NewLan(ctx, \"lan_example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dbaas.NewMongoCluster(ctx, \"example_mongo_cluster\", \u0026dbaas.MongoClusterArgs{\n\t\t\tMaintenanceWindow: \u0026dbaas.MongoClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Sunday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00\"),\n\t\t\t},\n\t\t\tMongodbVersion: pulumi.String(\"6.0\"),\n\t\t\tInstances:      pulumi.Int(1),\n\t\t\tDisplayName:    pulumi.String(\"example_mongo_cluster\"),\n\t\t\tLocation:       datacenterExample.Location,\n\t\t\tConnections: \u0026dbaas.MongoClusterConnectionsArgs{\n\t\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\t\tLanId:        lanExample.ID(),\n\t\t\t\tCidrLists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.1.108/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplateId: pulumi.String(\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = random.NewPassword(ctx, \"cluster_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoCluster;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoClusterArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterConnectionsArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var datacenterExample = new Datacenter(\"datacenterExample\", DatacenterArgs.builder()\n            .name(\"example\")\n            .location(\"de/txl\")\n            .description(\"Datacenter for testing dbaas cluster\")\n            .build());\n\n        var lanExample = new Lan(\"lanExample\", LanArgs.builder()\n            .datacenterId(datacenterExample.id())\n            .public_(false)\n            .name(\"example\")\n            .build());\n\n        var exampleMongoCluster = new MongoCluster(\"exampleMongoCluster\", MongoClusterArgs.builder()\n            .maintenanceWindow(MongoClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Sunday\")\n                .time(\"09:00:00\")\n                .build())\n            .mongodbVersion(\"6.0\")\n            .instances(1)\n            .displayName(\"example_mongo_cluster\")\n            .location(datacenterExample.location())\n            .connections(MongoClusterConnectionsArgs.builder()\n                .datacenterId(datacenterExample.id())\n                .lanId(lanExample.id())\n                .cidrLists(\"192.168.1.108/24\")\n                .build())\n            .templateId(\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\")\n            .build());\n\n        var clusterPassword = new Password(\"clusterPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  datacenterExample:\n    type: ionoscloud:compute:Datacenter\n    name: datacenter_example\n    properties:\n      name: example\n      location: de/txl\n      description: Datacenter for testing dbaas cluster\n  lanExample:\n    type: ionoscloud:compute:Lan\n    name: lan_example\n    properties:\n      datacenterId: ${datacenterExample.id}\n      public: false\n      name: example\n  exampleMongoCluster:\n    type: ionoscloud:dbaas:MongoCluster\n    name: example_mongo_cluster\n    properties:\n      maintenanceWindow:\n        dayOfTheWeek: Sunday\n        time: 09:00:00\n      mongodbVersion: '6.0'\n      instances: 1\n      displayName: example_mongo_cluster\n      location: ${datacenterExample.location}\n      connections:\n        datacenterId: ${datacenterExample.id}\n        lanId: ${lanExample.id}\n        cidrLists:\n          - 192.168.1.108/24\n      templateId: 6b78ea06-ee0e-4689-998c-fc9c46e781f6\n  clusterPassword:\n    type: random:password\n    name: cluster_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enterprise Edition\n\n**Enterprise Support: With MongoDB Enterprise, you gain access to professional support from the MongoDB team ensuring that you receive timely assistance and expert guidance when needed. IONOS offers enterprise-grade Service Level Agreements (SLAs), guaranteeing rapid response times and 24/7 support to address any critical issues that may arise.**\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst datacenterExample = new ionoscloud.compute.Datacenter(\"datacenter_example\", {\n    name: \"example\",\n    location: \"de/txl\",\n    description: \"Datacenter for testing dbaas cluster\",\n});\nconst lanExample = new ionoscloud.compute.Lan(\"lan_example\", {\n    datacenterId: datacenterExample.id,\n    \"public\": false,\n    name: \"example\",\n});\nconst exampleMongoCluster = new ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\", {\n    maintenanceWindow: {\n        dayOfTheWeek: \"Sunday\",\n        time: \"09:00:00\",\n    },\n    mongodbVersion: \"6.0\",\n    instances: 3,\n    displayName: \"example_mongo_cluster\",\n    location: datacenterExample.location,\n    connections: {\n        datacenterId: datacenterExample.id,\n        lanId: lanExample.id,\n        cidrLists: [\n            \"192.168.1.108/24\",\n            \"192.168.1.109/24\",\n            \"192.168.1.110/24\",\n        ],\n    },\n    type: \"sharded-cluster\",\n    shards: 2,\n    edition: \"enterprise\",\n    ram: 2048,\n    cores: 1,\n    storageSize: 5120,\n    storageType: \"HDD\",\n});\nconst clusterPassword = new random.index.Password(\"cluster_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\ndatacenter_example = ionoscloud.compute.Datacenter(\"datacenter_example\",\n    name=\"example\",\n    location=\"de/txl\",\n    description=\"Datacenter for testing dbaas cluster\")\nlan_example = ionoscloud.compute.Lan(\"lan_example\",\n    datacenter_id=datacenter_example.id,\n    public=False,\n    name=\"example\")\nexample_mongo_cluster = ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\",\n    maintenance_window={\n        \"day_of_the_week\": \"Sunday\",\n        \"time\": \"09:00:00\",\n    },\n    mongodb_version=\"6.0\",\n    instances=3,\n    display_name=\"example_mongo_cluster\",\n    location=datacenter_example.location,\n    connections={\n        \"datacenter_id\": datacenter_example.id,\n        \"lan_id\": lan_example.id,\n        \"cidr_lists\": [\n            \"192.168.1.108/24\",\n            \"192.168.1.109/24\",\n            \"192.168.1.110/24\",\n        ],\n    },\n    type=\"sharded-cluster\",\n    shards=2,\n    edition=\"enterprise\",\n    ram=2048,\n    cores=1,\n    storage_size=5120,\n    storage_type=\"HDD\")\ncluster_password = random.Password(\"cluster_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var datacenterExample = new Ionoscloud.Compute.Datacenter(\"datacenter_example\", new()\n    {\n        Name = \"example\",\n        Location = \"de/txl\",\n        Description = \"Datacenter for testing dbaas cluster\",\n    });\n\n    var lanExample = new Ionoscloud.Compute.Lan(\"lan_example\", new()\n    {\n        DatacenterId = datacenterExample.Id,\n        Public = false,\n        Name = \"example\",\n    });\n\n    var exampleMongoCluster = new Ionoscloud.Dbaas.MongoCluster(\"example_mongo_cluster\", new()\n    {\n        MaintenanceWindow = new Ionoscloud.Dbaas.Inputs.MongoClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Sunday\",\n            Time = \"09:00:00\",\n        },\n        MongodbVersion = \"6.0\",\n        Instances = 3,\n        DisplayName = \"example_mongo_cluster\",\n        Location = datacenterExample.Location,\n        Connections = new Ionoscloud.Dbaas.Inputs.MongoClusterConnectionsArgs\n        {\n            DatacenterId = datacenterExample.Id,\n            LanId = lanExample.Id,\n            CidrLists = new[]\n            {\n                \"192.168.1.108/24\",\n                \"192.168.1.109/24\",\n                \"192.168.1.110/24\",\n            },\n        },\n        Type = \"sharded-cluster\",\n        Shards = 2,\n        Edition = \"enterprise\",\n        Ram = 2048,\n        Cores = 1,\n        StorageSize = 5120,\n        StorageType = \"HDD\",\n    });\n\n    var clusterPassword = new Random.Index.Password(\"cluster_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatacenterExample, err := compute.NewDatacenter(ctx, \"datacenter_example\", \u0026compute.DatacenterArgs{\n\t\t\tName:        pulumi.String(\"example\"),\n\t\t\tLocation:    pulumi.String(\"de/txl\"),\n\t\t\tDescription: pulumi.String(\"Datacenter for testing dbaas cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlanExample, err := compute.NewLan(ctx, \"lan_example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dbaas.NewMongoCluster(ctx, \"example_mongo_cluster\", \u0026dbaas.MongoClusterArgs{\n\t\t\tMaintenanceWindow: \u0026dbaas.MongoClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Sunday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00\"),\n\t\t\t},\n\t\t\tMongodbVersion: pulumi.String(\"6.0\"),\n\t\t\tInstances:      pulumi.Int(3),\n\t\t\tDisplayName:    pulumi.String(\"example_mongo_cluster\"),\n\t\t\tLocation:       datacenterExample.Location,\n\t\t\tConnections: \u0026dbaas.MongoClusterConnectionsArgs{\n\t\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\t\tLanId:        lanExample.ID(),\n\t\t\t\tCidrLists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.1.108/24\"),\n\t\t\t\t\tpulumi.String(\"192.168.1.109/24\"),\n\t\t\t\t\tpulumi.String(\"192.168.1.110/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tType:        pulumi.String(\"sharded-cluster\"),\n\t\t\tShards:      pulumi.Int(2),\n\t\t\tEdition:     pulumi.String(\"enterprise\"),\n\t\t\tRam:         pulumi.Int(2048),\n\t\t\tCores:       pulumi.Int(1),\n\t\t\tStorageSize: pulumi.Int(5120),\n\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = random.NewPassword(ctx, \"cluster_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoCluster;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoClusterArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterConnectionsArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var datacenterExample = new Datacenter(\"datacenterExample\", DatacenterArgs.builder()\n            .name(\"example\")\n            .location(\"de/txl\")\n            .description(\"Datacenter for testing dbaas cluster\")\n            .build());\n\n        var lanExample = new Lan(\"lanExample\", LanArgs.builder()\n            .datacenterId(datacenterExample.id())\n            .public_(false)\n            .name(\"example\")\n            .build());\n\n        var exampleMongoCluster = new MongoCluster(\"exampleMongoCluster\", MongoClusterArgs.builder()\n            .maintenanceWindow(MongoClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Sunday\")\n                .time(\"09:00:00\")\n                .build())\n            .mongodbVersion(\"6.0\")\n            .instances(3)\n            .displayName(\"example_mongo_cluster\")\n            .location(datacenterExample.location())\n            .connections(MongoClusterConnectionsArgs.builder()\n                .datacenterId(datacenterExample.id())\n                .lanId(lanExample.id())\n                .cidrLists(                \n                    \"192.168.1.108/24\",\n                    \"192.168.1.109/24\",\n                    \"192.168.1.110/24\")\n                .build())\n            .type(\"sharded-cluster\")\n            .shards(2)\n            .edition(\"enterprise\")\n            .ram(2048)\n            .cores(1)\n            .storageSize(5120)\n            .storageType(\"HDD\")\n            .build());\n\n        var clusterPassword = new Password(\"clusterPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  datacenterExample:\n    type: ionoscloud:compute:Datacenter\n    name: datacenter_example\n    properties:\n      name: example\n      location: de/txl\n      description: Datacenter for testing dbaas cluster\n  lanExample:\n    type: ionoscloud:compute:Lan\n    name: lan_example\n    properties:\n      datacenterId: ${datacenterExample.id}\n      public: false\n      name: example\n  exampleMongoCluster:\n    type: ionoscloud:dbaas:MongoCluster\n    name: example_mongo_cluster\n    properties:\n      maintenanceWindow:\n        dayOfTheWeek: Sunday\n        time: 09:00:00\n      mongodbVersion: '6.0'\n      instances: 3\n      displayName: example_mongo_cluster\n      location: ${datacenterExample.location}\n      connections:\n        datacenterId: ${datacenterExample.id}\n        lanId: ${lanExample.id}\n        cidrLists:\n          - 192.168.1.108/24\n          - 192.168.1.109/24\n          - 192.168.1.110/24\n      type: sharded-cluster\n      shards: 2\n      edition: enterprise\n      ram: 2048\n      cores: 1\n      storageSize: 5120\n      storageType: HDD\n  clusterPassword:\n    type: random:password\n    name: cluster_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource DbaaS MongoDb Cluster can be imported using the \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e, e.g.\n\n```sh\nterraform import ionoscloud_mongo_cluster.mycluser cluster uuid\n```\n\n",
            "properties": {
                "backup": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterBackup:MongoClusterBackup",
                    "description": "[list]\n"
                },
                "biConnector": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterBiConnector:MongoClusterBiConnector",
                    "description": "(Computed)The MongoDB Connector for Business Intelligence allows you to query a MongoDB database using SQL commands to aid in data analysis.\n"
                },
                "connectionString": {
                    "type": "string",
                    "description": "[string] The physical location where the cluster will be created. This will be where all of your instances live. Updates to the value of the field force the cluster to be re-created. Available locations: de/txl, gb/lhr, es/vit\n"
                },
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterConnections:MongoClusterConnections",
                    "description": "[List] Details about the network connection for your cluster. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "(Computed)[int] The number of CPU cores per replica. Required for enterprise edition.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The name of your cluster. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "edition": {
                    "type": "string",
                    "description": "(Computed)[string] Cluster edition. Playground, business or enterprise.\n"
                },
                "instances": {
                    "type": "integer",
                    "description": "[int] The total number of instances in the cluster (one master and n-1 standbys). Example: 1, 3, 5, 7. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The physical location where the cluster will be created. Property cannot be modified after datacenter creation (disallowed in update requests). Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`. Update forces cluster re-creation.\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterMaintenanceWindow:MongoClusterMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.  Updates to the value of the field force the cluster to be re-created.\n"
                },
                "mongodbVersion": {
                    "type": "string",
                    "description": "[string] The MongoDB version of your cluster. Downgrade is not possible and will throw an error.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "(Computed)[int]The amount of memory per instance in megabytes. Required for enterprise edition.\n"
                },
                "shards": {
                    "type": "integer",
                    "description": "[int]The total number of shards in the cluster.\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "(Computed)[int] The amount of storage per instance in MB. Required for enterprise edition.\n"
                },
                "storageType": {
                    "type": "string",
                    "description": "(Computed)[String] The storage type used in your cluster. Required for enterprise edition.\n"
                },
                "templateId": {
                    "type": "string",
                    "description": "[string] The unique ID of the template, which specifies the number of cores, storage size, and memory. Updates to the value of the field force the cluster to be re-created. Required for playground and business editions. Must not be provided for enterprise edition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Computed)[string]The cluster type, either \u003cspan pulumi-lang-nodejs=\"`replicaset`\" pulumi-lang-dotnet=\"`Replicaset`\" pulumi-lang-go=\"`replicaset`\" pulumi-lang-python=\"`replicaset`\" pulumi-lang-yaml=\"`replicaset`\" pulumi-lang-java=\"`replicaset`\"\u003e`replicaset`\u003c/span\u003e or `sharded-cluster`.\n"
                }
            },
            "required": [
                "biConnector",
                "connectionString",
                "connections",
                "cores",
                "displayName",
                "edition",
                "instances",
                "location",
                "maintenanceWindow",
                "mongodbVersion",
                "ram",
                "storageSize",
                "storageType",
                "type"
            ],
            "inputProperties": {
                "backup": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterBackup:MongoClusterBackup",
                    "description": "[list]\n"
                },
                "biConnector": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterBiConnector:MongoClusterBiConnector",
                    "description": "(Computed)The MongoDB Connector for Business Intelligence allows you to query a MongoDB database using SQL commands to aid in data analysis.\n"
                },
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterConnections:MongoClusterConnections",
                    "description": "[List] Details about the network connection for your cluster. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "(Computed)[int] The number of CPU cores per replica. Required for enterprise edition.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The name of your cluster. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "edition": {
                    "type": "string",
                    "description": "(Computed)[string] Cluster edition. Playground, business or enterprise.\n"
                },
                "instances": {
                    "type": "integer",
                    "description": "[int] The total number of instances in the cluster (one master and n-1 standbys). Example: 1, 3, 5, 7. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The physical location where the cluster will be created. Property cannot be modified after datacenter creation (disallowed in update requests). Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`. Update forces cluster re-creation.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/MongoClusterMaintenanceWindow:MongoClusterMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.  Updates to the value of the field force the cluster to be re-created.\n"
                },
                "mongodbVersion": {
                    "type": "string",
                    "description": "[string] The MongoDB version of your cluster. Downgrade is not possible and will throw an error.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "(Computed)[int]The amount of memory per instance in megabytes. Required for enterprise edition.\n"
                },
                "shards": {
                    "type": "integer",
                    "description": "[int]The total number of shards in the cluster.\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "(Computed)[int] The amount of storage per instance in MB. Required for enterprise edition.\n",
                    "willReplaceOnChanges": true
                },
                "storageType": {
                    "type": "string",
                    "description": "(Computed)[String] The storage type used in your cluster. Required for enterprise edition.\n"
                },
                "templateId": {
                    "type": "string",
                    "description": "[string] The unique ID of the template, which specifies the number of cores, storage size, and memory. Updates to the value of the field force the cluster to be re-created. Required for playground and business editions. Must not be provided for enterprise edition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Computed)[string]The cluster type, either \u003cspan pulumi-lang-nodejs=\"`replicaset`\" pulumi-lang-dotnet=\"`Replicaset`\" pulumi-lang-go=\"`replicaset`\" pulumi-lang-python=\"`replicaset`\" pulumi-lang-yaml=\"`replicaset`\" pulumi-lang-java=\"`replicaset`\"\u003e`replicaset`\u003c/span\u003e or `sharded-cluster`.\n"
                }
            },
            "requiredInputs": [
                "connections",
                "displayName",
                "instances",
                "location",
                "mongodbVersion"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MongoCluster resources.\n",
                "properties": {
                    "backup": {
                        "$ref": "#/types/ionoscloud:dbaas/MongoClusterBackup:MongoClusterBackup",
                        "description": "[list]\n"
                    },
                    "biConnector": {
                        "$ref": "#/types/ionoscloud:dbaas/MongoClusterBiConnector:MongoClusterBiConnector",
                        "description": "(Computed)The MongoDB Connector for Business Intelligence allows you to query a MongoDB database using SQL commands to aid in data analysis.\n"
                    },
                    "connectionString": {
                        "type": "string",
                        "description": "[string] The physical location where the cluster will be created. This will be where all of your instances live. Updates to the value of the field force the cluster to be re-created. Available locations: de/txl, gb/lhr, es/vit\n"
                    },
                    "connections": {
                        "$ref": "#/types/ionoscloud:dbaas/MongoClusterConnections:MongoClusterConnections",
                        "description": "[List] Details about the network connection for your cluster. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "cores": {
                        "type": "integer",
                        "description": "(Computed)[int] The number of CPU cores per replica. Required for enterprise edition.\n"
                    },
                    "displayName": {
                        "type": "string",
                        "description": "[string] The name of your cluster. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "edition": {
                        "type": "string",
                        "description": "(Computed)[string] Cluster edition. Playground, business or enterprise.\n"
                    },
                    "instances": {
                        "type": "integer",
                        "description": "[int] The total number of instances in the cluster (one master and n-1 standbys). Example: 1, 3, 5, 7. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The physical location where the cluster will be created. Property cannot be modified after datacenter creation (disallowed in update requests). Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`. Update forces cluster re-creation.\n",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:dbaas/MongoClusterMaintenanceWindow:MongoClusterMaintenanceWindow",
                        "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.  Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "mongodbVersion": {
                        "type": "string",
                        "description": "[string] The MongoDB version of your cluster. Downgrade is not possible and will throw an error.\n"
                    },
                    "ram": {
                        "type": "integer",
                        "description": "(Computed)[int]The amount of memory per instance in megabytes. Required for enterprise edition.\n"
                    },
                    "shards": {
                        "type": "integer",
                        "description": "[int]The total number of shards in the cluster.\n"
                    },
                    "storageSize": {
                        "type": "integer",
                        "description": "(Computed)[int] The amount of storage per instance in MB. Required for enterprise edition.\n",
                        "willReplaceOnChanges": true
                    },
                    "storageType": {
                        "type": "string",
                        "description": "(Computed)[String] The storage type used in your cluster. Required for enterprise edition.\n"
                    },
                    "templateId": {
                        "type": "string",
                        "description": "[string] The unique ID of the template, which specifies the number of cores, storage size, and memory. Updates to the value of the field force the cluster to be re-created. Required for playground and business editions. Must not be provided for enterprise edition.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "(Computed)[string]The cluster type, either \u003cspan pulumi-lang-nodejs=\"`replicaset`\" pulumi-lang-dotnet=\"`Replicaset`\" pulumi-lang-go=\"`replicaset`\" pulumi-lang-python=\"`replicaset`\" pulumi-lang-yaml=\"`replicaset`\" pulumi-lang-java=\"`replicaset`\"\u003e`replicaset`\u003c/span\u003e or `sharded-cluster`.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dbaas/mongoUser:MongoUser": {
            "description": "Manages a **DbaaS Mongo User**. .\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst datacenterExample = new ionoscloud.compute.Datacenter(\"datacenter_example\", {\n    name: \"example\",\n    location: \"de/txl\",\n    description: \"Datacenter for testing dbaas cluster\",\n});\nconst lanExample = new ionoscloud.compute.Lan(\"lan_example\", {\n    datacenterId: datacenterExample.id,\n    \"public\": false,\n    name: \"example\",\n});\nconst exampleMongoCluster = new ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\", {\n    maintenanceWindow: {\n        dayOfTheWeek: \"Sunday\",\n        time: \"09:00:00\",\n    },\n    mongodbVersion: \"5.0\",\n    instances: 1,\n    displayName: \"example_mongo_cluster\",\n    location: datacenterExample.location,\n    connections: {\n        datacenterId: datacenterExample.id,\n        lanId: lanExample.id,\n        cidrLists: [\"192.168.1.108/24\"],\n    },\n    templateId: \"6b78ea06-ee0e-4689-998c-fc9c46e781f6\",\n});\nconst exampleMongoUser = new ionoscloud.dbaas.MongoUser(\"example_mongo_user\", {\n    clusterId: exampleMongoCluster.id,\n    username: \"myUser\",\n    password: \"strongPassword\",\n    roles: [\n        {\n            role: \"read\",\n            database: \"db1\",\n        },\n        {\n            role: \"readWrite\",\n            database: \"db2\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\ndatacenter_example = ionoscloud.compute.Datacenter(\"datacenter_example\",\n    name=\"example\",\n    location=\"de/txl\",\n    description=\"Datacenter for testing dbaas cluster\")\nlan_example = ionoscloud.compute.Lan(\"lan_example\",\n    datacenter_id=datacenter_example.id,\n    public=False,\n    name=\"example\")\nexample_mongo_cluster = ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\",\n    maintenance_window={\n        \"day_of_the_week\": \"Sunday\",\n        \"time\": \"09:00:00\",\n    },\n    mongodb_version=\"5.0\",\n    instances=1,\n    display_name=\"example_mongo_cluster\",\n    location=datacenter_example.location,\n    connections={\n        \"datacenter_id\": datacenter_example.id,\n        \"lan_id\": lan_example.id,\n        \"cidr_lists\": [\"192.168.1.108/24\"],\n    },\n    template_id=\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\")\nexample_mongo_user = ionoscloud.dbaas.MongoUser(\"example_mongo_user\",\n    cluster_id=example_mongo_cluster.id,\n    username=\"myUser\",\n    password=\"strongPassword\",\n    roles=[\n        {\n            \"role\": \"read\",\n            \"database\": \"db1\",\n        },\n        {\n            \"role\": \"readWrite\",\n            \"database\": \"db2\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var datacenterExample = new Ionoscloud.Compute.Datacenter(\"datacenter_example\", new()\n    {\n        Name = \"example\",\n        Location = \"de/txl\",\n        Description = \"Datacenter for testing dbaas cluster\",\n    });\n\n    var lanExample = new Ionoscloud.Compute.Lan(\"lan_example\", new()\n    {\n        DatacenterId = datacenterExample.Id,\n        Public = false,\n        Name = \"example\",\n    });\n\n    var exampleMongoCluster = new Ionoscloud.Dbaas.MongoCluster(\"example_mongo_cluster\", new()\n    {\n        MaintenanceWindow = new Ionoscloud.Dbaas.Inputs.MongoClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Sunday\",\n            Time = \"09:00:00\",\n        },\n        MongodbVersion = \"5.0\",\n        Instances = 1,\n        DisplayName = \"example_mongo_cluster\",\n        Location = datacenterExample.Location,\n        Connections = new Ionoscloud.Dbaas.Inputs.MongoClusterConnectionsArgs\n        {\n            DatacenterId = datacenterExample.Id,\n            LanId = lanExample.Id,\n            CidrLists = new[]\n            {\n                \"192.168.1.108/24\",\n            },\n        },\n        TemplateId = \"6b78ea06-ee0e-4689-998c-fc9c46e781f6\",\n    });\n\n    var exampleMongoUser = new Ionoscloud.Dbaas.MongoUser(\"example_mongo_user\", new()\n    {\n        ClusterId = exampleMongoCluster.Id,\n        Username = \"myUser\",\n        Password = \"strongPassword\",\n        Roles = new[]\n        {\n            new Ionoscloud.Dbaas.Inputs.MongoUserRoleArgs\n            {\n                Role = \"read\",\n                Database = \"db1\",\n            },\n            new Ionoscloud.Dbaas.Inputs.MongoUserRoleArgs\n            {\n                Role = \"readWrite\",\n                Database = \"db2\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\tdatacenterExample, err := compute.NewDatacenter(ctx, \"datacenter_example\", \u0026compute.DatacenterArgs{\n\t\t\tName:        pulumi.String(\"example\"),\n\t\t\tLocation:    pulumi.String(\"de/txl\"),\n\t\t\tDescription: pulumi.String(\"Datacenter for testing dbaas cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlanExample, err := compute.NewLan(ctx, \"lan_example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMongoCluster, err := dbaas.NewMongoCluster(ctx, \"example_mongo_cluster\", \u0026dbaas.MongoClusterArgs{\n\t\t\tMaintenanceWindow: \u0026dbaas.MongoClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Sunday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00\"),\n\t\t\t},\n\t\t\tMongodbVersion: pulumi.String(\"5.0\"),\n\t\t\tInstances:      pulumi.Int(1),\n\t\t\tDisplayName:    pulumi.String(\"example_mongo_cluster\"),\n\t\t\tLocation:       datacenterExample.Location,\n\t\t\tConnections: \u0026dbaas.MongoClusterConnectionsArgs{\n\t\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\t\tLanId:        lanExample.ID(),\n\t\t\t\tCidrLists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.1.108/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplateId: pulumi.String(\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dbaas.NewMongoUser(ctx, \"example_mongo_user\", \u0026dbaas.MongoUserArgs{\n\t\t\tClusterId: exampleMongoCluster.ID(),\n\t\t\tUsername:  pulumi.String(\"myUser\"),\n\t\t\tPassword:  pulumi.String(\"strongPassword\"),\n\t\t\tRoles: dbaas.MongoUserRoleArray{\n\t\t\t\t\u0026dbaas.MongoUserRoleArgs{\n\t\t\t\t\tRole:     pulumi.String(\"read\"),\n\t\t\t\t\tDatabase: pulumi.String(\"db1\"),\n\t\t\t\t},\n\t\t\t\t\u0026dbaas.MongoUserRoleArgs{\n\t\t\t\t\tRole:     pulumi.String(\"readWrite\"),\n\t\t\t\t\tDatabase: pulumi.String(\"db2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoCluster;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoClusterArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterConnectionsArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoUser;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoUserArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoUserRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var datacenterExample = new Datacenter(\"datacenterExample\", DatacenterArgs.builder()\n            .name(\"example\")\n            .location(\"de/txl\")\n            .description(\"Datacenter for testing dbaas cluster\")\n            .build());\n\n        var lanExample = new Lan(\"lanExample\", LanArgs.builder()\n            .datacenterId(datacenterExample.id())\n            .public_(false)\n            .name(\"example\")\n            .build());\n\n        var exampleMongoCluster = new MongoCluster(\"exampleMongoCluster\", MongoClusterArgs.builder()\n            .maintenanceWindow(MongoClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Sunday\")\n                .time(\"09:00:00\")\n                .build())\n            .mongodbVersion(\"5.0\")\n            .instances(1)\n            .displayName(\"example_mongo_cluster\")\n            .location(datacenterExample.location())\n            .connections(MongoClusterConnectionsArgs.builder()\n                .datacenterId(datacenterExample.id())\n                .lanId(lanExample.id())\n                .cidrLists(\"192.168.1.108/24\")\n                .build())\n            .templateId(\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\")\n            .build());\n\n        var exampleMongoUser = new MongoUser(\"exampleMongoUser\", MongoUserArgs.builder()\n            .clusterId(exampleMongoCluster.id())\n            .username(\"myUser\")\n            .password(\"strongPassword\")\n            .roles(            \n                MongoUserRoleArgs.builder()\n                    .role(\"read\")\n                    .database(\"db1\")\n                    .build(),\n                MongoUserRoleArgs.builder()\n                    .role(\"readWrite\")\n                    .database(\"db2\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  datacenterExample:\n    type: ionoscloud:compute:Datacenter\n    name: datacenter_example\n    properties:\n      name: example\n      location: de/txl\n      description: Datacenter for testing dbaas cluster\n  lanExample:\n    type: ionoscloud:compute:Lan\n    name: lan_example\n    properties:\n      datacenterId: ${datacenterExample.id}\n      public: false\n      name: example\n  exampleMongoCluster:\n    type: ionoscloud:dbaas:MongoCluster\n    name: example_mongo_cluster\n    properties:\n      maintenanceWindow:\n        dayOfTheWeek: Sunday\n        time: 09:00:00\n      mongodbVersion: '5.0'\n      instances: 1\n      displayName: example_mongo_cluster\n      location: ${datacenterExample.location}\n      connections:\n        datacenterId: ${datacenterExample.id}\n        lanId: ${lanExample.id}\n        cidrLists:\n          - 192.168.1.108/24\n      templateId: 6b78ea06-ee0e-4689-998c-fc9c46e781f6\n  exampleMongoUser:\n    type: ionoscloud:dbaas:MongoUser\n    name: example_mongo_user\n    properties:\n      clusterId: ${exampleMongoCluster.id}\n      username: myUser\n      password: strongPassword\n      roles:\n        - role: read\n          database: db1\n        - role: readWrite\n          database: db2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\n// Complete example\nconst datacenterExample = new ionoscloud.compute.Datacenter(\"datacenter_example\", {\n    name: \"example\",\n    location: \"de/txl\",\n    description: \"Datacenter for testing dbaas cluster\",\n});\nconst lanExample = new ionoscloud.compute.Lan(\"lan_example\", {\n    datacenterId: datacenterExample.id,\n    \"public\": false,\n    name: \"example\",\n});\nconst exampleMongoCluster = new ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\", {\n    maintenanceWindow: {\n        dayOfTheWeek: \"Sunday\",\n        time: \"09:00:00\",\n    },\n    mongodbVersion: \"5.0\",\n    instances: 1,\n    displayName: \"example_mongo_cluster\",\n    location: datacenterExample.location,\n    connections: {\n        datacenterId: datacenterExample.id,\n        lanId: lanExample.id,\n        cidrLists: [\"192.168.1.108/24\"],\n    },\n    templateId: \"6b78ea06-ee0e-4689-998c-fc9c46e781f6\",\n});\nconst clusterPassword = new random.index.Password(\"cluster_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst userPassword = new random.index.Password(\"user_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst exampleMongoUser = new ionoscloud.dbaas.MongoUser(\"example_mongo_user\", {\n    clusterId: exampleMongoCluster.id,\n    username: \"myUser\",\n    password: userPassword.result,\n    roles: [\n        {\n            role: \"read\",\n            database: \"db1\",\n        },\n        {\n            role: \"readWrite\",\n            database: \"db2\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\n# Complete example\ndatacenter_example = ionoscloud.compute.Datacenter(\"datacenter_example\",\n    name=\"example\",\n    location=\"de/txl\",\n    description=\"Datacenter for testing dbaas cluster\")\nlan_example = ionoscloud.compute.Lan(\"lan_example\",\n    datacenter_id=datacenter_example.id,\n    public=False,\n    name=\"example\")\nexample_mongo_cluster = ionoscloud.dbaas.MongoCluster(\"example_mongo_cluster\",\n    maintenance_window={\n        \"day_of_the_week\": \"Sunday\",\n        \"time\": \"09:00:00\",\n    },\n    mongodb_version=\"5.0\",\n    instances=1,\n    display_name=\"example_mongo_cluster\",\n    location=datacenter_example.location,\n    connections={\n        \"datacenter_id\": datacenter_example.id,\n        \"lan_id\": lan_example.id,\n        \"cidr_lists\": [\"192.168.1.108/24\"],\n    },\n    template_id=\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\")\ncluster_password = random.Password(\"cluster_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nuser_password = random.Password(\"user_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nexample_mongo_user = ionoscloud.dbaas.MongoUser(\"example_mongo_user\",\n    cluster_id=example_mongo_cluster.id,\n    username=\"myUser\",\n    password=user_password[\"result\"],\n    roles=[\n        {\n            \"role\": \"read\",\n            \"database\": \"db1\",\n        },\n        {\n            \"role\": \"readWrite\",\n            \"database\": \"db2\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Complete example\n    var datacenterExample = new Ionoscloud.Compute.Datacenter(\"datacenter_example\", new()\n    {\n        Name = \"example\",\n        Location = \"de/txl\",\n        Description = \"Datacenter for testing dbaas cluster\",\n    });\n\n    var lanExample = new Ionoscloud.Compute.Lan(\"lan_example\", new()\n    {\n        DatacenterId = datacenterExample.Id,\n        Public = false,\n        Name = \"example\",\n    });\n\n    var exampleMongoCluster = new Ionoscloud.Dbaas.MongoCluster(\"example_mongo_cluster\", new()\n    {\n        MaintenanceWindow = new Ionoscloud.Dbaas.Inputs.MongoClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Sunday\",\n            Time = \"09:00:00\",\n        },\n        MongodbVersion = \"5.0\",\n        Instances = 1,\n        DisplayName = \"example_mongo_cluster\",\n        Location = datacenterExample.Location,\n        Connections = new Ionoscloud.Dbaas.Inputs.MongoClusterConnectionsArgs\n        {\n            DatacenterId = datacenterExample.Id,\n            LanId = lanExample.Id,\n            CidrLists = new[]\n            {\n                \"192.168.1.108/24\",\n            },\n        },\n        TemplateId = \"6b78ea06-ee0e-4689-998c-fc9c46e781f6\",\n    });\n\n    var clusterPassword = new Random.Index.Password(\"cluster_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var userPassword = new Random.Index.Password(\"user_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var exampleMongoUser = new Ionoscloud.Dbaas.MongoUser(\"example_mongo_user\", new()\n    {\n        ClusterId = exampleMongoCluster.Id,\n        Username = \"myUser\",\n        Password = userPassword.Result,\n        Roles = new[]\n        {\n            new Ionoscloud.Dbaas.Inputs.MongoUserRoleArgs\n            {\n                Role = \"read\",\n                Database = \"db1\",\n            },\n            new Ionoscloud.Dbaas.Inputs.MongoUserRoleArgs\n            {\n                Role = \"readWrite\",\n                Database = \"db2\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Complete example\n\t\tdatacenterExample, err := compute.NewDatacenter(ctx, \"datacenter_example\", \u0026compute.DatacenterArgs{\n\t\t\tName:        pulumi.String(\"example\"),\n\t\t\tLocation:    pulumi.String(\"de/txl\"),\n\t\t\tDescription: pulumi.String(\"Datacenter for testing dbaas cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlanExample, err := compute.NewLan(ctx, \"lan_example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMongoCluster, err := dbaas.NewMongoCluster(ctx, \"example_mongo_cluster\", \u0026dbaas.MongoClusterArgs{\n\t\t\tMaintenanceWindow: \u0026dbaas.MongoClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Sunday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00\"),\n\t\t\t},\n\t\t\tMongodbVersion: pulumi.String(\"5.0\"),\n\t\t\tInstances:      pulumi.Int(1),\n\t\t\tDisplayName:    pulumi.String(\"example_mongo_cluster\"),\n\t\t\tLocation:       datacenterExample.Location,\n\t\t\tConnections: \u0026dbaas.MongoClusterConnectionsArgs{\n\t\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\t\tLanId:        lanExample.ID(),\n\t\t\t\tCidrLists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.1.108/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplateId: pulumi.String(\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = random.NewPassword(ctx, \"cluster_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuserPassword, err := random.NewPassword(ctx, \"user_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dbaas.NewMongoUser(ctx, \"example_mongo_user\", \u0026dbaas.MongoUserArgs{\n\t\t\tClusterId: exampleMongoCluster.ID(),\n\t\t\tUsername:  pulumi.String(\"myUser\"),\n\t\t\tPassword:  userPassword.Result,\n\t\t\tRoles: dbaas.MongoUserRoleArray{\n\t\t\t\t\u0026dbaas.MongoUserRoleArgs{\n\t\t\t\t\tRole:     pulumi.String(\"read\"),\n\t\t\t\t\tDatabase: pulumi.String(\"db1\"),\n\t\t\t\t},\n\t\t\t\t\u0026dbaas.MongoUserRoleArgs{\n\t\t\t\t\tRole:     pulumi.String(\"readWrite\"),\n\t\t\t\t\tDatabase: pulumi.String(\"db2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoCluster;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoClusterArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoClusterConnectionsArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoUser;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoUserArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.MongoUserRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Complete example\n        var datacenterExample = new Datacenter(\"datacenterExample\", DatacenterArgs.builder()\n            .name(\"example\")\n            .location(\"de/txl\")\n            .description(\"Datacenter for testing dbaas cluster\")\n            .build());\n\n        var lanExample = new Lan(\"lanExample\", LanArgs.builder()\n            .datacenterId(datacenterExample.id())\n            .public_(false)\n            .name(\"example\")\n            .build());\n\n        var exampleMongoCluster = new MongoCluster(\"exampleMongoCluster\", MongoClusterArgs.builder()\n            .maintenanceWindow(MongoClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Sunday\")\n                .time(\"09:00:00\")\n                .build())\n            .mongodbVersion(\"5.0\")\n            .instances(1)\n            .displayName(\"example_mongo_cluster\")\n            .location(datacenterExample.location())\n            .connections(MongoClusterConnectionsArgs.builder()\n                .datacenterId(datacenterExample.id())\n                .lanId(lanExample.id())\n                .cidrLists(\"192.168.1.108/24\")\n                .build())\n            .templateId(\"6b78ea06-ee0e-4689-998c-fc9c46e781f6\")\n            .build());\n\n        var clusterPassword = new Password(\"clusterPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var userPassword = new Password(\"userPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var exampleMongoUser = new MongoUser(\"exampleMongoUser\", MongoUserArgs.builder()\n            .clusterId(exampleMongoCluster.id())\n            .username(\"myUser\")\n            .password(userPassword.result())\n            .roles(            \n                MongoUserRoleArgs.builder()\n                    .role(\"read\")\n                    .database(\"db1\")\n                    .build(),\n                MongoUserRoleArgs.builder()\n                    .role(\"readWrite\")\n                    .database(\"db2\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Complete example\n  datacenterExample:\n    type: ionoscloud:compute:Datacenter\n    name: datacenter_example\n    properties:\n      name: example\n      location: de/txl\n      description: Datacenter for testing dbaas cluster\n  lanExample:\n    type: ionoscloud:compute:Lan\n    name: lan_example\n    properties:\n      datacenterId: ${datacenterExample.id}\n      public: false\n      name: example\n  exampleMongoCluster:\n    type: ionoscloud:dbaas:MongoCluster\n    name: example_mongo_cluster\n    properties:\n      maintenanceWindow:\n        dayOfTheWeek: Sunday\n        time: 09:00:00\n      mongodbVersion: '5.0'\n      instances: 1\n      displayName: example_mongo_cluster\n      location: ${datacenterExample.location}\n      connections:\n        datacenterId: ${datacenterExample.id}\n        lanId: ${lanExample.id}\n        cidrLists:\n          - 192.168.1.108/24\n      templateId: 6b78ea06-ee0e-4689-998c-fc9c46e781f6\n  clusterPassword:\n    type: random:password\n    name: cluster_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n  userPassword:\n    type: random:password\n    name: user_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n  exampleMongoUser:\n    type: ionoscloud:dbaas:MongoUser\n    name: example_mongo_user\n    properties:\n      clusterId: ${exampleMongoCluster.id}\n      username: myUser\n      password: ${userPassword.result}\n      roles:\n        - role: read\n          database: db1\n        - role: readWrite\n          database: db2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource DBaaS MongoDB User can be imported using the `clusterID` and the \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e.\nFirst, define an empty resource in the plan:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst importeduser = new ionoscloud.dbaas.MongoUser(\"importeduser\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nimporteduser = ionoscloud.dbaas.MongoUser(\"importeduser\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var importeduser = new Ionoscloud.Dbaas.MongoUser(\"importeduser\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.NewMongoUser(ctx, \"importeduser\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.MongoUser;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var importeduser = new MongoUser(\"importeduser\");\n\n    }\n}\n```\n```yaml\nresources:\n  importeduser:\n    type: ionoscloud:dbaas:MongoUser\n```\n\u003c!--End PulumiCodeChooser --\u003e\nThen you can import the user using the following command:\n```sh\n$ pulumi import ionoscloud:dbaas/mongoUser:MongoUser mycluser clusterid/username\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] The unique ID of the cluster. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "password": {
                    "type": "string",
                    "description": "[string] User password. Updates to the value of the field force the cluster to be re-created.\n",
                    "secret": true
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:dbaas/MongoUserRole:MongoUserRole"
                    },
                    "description": "[string] a list of mongodb user roles. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "username": {
                    "type": "string",
                    "description": "[string] Used for authentication. Updates to the value of the field force the cluster to be re-created.\n"
                }
            },
            "required": [
                "clusterId",
                "password",
                "username"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] The unique ID of the cluster. Updates to the value of the field force the cluster to be re-created.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "password": {
                    "type": "string",
                    "description": "[string] User password. Updates to the value of the field force the cluster to be re-created.\n",
                    "secret": true
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:dbaas/MongoUserRole:MongoUserRole"
                    },
                    "description": "[string] a list of mongodb user roles. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "username": {
                    "type": "string",
                    "description": "[string] Used for authentication. Updates to the value of the field force the cluster to be re-created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId",
                "password",
                "username"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MongoUser resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The unique ID of the cluster. Updates to the value of the field force the cluster to be re-created.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "[string] User password. Updates to the value of the field force the cluster to be re-created.\n",
                        "secret": true
                    },
                    "roles": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/MongoUserRole:MongoUserRole"
                        },
                        "description": "[string] a list of mongodb user roles. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "[string] Used for authentication. Updates to the value of the field force the cluster to be re-created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dbaas/pSQLCluster:PSQLCluster": {
            "description": "Manages a [DbaaS PgSql Cluster](https://docs.ionos.com/cloud/databases/postgresql/overview).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"example\",\n    location: \"de/txl\",\n    description: \"Datacenter for testing psql cluster\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"example\",\n});\nconst examplePSQLCluster = new ionoscloud.dbaas.PSQLCluster(\"example\", {\n    postgresVersion: \"12\",\n    instances: 1,\n    cores: 4,\n    ram: 2048,\n    storageSize: 10240,\n    storageType: \"HDD\",\n    connectionPooler: {\n        enabled: true,\n        poolMode: \"session\",\n    },\n    connections: {\n        datacenterId: example.id,\n        lanId: exampleLan.id,\n        cidr: \"192.168.100.1/24\",\n    },\n    location: example.location,\n    displayName: \"PostgreSQL_cluster\",\n    maintenanceWindow: {\n        dayOfTheWeek: \"Sunday\",\n        time: \"09:00:00\",\n    },\n    credentials: {\n        username: \"username\",\n        password: \"strongPassword\",\n    },\n    synchronizationMode: \"ASYNCHRONOUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"example\",\n    location=\"de/txl\",\n    description=\"Datacenter for testing psql cluster\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"example\")\nexample_psql_cluster = ionoscloud.dbaas.PSQLCluster(\"example\",\n    postgres_version=\"12\",\n    instances=1,\n    cores=4,\n    ram=2048,\n    storage_size=10240,\n    storage_type=\"HDD\",\n    connection_pooler={\n        \"enabled\": True,\n        \"pool_mode\": \"session\",\n    },\n    connections={\n        \"datacenter_id\": example.id,\n        \"lan_id\": example_lan.id,\n        \"cidr\": \"192.168.100.1/24\",\n    },\n    location=example.location,\n    display_name=\"PostgreSQL_cluster\",\n    maintenance_window={\n        \"day_of_the_week\": \"Sunday\",\n        \"time\": \"09:00:00\",\n    },\n    credentials={\n        \"username\": \"username\",\n        \"password\": \"strongPassword\",\n    },\n    synchronization_mode=\"ASYNCHRONOUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"example\",\n        Location = \"de/txl\",\n        Description = \"Datacenter for testing psql cluster\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"example\",\n    });\n\n    var examplePSQLCluster = new Ionoscloud.Dbaas.PSQLCluster(\"example\", new()\n    {\n        PostgresVersion = \"12\",\n        Instances = 1,\n        Cores = 4,\n        Ram = 2048,\n        StorageSize = 10240,\n        StorageType = \"HDD\",\n        ConnectionPooler = new Ionoscloud.Dbaas.Inputs.PSQLClusterConnectionPoolerArgs\n        {\n            Enabled = true,\n            PoolMode = \"session\",\n        },\n        Connections = new Ionoscloud.Dbaas.Inputs.PSQLClusterConnectionsArgs\n        {\n            DatacenterId = example.Id,\n            LanId = exampleLan.Id,\n            Cidr = \"192.168.100.1/24\",\n        },\n        Location = example.Location,\n        DisplayName = \"PostgreSQL_cluster\",\n        MaintenanceWindow = new Ionoscloud.Dbaas.Inputs.PSQLClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Sunday\",\n            Time = \"09:00:00\",\n        },\n        Credentials = new Ionoscloud.Dbaas.Inputs.PSQLClusterCredentialsArgs\n        {\n            Username = \"username\",\n            Password = \"strongPassword\",\n        },\n        SynchronizationMode = \"ASYNCHRONOUS\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:        pulumi.String(\"example\"),\n\t\t\tLocation:    pulumi.String(\"de/txl\"),\n\t\t\tDescription: pulumi.String(\"Datacenter for testing psql cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dbaas.NewPSQLCluster(ctx, \"example\", \u0026dbaas.PSQLClusterArgs{\n\t\t\tPostgresVersion: pulumi.String(\"12\"),\n\t\t\tInstances:       pulumi.Int(1),\n\t\t\tCores:           pulumi.Int(4),\n\t\t\tRam:             pulumi.Int(2048),\n\t\t\tStorageSize:     pulumi.Int(10240),\n\t\t\tStorageType:     pulumi.String(\"HDD\"),\n\t\t\tConnectionPooler: \u0026dbaas.PSQLClusterConnectionPoolerArgs{\n\t\t\t\tEnabled:  pulumi.Bool(true),\n\t\t\t\tPoolMode: pulumi.String(\"session\"),\n\t\t\t},\n\t\t\tConnections: \u0026dbaas.PSQLClusterConnectionsArgs{\n\t\t\t\tDatacenterId: example.ID(),\n\t\t\t\tLanId:        exampleLan.ID(),\n\t\t\t\tCidr:         pulumi.String(\"192.168.100.1/24\"),\n\t\t\t},\n\t\t\tLocation:    example.Location,\n\t\t\tDisplayName: pulumi.String(\"PostgreSQL_cluster\"),\n\t\t\tMaintenanceWindow: \u0026dbaas.PSQLClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Sunday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00\"),\n\t\t\t},\n\t\t\tCredentials: \u0026dbaas.PSQLClusterCredentialsArgs{\n\t\t\t\tUsername: pulumi.String(\"username\"),\n\t\t\t\tPassword: pulumi.String(\"strongPassword\"),\n\t\t\t},\n\t\t\tSynchronizationMode: pulumi.String(\"ASYNCHRONOUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLCluster;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLClusterArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.PSQLClusterConnectionPoolerArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.PSQLClusterConnectionsArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.PSQLClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.dbaas.inputs.PSQLClusterCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"example\")\n            .location(\"de/txl\")\n            .description(\"Datacenter for testing psql cluster\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"example\")\n            .build());\n\n        var examplePSQLCluster = new PSQLCluster(\"examplePSQLCluster\", PSQLClusterArgs.builder()\n            .postgresVersion(\"12\")\n            .instances(1)\n            .cores(4)\n            .ram(2048)\n            .storageSize(10240)\n            .storageType(\"HDD\")\n            .connectionPooler(PSQLClusterConnectionPoolerArgs.builder()\n                .enabled(true)\n                .poolMode(\"session\")\n                .build())\n            .connections(PSQLClusterConnectionsArgs.builder()\n                .datacenterId(example.id())\n                .lanId(exampleLan.id())\n                .cidr(\"192.168.100.1/24\")\n                .build())\n            .location(example.location())\n            .displayName(\"PostgreSQL_cluster\")\n            .maintenanceWindow(PSQLClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Sunday\")\n                .time(\"09:00:00\")\n                .build())\n            .credentials(PSQLClusterCredentialsArgs.builder()\n                .username(\"username\")\n                .password(\"strongPassword\")\n                .build())\n            .synchronizationMode(\"ASYNCHRONOUS\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: example\n      location: de/txl\n      description: Datacenter for testing psql cluster\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: example\n  examplePSQLCluster:\n    type: ionoscloud:dbaas:PSQLCluster\n    name: example\n    properties:\n      postgresVersion: '12'\n      instances: 1\n      cores: 4\n      ram: 2048\n      storageSize: 10240\n      storageType: HDD\n      connectionPooler:\n        enabled: true\n        poolMode: session\n      connections:\n        datacenterId: ${example.id}\n        lanId: ${exampleLan.id}\n        cidr: 192.168.100.1/24\n      location: ${example.location}\n      displayName: PostgreSQL_cluster\n      maintenanceWindow:\n        dayOfTheWeek: Sunday\n        time: 09:00:00\n      credentials:\n        username: username\n        password: strongPassword\n      synchronizationMode: ASYNCHRONOUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource DbaaS Postgres Cluster can be imported using the \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e, e.g.\n\n```sh\nterraform import ionoscloud_pg_cluster.mycluser cluster uuid\n```\n\n",
            "properties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by destroying and re-creating the cluster.\"\n\n**_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the cluster in order to do it. Set the field to true only if you know what you are doing._**\n"
                },
                "backupLocation": {
                    "type": "string",
                    "description": "(Computed)[string] The IONOS Object Storage location where the backups will be stored. Possible values are: \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e, `eu-south-2`, `eu-central-2`. This attribute is immutable (disallowed in update requests).\n"
                },
                "connectionPooler": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterConnectionPooler:PSQLClusterConnectionPooler",
                    "description": "[object]\n"
                },
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterConnections:PSQLClusterConnections",
                    "description": "[string] Details about the network connection for your cluster.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "[int] The number of CPU cores per replica.\n"
                },
                "credentials": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterCredentials:PSQLClusterCredentials",
                    "description": "[string] Credentials for the database user to be created. This attribute is immutable(disallowed in update requests).\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The friendly name of your cluster.\n"
                },
                "dnsName": {
                    "type": "string",
                    "description": "[string] The DNS name pointing to your cluster.\n"
                },
                "fromBackup": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterFromBackup:PSQLClusterFromBackup",
                    "description": "[string] The unique ID of the backup you want to restore. This attribute is immutable(disallowed in update requests).\n"
                },
                "instances": {
                    "type": "integer",
                    "description": "[int] The total number of instances in the cluster (one master and n-1 standbys)\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The physical location where the cluster will be created. This will be where all of your instances live. Property cannot be modified after datacenter creation. Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`. This attribute is immutable (disallowed in update requests).\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterMaintenanceWindow:PSQLClusterMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur\n"
                },
                "postgresVersion": {
                    "type": "string",
                    "description": "[string] The PostgreSQL version of your cluster.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[int] The amount of memory per instance in megabytes. Has to be a multiple of 1024.\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "[int] The amount of storage per instance in MB. Has to be a multiple of 2048.\n"
                },
                "storageType": {
                    "type": "string",
                    "description": "[string] SSD, SSD Standard, SSD Premium, or HDD. Value \"SSD\" is deprecated, use the equivalent \"SSD Premium\" instead. This attribute is immutable(disallowed in update requests).\n"
                },
                "synchronizationMode": {
                    "type": "string",
                    "description": "[string] Represents different modes of replication. Can have one of the following values: ASYNCHRONOUS, SYNCHRONOUS, STRICTLY_SYNCHRONOUS. This attribute is immutable(disallowed in update requests).\n"
                }
            },
            "required": [
                "backupLocation",
                "connectionPooler",
                "cores",
                "credentials",
                "displayName",
                "dnsName",
                "instances",
                "location",
                "maintenanceWindow",
                "postgresVersion",
                "ram",
                "storageSize",
                "storageType",
                "synchronizationMode"
            ],
            "inputProperties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by destroying and re-creating the cluster.\"\n\n**_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the cluster in order to do it. Set the field to true only if you know what you are doing._**\n"
                },
                "backupLocation": {
                    "type": "string",
                    "description": "(Computed)[string] The IONOS Object Storage location where the backups will be stored. Possible values are: \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e, `eu-south-2`, `eu-central-2`. This attribute is immutable (disallowed in update requests).\n",
                    "willReplaceOnChanges": true
                },
                "connectionPooler": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterConnectionPooler:PSQLClusterConnectionPooler",
                    "description": "[object]\n"
                },
                "connections": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterConnections:PSQLClusterConnections",
                    "description": "[string] Details about the network connection for your cluster.\n"
                },
                "cores": {
                    "type": "integer",
                    "description": "[int] The number of CPU cores per replica.\n"
                },
                "credentials": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterCredentials:PSQLClusterCredentials",
                    "description": "[string] Credentials for the database user to be created. This attribute is immutable(disallowed in update requests).\n",
                    "willReplaceOnChanges": true
                },
                "displayName": {
                    "type": "string",
                    "description": "[string] The friendly name of your cluster.\n"
                },
                "fromBackup": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterFromBackup:PSQLClusterFromBackup",
                    "description": "[string] The unique ID of the backup you want to restore. This attribute is immutable(disallowed in update requests).\n",
                    "willReplaceOnChanges": true
                },
                "instances": {
                    "type": "integer",
                    "description": "[int] The total number of instances in the cluster (one master and n-1 standbys)\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The physical location where the cluster will be created. This will be where all of your instances live. Property cannot be modified after datacenter creation. Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`. This attribute is immutable (disallowed in update requests).\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:dbaas/PSQLClusterMaintenanceWindow:PSQLClusterMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur\n"
                },
                "postgresVersion": {
                    "type": "string",
                    "description": "[string] The PostgreSQL version of your cluster.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "[int] The amount of memory per instance in megabytes. Has to be a multiple of 1024.\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "[int] The amount of storage per instance in MB. Has to be a multiple of 2048.\n"
                },
                "storageType": {
                    "type": "string",
                    "description": "[string] SSD, SSD Standard, SSD Premium, or HDD. Value \"SSD\" is deprecated, use the equivalent \"SSD Premium\" instead. This attribute is immutable(disallowed in update requests).\n",
                    "willReplaceOnChanges": true
                },
                "synchronizationMode": {
                    "type": "string",
                    "description": "[string] Represents different modes of replication. Can have one of the following values: ASYNCHRONOUS, SYNCHRONOUS, STRICTLY_SYNCHRONOUS. This attribute is immutable(disallowed in update requests).\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "cores",
                "credentials",
                "displayName",
                "instances",
                "location",
                "postgresVersion",
                "ram",
                "storageSize",
                "storageType",
                "synchronizationMode"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PSQLCluster resources.\n",
                "properties": {
                    "allowReplace": {
                        "type": "boolean",
                        "description": "[bool] When set to true, allows the update of immutable fields by destroying and re-creating the cluster.\"\n\n**_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the cluster in order to do it. Set the field to true only if you know what you are doing._**\n"
                    },
                    "backupLocation": {
                        "type": "string",
                        "description": "(Computed)[string] The IONOS Object Storage location where the backups will be stored. Possible values are: \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e, `eu-south-2`, `eu-central-2`. This attribute is immutable (disallowed in update requests).\n",
                        "willReplaceOnChanges": true
                    },
                    "connectionPooler": {
                        "$ref": "#/types/ionoscloud:dbaas/PSQLClusterConnectionPooler:PSQLClusterConnectionPooler",
                        "description": "[object]\n"
                    },
                    "connections": {
                        "$ref": "#/types/ionoscloud:dbaas/PSQLClusterConnections:PSQLClusterConnections",
                        "description": "[string] Details about the network connection for your cluster.\n"
                    },
                    "cores": {
                        "type": "integer",
                        "description": "[int] The number of CPU cores per replica.\n"
                    },
                    "credentials": {
                        "$ref": "#/types/ionoscloud:dbaas/PSQLClusterCredentials:PSQLClusterCredentials",
                        "description": "[string] Credentials for the database user to be created. This attribute is immutable(disallowed in update requests).\n",
                        "willReplaceOnChanges": true
                    },
                    "displayName": {
                        "type": "string",
                        "description": "[string] The friendly name of your cluster.\n"
                    },
                    "dnsName": {
                        "type": "string",
                        "description": "[string] The DNS name pointing to your cluster.\n"
                    },
                    "fromBackup": {
                        "$ref": "#/types/ionoscloud:dbaas/PSQLClusterFromBackup:PSQLClusterFromBackup",
                        "description": "[string] The unique ID of the backup you want to restore. This attribute is immutable(disallowed in update requests).\n",
                        "willReplaceOnChanges": true
                    },
                    "instances": {
                        "type": "integer",
                        "description": "[int] The total number of instances in the cluster (one master and n-1 standbys)\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The physical location where the cluster will be created. This will be where all of your instances live. Property cannot be modified after datacenter creation. Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`. This attribute is immutable (disallowed in update requests).\n",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:dbaas/PSQLClusterMaintenanceWindow:PSQLClusterMaintenanceWindow",
                        "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur\n"
                    },
                    "postgresVersion": {
                        "type": "string",
                        "description": "[string] The PostgreSQL version of your cluster.\n"
                    },
                    "ram": {
                        "type": "integer",
                        "description": "[int] The amount of memory per instance in megabytes. Has to be a multiple of 1024.\n"
                    },
                    "storageSize": {
                        "type": "integer",
                        "description": "[int] The amount of storage per instance in MB. Has to be a multiple of 2048.\n"
                    },
                    "storageType": {
                        "type": "string",
                        "description": "[string] SSD, SSD Standard, SSD Premium, or HDD. Value \"SSD\" is deprecated, use the equivalent \"SSD Premium\" instead. This attribute is immutable(disallowed in update requests).\n",
                        "willReplaceOnChanges": true
                    },
                    "synchronizationMode": {
                        "type": "string",
                        "description": "[string] Represents different modes of replication. Can have one of the following values: ASYNCHRONOUS, SYNCHRONOUS, STRICTLY_SYNCHRONOUS. This attribute is immutable(disallowed in update requests).\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dbaas/pSQLDatabase:PSQLDatabase": {
            "description": "Manages a **DbaaS PgSql Database**.\n\n## Example Usage\n\nCreate a `PgSQL` cluster as presented in the documentation for the cluster, then define a database resource\nand link it with the previously created cluster:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst examplePgDatabase = new ionoscloud.dbaas.PSQLDatabase(\"example_pg_database\", {\n    clusterId: example.id,\n    name: \"exampledatabase\",\n    owner: \"exampleuser\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample_pg_database = ionoscloud.dbaas.PSQLDatabase(\"example_pg_database\",\n    cluster_id=example[\"id\"],\n    name=\"exampledatabase\",\n    owner=\"exampleuser\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var examplePgDatabase = new Ionoscloud.Dbaas.PSQLDatabase(\"example_pg_database\", new()\n    {\n        ClusterId = example.Id,\n        Name = \"exampledatabase\",\n        Owner = \"exampleuser\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.NewPSQLDatabase(ctx, \"example_pg_database\", \u0026dbaas.PSQLDatabaseArgs{\n\t\t\tClusterId: pulumi.Any(example.Id),\n\t\t\tName:      pulumi.String(\"exampledatabase\"),\n\t\t\tOwner:     pulumi.String(\"exampleuser\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLDatabase;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLDatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var examplePgDatabase = new PSQLDatabase(\"examplePgDatabase\", PSQLDatabaseArgs.builder()\n            .clusterId(example.id())\n            .name(\"exampledatabase\")\n            .owner(\"exampleuser\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  examplePgDatabase:\n    type: ionoscloud:dbaas:PSQLDatabase\n    name: example_pg_database\n    properties:\n      clusterId: ${example.id}\n      name: exampledatabase\n      owner: exampleuser\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIn order to import a PgSql database, you can define an empty database resource in the plan:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.dbaas.PSQLDatabase(\"example\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.PSQLDatabase(\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Dbaas.PSQLDatabase(\"example\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.NewPSQLDatabase(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLDatabase;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new PSQLDatabase(\"example\");\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:dbaas:PSQLDatabase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resource can be imported using the `clusterId` and the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:dbaas/pSQLDatabase:PSQLDatabase example clusterid/name\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] The unique ID of the cluster. Immutable, forces re-creation.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the database. Immutable, forces re-creation.\n"
                },
                "owner": {
                    "type": "string",
                    "description": "[string] The owner of the database. Immutable, forces re-creation.\n"
                }
            },
            "required": [
                "clusterId",
                "name",
                "owner"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] The unique ID of the cluster. Immutable, forces re-creation.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the database. Immutable, forces re-creation.\n",
                    "willReplaceOnChanges": true
                },
                "owner": {
                    "type": "string",
                    "description": "[string] The owner of the database. Immutable, forces re-creation.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId",
                "owner"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PSQLDatabase resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The unique ID of the cluster. Immutable, forces re-creation.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the database. Immutable, forces re-creation.\n",
                        "willReplaceOnChanges": true
                    },
                    "owner": {
                        "type": "string",
                        "description": "[string] The owner of the database. Immutable, forces re-creation.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dbaas/pSQLUser:PSQLUser": {
            "description": "Manages a **DbaaS PgSql User**.\n\n## Example Usage\n\nCreate a `PgSQL` cluster as presented in the documentation for the cluster, then define a user resource\nand link it with the previously created cluster:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst userPassword = new random.index.Password(\"user_password\", {\n    length: 16,\n    special: true,\n    overrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n});\nconst examplePgUser = new ionoscloud.dbaas.PSQLUser(\"example_pg_user\", {\n    clusterId: example.id,\n    username: \"exampleuser\",\n    password: userPassword.result,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nuser_password = random.Password(\"user_password\",\n    length=16,\n    special=True,\n    override_special=!#$%\u0026*()-_=+[]{}\u003c\u003e:?)\nexample_pg_user = ionoscloud.dbaas.PSQLUser(\"example_pg_user\",\n    cluster_id=example[\"id\"],\n    username=\"exampleuser\",\n    password=user_password[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var userPassword = new Random.Index.Password(\"user_password\", new()\n    {\n        Length = 16,\n        Special = true,\n        OverrideSpecial = \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n    });\n\n    var examplePgUser = new Ionoscloud.Dbaas.PSQLUser(\"example_pg_user\", new()\n    {\n        ClusterId = example.Id,\n        Username = \"exampleuser\",\n        Password = userPassword.Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuserPassword, err := random.NewPassword(ctx, \"user_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          16,\n\t\t\tSpecial:         true,\n\t\t\tOverrideSpecial: \"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dbaas.NewPSQLUser(ctx, \"example_pg_user\", \u0026dbaas.PSQLUserArgs{\n\t\t\tClusterId: pulumi.Any(example.Id),\n\t\t\tUsername:  pulumi.String(\"exampleuser\"),\n\t\t\tPassword:  userPassword.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLUser;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var userPassword = new Password(\"userPassword\", PasswordArgs.builder()\n            .length(16)\n            .special(true)\n            .overrideSpecial(\"!#$%\u0026*()-_=+[]{}\u003c\u003e:?\")\n            .build());\n\n        var examplePgUser = new PSQLUser(\"examplePgUser\", PSQLUserArgs.builder()\n            .clusterId(example.id())\n            .username(\"exampleuser\")\n            .password(userPassword.result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  examplePgUser:\n    type: ionoscloud:dbaas:PSQLUser\n    name: example_pg_user\n    properties:\n      clusterId: ${example.id}\n      username: exampleuser\n      password: ${userPassword.result}\n  userPassword:\n    type: random:password\n    name: user_password\n    properties:\n      length: 16\n      special: true\n      overrideSpecial: '!#$%\u0026*()-_=+[]{}\u003c\u003e:?'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIn order to import a PgSql user, you can define an empty user resource in the plan:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.dbaas.PSQLUser(\"example\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.PSQLUser(\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Dbaas.PSQLUser(\"example\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.NewPSQLUser(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dbaas.PSQLUser;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new PSQLUser(\"example\");\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:dbaas:PSQLUser\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resource can be imported using the `clusterId` and the \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:dbaas/pSQLUser:PSQLUser example clusterid/username\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] The unique ID of the cluster. Updates to the value of the field force the cluster to be re-created.\n"
                },
                "isSystemUser": {
                    "type": "boolean",
                    "description": "[bool] Describes whether this user is a system user or not. A system user cannot be updated or deleted.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "password": {
                    "type": "string",
                    "description": "[string] User password.\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "[string] Used for authentication. Updates to the value of the field force the cluster to be re-created.\n"
                }
            },
            "required": [
                "clusterId",
                "isSystemUser",
                "password",
                "username"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] The unique ID of the cluster. Updates to the value of the field force the cluster to be re-created.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "password": {
                    "type": "string",
                    "description": "[string] User password.\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "[string] Used for authentication. Updates to the value of the field force the cluster to be re-created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId",
                "password",
                "username"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PSQLUser resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The unique ID of the cluster. Updates to the value of the field force the cluster to be re-created.\n",
                        "willReplaceOnChanges": true
                    },
                    "isSystemUser": {
                        "type": "boolean",
                        "description": "[bool] Describes whether this user is a system user or not. A system user cannot be updated or deleted.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "[string] User password.\n",
                        "secret": true
                    },
                    "username": {
                        "type": "string",
                        "description": "[string] Used for authentication. Updates to the value of the field force the cluster to be re-created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dns/record:Record": {
            "description": "Manages a [DNS Record](https://docs.ionos.com/cloud/network-services/cloud-dns/overview).\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **ionoscloud_dns_record** resource. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.dns.Zone(\"example\", {\n    name: \"example.com\",\n    description: \"description\",\n    enabled: false,\n});\nconst recordexample = new ionoscloud.dns.Record(\"recordexample\", {\n    zoneId: example.id,\n    name: \"recordexample\",\n    type: \"CNAME\",\n    content: \"1.2.3.4\",\n    ttl: 2000,\n    priority: 1024,\n    enabled: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.Zone(\"example\",\n    name=\"example.com\",\n    description=\"description\",\n    enabled=False)\nrecordexample = ionoscloud.dns.Record(\"recordexample\",\n    zone_id=example.id,\n    name=\"recordexample\",\n    type=\"CNAME\",\n    content=\"1.2.3.4\",\n    ttl=2000,\n    priority=1024,\n    enabled=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Dns.Zone(\"example\", new()\n    {\n        Name = \"example.com\",\n        Description = \"description\",\n        Enabled = false,\n    });\n\n    var recordexample = new Ionoscloud.Dns.Record(\"recordexample\", new()\n    {\n        ZoneId = example.Id,\n        Name = \"recordexample\",\n        Type = \"CNAME\",\n        Content = \"1.2.3.4\",\n        Ttl = 2000,\n        Priority = 1024,\n        Enabled = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := dns.NewZone(ctx, \"example\", \u0026dns.ZoneArgs{\n\t\t\tName:        pulumi.String(\"example.com\"),\n\t\t\tDescription: pulumi.String(\"description\"),\n\t\t\tEnabled:     pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecord(ctx, \"recordexample\", \u0026dns.RecordArgs{\n\t\t\tZoneId:   example.ID(),\n\t\t\tName:     pulumi.String(\"recordexample\"),\n\t\t\tType:     pulumi.String(\"CNAME\"),\n\t\t\tContent:  pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:      pulumi.Int(2000),\n\t\t\tPriority: pulumi.Int(1024),\n\t\t\tEnabled:  pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dns.Zone;\nimport com.ionoscloud.pulumi.ionoscloud.dns.ZoneArgs;\nimport com.ionoscloud.pulumi.ionoscloud.dns.Record;\nimport com.ionoscloud.pulumi.ionoscloud.dns.RecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Zone(\"example\", ZoneArgs.builder()\n            .name(\"example.com\")\n            .description(\"description\")\n            .enabled(false)\n            .build());\n\n        var recordexample = new Record(\"recordexample\", RecordArgs.builder()\n            .zoneId(example.id())\n            .name(\"recordexample\")\n            .type(\"CNAME\")\n            .content(\"1.2.3.4\")\n            .ttl(2000)\n            .priority(1024)\n            .enabled(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:dns:Zone\n    properties:\n      name: example.com\n      description: description\n      enabled: false\n  recordexample:\n    type: ionoscloud:dns:Record\n    properties:\n      zoneId: ${example.id}\n      name: recordexample\n      type: CNAME\n      content: 1.2.3.4\n      ttl: 2000\n      priority: 1024\n      enabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIn order to import a DNS Record, you can define an empty DNS Record resource in the plan:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.dns.Record(\"example\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.Record(\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Dns.Record(\"example\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewRecord(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dns.Record;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Record(\"example\");\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:dns:Record\n```\n\u003c!--End PulumiCodeChooser --\u003e\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`zoneId`\" pulumi-lang-dotnet=\"`ZoneId`\" pulumi-lang-go=\"`zoneId`\" pulumi-lang-python=\"`zone_id`\" pulumi-lang-yaml=\"`zoneId`\" pulumi-lang-java=\"`zoneId`\"\u003e`zoneId`\u003c/span\u003e and the \u003cspan pulumi-lang-nodejs=\"`recordId`\" pulumi-lang-dotnet=\"`RecordId`\" pulumi-lang-go=\"`recordId`\" pulumi-lang-python=\"`record_id`\" pulumi-lang-yaml=\"`recordId`\" pulumi-lang-java=\"`recordId`\"\u003e`recordId`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:dns/record:Record example zone_id/record_id\n```\n\n",
            "properties": {
                "content": {
                    "type": "string",
                    "description": "[string] The content of the DNS Record.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "[bool] Indicates if the DNS Record is active or not. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "fqdn": {
                    "type": "string",
                    "description": "Fully qualified domain name"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the DNS Record. This property is immutable.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "[int] The priority for the DNS Record.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "[int] Time to live for the DNS Record. Default is \u003cspan pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\"\u003e`3600`\u003c/span\u003e.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] The type of the DNS Record, can have one of these values: `A, AAAA, CNAME, ALIAS, MX, NS, SRV, TXT, CAA, SSHFP, TLSA, SMIMEA, DS, HTTPS, SVCB, OPENPGPKEY, CERT, URI, RP, LOC`. More details about types can be found [here](https://docs.ionos.com/cloud/network-services/cloud-dns/cloud-dns-faq#what-types-of-dns-records-does-cloud-dns-support).\n"
                },
                "zoneId": {
                    "type": "string",
                    "description": "[string] The DNS Zone ID in which the DNS Record will be created.\n"
                }
            },
            "required": [
                "content",
                "enabled",
                "fqdn",
                "name",
                "ttl",
                "type",
                "zoneId"
            ],
            "inputProperties": {
                "content": {
                    "type": "string",
                    "description": "[string] The content of the DNS Record.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "[bool] Indicates if the DNS Record is active or not. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the DNS Record. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "priority": {
                    "type": "integer",
                    "description": "[int] The priority for the DNS Record.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "[int] Time to live for the DNS Record. Default is \u003cspan pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\"\u003e`3600`\u003c/span\u003e.\n"
                },
                "type": {
                    "type": "string",
                    "description": "[string] The type of the DNS Record, can have one of these values: `A, AAAA, CNAME, ALIAS, MX, NS, SRV, TXT, CAA, SSHFP, TLSA, SMIMEA, DS, HTTPS, SVCB, OPENPGPKEY, CERT, URI, RP, LOC`. More details about types can be found [here](https://docs.ionos.com/cloud/network-services/cloud-dns/cloud-dns-faq#what-types-of-dns-records-does-cloud-dns-support).\n"
                },
                "zoneId": {
                    "type": "string",
                    "description": "[string] The DNS Zone ID in which the DNS Record will be created.\n"
                }
            },
            "requiredInputs": [
                "content",
                "type",
                "zoneId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Record resources.\n",
                "properties": {
                    "content": {
                        "type": "string",
                        "description": "[string] The content of the DNS Record.\n"
                    },
                    "enabled": {
                        "type": "boolean",
                        "description": "[bool] Indicates if the DNS Record is active or not. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                    },
                    "fqdn": {
                        "type": "string",
                        "description": "Fully qualified domain name"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the DNS Record. This property is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "priority": {
                        "type": "integer",
                        "description": "[int] The priority for the DNS Record.\n"
                    },
                    "ttl": {
                        "type": "integer",
                        "description": "[int] Time to live for the DNS Record. Default is \u003cspan pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\"\u003e`3600`\u003c/span\u003e.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "[string] The type of the DNS Record, can have one of these values: `A, AAAA, CNAME, ALIAS, MX, NS, SRV, TXT, CAA, SSHFP, TLSA, SMIMEA, DS, HTTPS, SVCB, OPENPGPKEY, CERT, URI, RP, LOC`. More details about types can be found [here](https://docs.ionos.com/cloud/network-services/cloud-dns/cloud-dns-faq#what-types-of-dns-records-does-cloud-dns-support).\n"
                    },
                    "zoneId": {
                        "type": "string",
                        "description": "[string] The DNS Zone ID in which the DNS Record will be created.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:dns/zone:Zone": {
            "description": "Manages a **DNS Zone**.\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **ionoscloud_dns_zone** resource. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.dns.Zone(\"example\", {\n    name: \"example.com\",\n    description: \"description\",\n    enabled: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.Zone(\"example\",\n    name=\"example.com\",\n    description=\"description\",\n    enabled=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Dns.Zone(\"example\", new()\n    {\n        Name = \"example.com\",\n        Description = \"description\",\n        Enabled = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewZone(ctx, \"example\", \u0026dns.ZoneArgs{\n\t\t\tName:        pulumi.String(\"example.com\"),\n\t\t\tDescription: pulumi.String(\"description\"),\n\t\t\tEnabled:     pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dns.Zone;\nimport com.ionoscloud.pulumi.ionoscloud.dns.ZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Zone(\"example\", ZoneArgs.builder()\n            .name(\"example.com\")\n            .description(\"description\")\n            .enabled(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:dns:Zone\n    properties:\n      name: example.com\n      description: description\n      enabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIn order to import a DNS Zone, you can define an empty DNS Zone resource in the plan:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.dns.Zone(\"example\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.Zone(\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Dns.Zone(\"example\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewZone(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.dns.Zone;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Zone(\"example\");\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:dns:Zone\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`zoneId`\" pulumi-lang-dotnet=\"`ZoneId`\" pulumi-lang-go=\"`zoneId`\" pulumi-lang-python=\"`zone_id`\" pulumi-lang-yaml=\"`zoneId`\" pulumi-lang-java=\"`zoneId`\"\u003e`zoneId`\u003c/span\u003e, for example:\n\n```sh\nterraform import ionoscloud_dns_zone.examplezone_id\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "[string] The description for the DNS Zone.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "[bool] Indicates if the DNS Zone is active or not. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the DNS Zone. This property is immutable.\n"
                },
                "nameservers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of available name servers."
                }
            },
            "required": [
                "enabled",
                "name",
                "nameservers"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "[string] The description for the DNS Zone.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "[bool] Indicates if the DNS Zone is active or not. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the DNS Zone. This property is immutable.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Zone resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "[string] The description for the DNS Zone.\n"
                    },
                    "enabled": {
                        "type": "boolean",
                        "description": "[bool] Indicates if the DNS Zone is active or not. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the DNS Zone. This property is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "nameservers": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of available name servers."
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:index/dnsReverseRecord:DnsReverseRecord": {
            "description": "Manages a [DNS Reverse Record](https://docs.ionos.com/cloud/network-services/cloud-dns/overview).\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **ionoscloud_dns_reverse_record** resource. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.IPBlock(\"example\", {\n    location: \"de/fra\",\n    size: 1,\n    name: \"example_ipblock\",\n});\nconst recordexample = new ionoscloud.DnsReverseRecord(\"recordexample\", {\n    name: \"reverse.record.example.com\",\n    description: \"example description\",\n    ip: example.ips[0],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.IPBlock(\"example\",\n    location=\"de/fra\",\n    size=1,\n    name=\"example_ipblock\")\nrecordexample = ionoscloud.DnsReverseRecord(\"recordexample\",\n    name=\"reverse.record.example.com\",\n    description=\"example description\",\n    ip=example.ips[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.IPBlock(\"example\", new()\n    {\n        Location = \"de/fra\",\n        Size = 1,\n        Name = \"example_ipblock\",\n    });\n\n    var recordexample = new Ionoscloud.Index.DnsReverseRecord(\"recordexample\", new()\n    {\n        Name = \"reverse.record.example.com\",\n        Description = \"example description\",\n        Ip = example.Ips.Apply(ips =\u003e ips[0]),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewIPBlock(ctx, \"example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t\tName:     pulumi.String(\"example_ipblock\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ionoscloud.NewDnsReverseRecord(ctx, \"recordexample\", \u0026ionoscloud.DnsReverseRecordArgs{\n\t\t\tName:        pulumi.String(\"reverse.record.example.com\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tIp: example.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.DnsReverseRecord;\nimport com.ionoscloud.pulumi.ionoscloud.DnsReverseRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new IPBlock(\"example\", IPBlockArgs.builder()\n            .location(\"de/fra\")\n            .size(1)\n            .name(\"example_ipblock\")\n            .build());\n\n        var recordexample = new DnsReverseRecord(\"recordexample\", DnsReverseRecordArgs.builder()\n            .name(\"reverse.record.example.com\")\n            .description(\"example description\")\n            .ip(example.ips().applyValue(_ips -\u003e _ips[0]))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:IPBlock\n    properties:\n      location: de/fra\n      size: 1\n      name: example_ipblock\n  recordexample:\n    type: ionoscloud:DnsReverseRecord\n    properties:\n      name: reverse.record.example.com\n      description: example description\n      ip: ${example.ips[0]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIn order to import a DNS Reverse Record, you can define an empty DNS Reverse Record resource in the plan:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.DnsReverseRecord(\"example\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.DnsReverseRecord(\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Index.DnsReverseRecord(\"example\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.NewDnsReverseRecord(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.DnsReverseRecord;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new DnsReverseRecord(\"example\");\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:DnsReverseRecord\n```\n\u003c!--End PulumiCodeChooser --\u003e\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`recordId`\" pulumi-lang-dotnet=\"`RecordId`\" pulumi-lang-go=\"`recordId`\" pulumi-lang-python=\"`record_id`\" pulumi-lang-yaml=\"`recordId`\" pulumi-lang-java=\"`recordId`\"\u003e`recordId`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:index/dnsReverseRecord:DnsReverseRecord example record_id\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "[string] Description stored along with the reverse DNS record to describe its usage.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "[string] Specifies for which IP address the reverse record should be created. The IP addresses needs to be owned by the contract.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The reverse DNS record name.\n"
                }
            },
            "required": [
                "ip",
                "name"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "[string] Description stored along with the reverse DNS record to describe its usage.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "[string] Specifies for which IP address the reverse record should be created. The IP addresses needs to be owned by the contract.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The reverse DNS record name.\n"
                }
            },
            "requiredInputs": [
                "ip"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DnsReverseRecord resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "[string] Description stored along with the reverse DNS record to describe its usage.\n"
                    },
                    "ip": {
                        "type": "string",
                        "description": "[string] Specifies for which IP address the reverse record should be created. The IP addresses needs to be owned by the contract.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The reverse DNS record name.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:index/gpuServer:GpuServer": {
            "description": "A GPU Server is a Virtual Machine (VM) provisioned from a GPU-enabled template.\n\nCheck out the [docs page](https://docs.ionos.com/cloud/compute-services/compute-engine/cloud-gpu-vm)\n\n## Example Usage\n\nThis resource will create an operational server. After this section completes, the provisioner can be called.\n\n### GPU Server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\nimport * as random from \"@pulumi/random\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"de/fra/2\",\n});\nconst webserverIpblock = new ionoscloud.compute.IPBlock(\"webserver_ipblock\", {\n    location: \"de/fra\",\n    size: 1,\n    name: \"webserver_ipblock\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": true,\n    name: \"Lan Example\",\n});\nconst serverImagePassword = new random.index.Password(\"server_image_password\", {\n    length: 16,\n    special: false,\n});\nconst exampleGPUServer = new ionoscloud.compute.GPUServer(\"example\", {\n    name: \"GPU Server Example\",\n    hostname: \"gpu-server-example\",\n    datacenterId: example.id,\n    availabilityZone: \"AUTO\",\n    templateUuid: \"6913ed82-a143-4c15-89ac-08fb375a97c5\",\n    imageName: \"ubuntu:latest\",\n    imagePassword: serverImagePassword.result,\n    vmState: \"RUNNING\",\n    volume: {\n        name: \"system\",\n        licenceType: \"LINUX\",\n        diskType: \"SSD Premium\",\n        bus: \"VIRTIO\",\n        availabilityZone: \"AUTO\",\n        exposeSerial: true,\n        requireLegacyBios: false,\n    },\n    nic: {\n        lan: exampleLan.id,\n        name: \"system\",\n        dhcp: true,\n        firewallActive: true,\n        firewallType: \"INGRESS\",\n        ips: [webserverIpblock.ips[0]],\n        firewall: {\n            protocol: \"TCP\",\n            name: \"SSH\",\n            portRangeStart: 22,\n            portRangeEnd: 22,\n            type: \"INGRESS\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\nimport pulumi_random as random\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"de/fra/2\")\nwebserver_ipblock = ionoscloud.compute.IPBlock(\"webserver_ipblock\",\n    location=\"de/fra\",\n    size=1,\n    name=\"webserver_ipblock\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=True,\n    name=\"Lan Example\")\nserver_image_password = random.Password(\"server_image_password\",\n    length=16,\n    special=False)\nexample_gpu_server = ionoscloud.compute.GPUServer(\"example\",\n    name=\"GPU Server Example\",\n    hostname=\"gpu-server-example\",\n    datacenter_id=example.id,\n    availability_zone=\"AUTO\",\n    template_uuid=\"6913ed82-a143-4c15-89ac-08fb375a97c5\",\n    image_name=\"ubuntu:latest\",\n    image_password=server_image_password[\"result\"],\n    vm_state=\"RUNNING\",\n    volume={\n        \"name\": \"system\",\n        \"licence_type\": \"LINUX\",\n        \"disk_type\": \"SSD Premium\",\n        \"bus\": \"VIRTIO\",\n        \"availability_zone\": \"AUTO\",\n        \"expose_serial\": True,\n        \"require_legacy_bios\": False,\n    },\n    nic={\n        \"lan\": example_lan.id,\n        \"name\": \"system\",\n        \"dhcp\": True,\n        \"firewall_active\": True,\n        \"firewall_type\": \"INGRESS\",\n        \"ips\": [webserver_ipblock.ips[0]],\n        \"firewall\": {\n            \"protocol\": \"TCP\",\n            \"name\": \"SSH\",\n            \"port_range_start\": 22,\n            \"port_range_end\": 22,\n            \"type\": \"INGRESS\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"de/fra/2\",\n    });\n\n    var webserverIpblock = new Ionoscloud.Compute.IPBlock(\"webserver_ipblock\", new()\n    {\n        Location = \"de/fra\",\n        Size = 1,\n        Name = \"webserver_ipblock\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = true,\n        Name = \"Lan Example\",\n    });\n\n    var serverImagePassword = new Random.Index.Password(\"server_image_password\", new()\n    {\n        Length = 16,\n        Special = false,\n    });\n\n    var exampleGPUServer = new Ionoscloud.Compute.GPUServer(\"example\", new()\n    {\n        Name = \"GPU Server Example\",\n        Hostname = \"gpu-server-example\",\n        DatacenterId = example.Id,\n        AvailabilityZone = \"AUTO\",\n        TemplateUuid = \"6913ed82-a143-4c15-89ac-08fb375a97c5\",\n        ImageName = \"ubuntu:latest\",\n        ImagePassword = serverImagePassword.Result,\n        VmState = \"RUNNING\",\n        Volume = new Ionoscloud.Compute.Inputs.GPUServerVolumeArgs\n        {\n            Name = \"system\",\n            LicenceType = \"LINUX\",\n            DiskType = \"SSD Premium\",\n            Bus = \"VIRTIO\",\n            AvailabilityZone = \"AUTO\",\n            ExposeSerial = true,\n            RequireLegacyBios = false,\n        },\n        Nic = new Ionoscloud.Compute.Inputs.GPUServerNicArgs\n        {\n            Lan = exampleLan.Id,\n            Name = \"system\",\n            Dhcp = true,\n            FirewallActive = true,\n            FirewallType = \"INGRESS\",\n            Ips = new[]\n            {\n                webserverIpblock.Ips.Apply(ips =\u003e ips[0]),\n            },\n            Firewall = new Ionoscloud.Compute.Inputs.GPUServerNicFirewallArgs\n            {\n                Protocol = \"TCP\",\n                Name = \"SSH\",\n                PortRangeStart = 22,\n                PortRangeEnd = 22,\n                Type = \"INGRESS\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation: pulumi.String(\"de/fra/2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserverIpblock, err := compute.NewIPBlock(ctx, \"webserver_ipblock\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t\tName:     pulumi.String(\"webserver_ipblock\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(true),\n\t\t\tName:         pulumi.String(\"Lan Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverImagePassword, err := random.NewPassword(ctx, \"server_image_password\", \u0026random.PasswordArgs{\n\t\t\tLength:  16,\n\t\t\tSpecial: false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGPUServer(ctx, \"example\", \u0026compute.GPUServerArgs{\n\t\t\tName:             pulumi.String(\"GPU Server Example\"),\n\t\t\tHostname:         pulumi.String(\"gpu-server-example\"),\n\t\t\tDatacenterId:     example.ID(),\n\t\t\tAvailabilityZone: pulumi.String(\"AUTO\"),\n\t\t\tTemplateUuid:     pulumi.String(\"6913ed82-a143-4c15-89ac-08fb375a97c5\"),\n\t\t\tImageName:        pulumi.String(\"ubuntu:latest\"),\n\t\t\tImagePassword:    serverImagePassword.Result,\n\t\t\tVmState:          pulumi.String(\"RUNNING\"),\n\t\t\tVolume: \u0026compute.GPUServerVolumeArgs{\n\t\t\t\tName:              pulumi.String(\"system\"),\n\t\t\t\tLicenceType:       pulumi.String(\"LINUX\"),\n\t\t\t\tDiskType:          pulumi.String(\"SSD Premium\"),\n\t\t\t\tBus:               pulumi.String(\"VIRTIO\"),\n\t\t\t\tAvailabilityZone:  pulumi.String(\"AUTO\"),\n\t\t\t\tExposeSerial:      pulumi.Bool(true),\n\t\t\t\tRequireLegacyBios: pulumi.Bool(false),\n\t\t\t},\n\t\t\tNic: \u0026compute.GPUServerNicArgs{\n\t\t\t\tLan:            exampleLan.ID(),\n\t\t\t\tName:           pulumi.String(\"system\"),\n\t\t\t\tDhcp:           pulumi.Bool(true),\n\t\t\t\tFirewallActive: pulumi.Bool(true),\n\t\t\t\tFirewallType:   pulumi.String(\"INGRESS\"),\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\twebserverIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\t\t\treturn ips[0], nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tFirewall: \u0026compute.GPUServerNicFirewallArgs{\n\t\t\t\t\tProtocol:       pulumi.String(\"TCP\"),\n\t\t\t\t\tName:           pulumi.String(\"SSH\"),\n\t\t\t\t\tPortRangeStart: pulumi.Int(22),\n\t\t\t\t\tPortRangeEnd:   pulumi.Int(22),\n\t\t\t\t\tType:           pulumi.String(\"INGRESS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.pulumi.random.password;\nimport com.pulumi.random.passwordArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.GPUServer;\nimport com.ionoscloud.pulumi.ionoscloud.compute.GPUServerArgs;\nimport com.pulumi.ionoscloud.compute.inputs.GPUServerVolumeArgs;\nimport com.pulumi.ionoscloud.compute.inputs.GPUServerNicArgs;\nimport com.pulumi.ionoscloud.compute.inputs.GPUServerNicFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"de/fra/2\")\n            .build());\n\n        var webserverIpblock = new IPBlock(\"webserverIpblock\", IPBlockArgs.builder()\n            .location(\"de/fra\")\n            .size(1)\n            .name(\"webserver_ipblock\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(true)\n            .name(\"Lan Example\")\n            .build());\n\n        var serverImagePassword = new Password(\"serverImagePassword\", PasswordArgs.builder()\n            .length(16)\n            .special(false)\n            .build());\n\n        var exampleGPUServer = new GPUServer(\"exampleGPUServer\", GPUServerArgs.builder()\n            .name(\"GPU Server Example\")\n            .hostname(\"gpu-server-example\")\n            .datacenterId(example.id())\n            .availabilityZone(\"AUTO\")\n            .templateUuid(\"6913ed82-a143-4c15-89ac-08fb375a97c5\")\n            .imageName(\"ubuntu:latest\")\n            .imagePassword(serverImagePassword.result())\n            .vmState(\"RUNNING\")\n            .volume(GPUServerVolumeArgs.builder()\n                .name(\"system\")\n                .licenceType(\"LINUX\")\n                .diskType(\"SSD Premium\")\n                .bus(\"VIRTIO\")\n                .availabilityZone(\"AUTO\")\n                .exposeSerial(true)\n                .requireLegacyBios(false)\n                .build())\n            .nic(GPUServerNicArgs.builder()\n                .lan(exampleLan.id())\n                .name(\"system\")\n                .dhcp(true)\n                .firewallActive(true)\n                .firewallType(\"INGRESS\")\n                .ips(webserverIpblock.ips().applyValue(_ips -\u003e _ips[0]))\n                .firewall(GPUServerNicFirewallArgs.builder()\n                    .protocol(\"TCP\")\n                    .name(\"SSH\")\n                    .portRangeStart(22)\n                    .portRangeEnd(22)\n                    .type(\"INGRESS\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: de/fra/2\n  webserverIpblock:\n    type: ionoscloud:compute:IPBlock\n    name: webserver_ipblock\n    properties:\n      location: de/fra\n      size: 1\n      name: webserver_ipblock\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: true\n      name: Lan Example\n  serverImagePassword:\n    type: random:password\n    name: server_image_password\n    properties:\n      length: 16\n      special: false\n  exampleGPUServer:\n    type: ionoscloud:compute:GPUServer\n    name: example\n    properties:\n      name: GPU Server Example\n      hostname: gpu-server-example\n      datacenterId: ${example.id}\n      availabilityZone: AUTO\n      templateUuid: 6913ed82-a143-4c15-89ac-08fb375a97c5\n      imageName: ubuntu:latest\n      imagePassword: ${serverImagePassword.result}\n      vmState: RUNNING\n      volume:\n        name: system\n        licenceType: LINUX\n        diskType: SSD Premium\n        bus: VIRTIO\n        availabilityZone: AUTO\n        exposeSerial: true\n        requireLegacyBios: false\n      nic:\n        lan: ${exampleLan.id}\n        name: system\n        dhcp: true\n        firewallActive: true\n        firewallType: INGRESS\n        ips:\n          - ${webserverIpblock.ips[0]}\n        firewall:\n          protocol: TCP\n          name: SSH\n          portRangeStart: 22\n          portRangeEnd: 22\n          type: INGRESS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource GPU Server can be imported using the `resource id` and the `datacenter id`, e.g.\n\n```sh\nterraform import ionoscloud_gpu_server.myserver datacenter uuid/server uuid\n```\n\n",
            "properties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n"
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "bootVolume": {
                    "type": "string",
                    "description": "The associated boot volume.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "firewallruleId": {
                    "type": "string",
                    "description": "The associated firewall rule.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server.\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n"
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "inlineVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list that contains the IDs for the volumes defined inside the gpu server resource."
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:index/GpuServerNic:GpuServerNic",
                    "description": "See the Nic section.\n"
                },
                "primaryIp": {
                    "type": "string",
                    "description": "The associated IP address.\n"
                },
                "primaryNic": {
                    "type": "string",
                    "description": "The associated NIC.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template used for creating a GPU server.\n"
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the GPU server. E.g: `RUNNING` or `SUSPENDED`.\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:index/GpuServerVolume:GpuServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "required": [
                "availabilityZone",
                "bootImage",
                "bootVolume",
                "datacenterId",
                "firewallruleId",
                "hostname",
                "imageName",
                "imagePassword",
                "inlineVolumeIds",
                "name",
                "primaryIp",
                "primaryNic",
                "sshKeyPaths",
                "templateUuid",
                "vmState",
                "volume"
            ],
            "inputProperties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "bootImage": {
                    "type": "string",
                    "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server.\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "imagePassword": {
                    "type": "string",
                    "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                    "secret": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the server.\n"
                },
                "nic": {
                    "$ref": "#/types/ionoscloud:index/GpuServerNic:GpuServerNic",
                    "description": "See the Nic section.\n"
                },
                "securityGroupsIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Security Group IDs for the resource.\n"
                },
                "sshKeyPaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                },
                "templateUuid": {
                    "type": "string",
                    "description": "[string] The UUID of the template used for creating a GPU server.\n",
                    "willReplaceOnChanges": true
                },
                "vmState": {
                    "type": "string",
                    "description": "[string] Sets the power state of the GPU server. E.g: `RUNNING` or `SUSPENDED`.\n"
                },
                "volume": {
                    "$ref": "#/types/ionoscloud:index/GpuServerVolume:GpuServerVolume",
                    "description": "See the Volume section.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "templateUuid",
                "volume"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GpuServer resources.\n",
                "properties": {
                    "allowReplace": {
                        "type": "boolean",
                        "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the server.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the server in order to do it. This field should be used with care, understanding the risks._**\n\n\u003e **⚠ WARNING**\n\u003e\n\u003e Image_name under volume level is deprecated, please use\u003cspan pulumi-lang-nodejs=\" imageName \" pulumi-lang-dotnet=\" ImageName \" pulumi-lang-go=\" imageName \" pulumi-lang-python=\" image_name \" pulumi-lang-yaml=\" imageName \" pulumi-lang-java=\" imageName \"\u003e imageName \u003c/span\u003eunder server level\n"
                    },
                    "availabilityZone": {
                        "type": "string",
                        "description": "[string] The availability zone in which the server should exist. This property is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "bootImage": {
                        "type": "string",
                        "description": "[string] The image or snapshot UUID / name. May also be an image alias. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided.\n"
                    },
                    "bootVolume": {
                        "type": "string",
                        "description": "The associated boot volume.\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "firewallruleId": {
                        "type": "string",
                        "description": "The associated firewall rule.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "(Computed) The hostname of the resource. Allowed characters are a-z, 0-9 and - (minus). Hostname should not start with minus and should not be longer than 63 characters. If no value provided explicitly, it will be populated with the name of the server.\n"
                    },
                    "imageName": {
                        "type": "string",
                        "description": "[string] The name, ID or alias of the image. May also be a snapshot ID. It is required if \u003cspan pulumi-lang-nodejs=\"`licenceType`\" pulumi-lang-dotnet=\"`LicenceType`\" pulumi-lang-go=\"`licenceType`\" pulumi-lang-python=\"`licence_type`\" pulumi-lang-yaml=\"`licenceType`\" pulumi-lang-java=\"`licenceType`\"\u003e`licenceType`\u003c/span\u003e is not provided. Attribute is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "imagePassword": {
                        "type": "string",
                        "description": "[string] Required if \u003cspan pulumi-lang-nodejs=\"`sshKeyPath`\" pulumi-lang-dotnet=\"`SshKeyPath`\" pulumi-lang-go=\"`sshKeyPath`\" pulumi-lang-python=\"`ssh_key_path`\" pulumi-lang-yaml=\"`sshKeyPath`\" pulumi-lang-java=\"`sshKeyPath`\"\u003e`sshKeyPath`\u003c/span\u003e is not provided.\n",
                        "secret": true
                    },
                    "inlineVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list that contains the IDs for the volumes defined inside the gpu server resource."
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the server.\n"
                    },
                    "nic": {
                        "$ref": "#/types/ionoscloud:index/GpuServerNic:GpuServerNic",
                        "description": "See the Nic section.\n"
                    },
                    "primaryIp": {
                        "type": "string",
                        "description": "The associated IP address.\n"
                    },
                    "primaryNic": {
                        "type": "string",
                        "description": "The associated NIC.\n"
                    },
                    "securityGroupsIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of Security Group IDs for the resource.\n"
                    },
                    "sshKeyPaths": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] List of paths to files containing a public SSH key that will be injected into IonosCloud provided Linux images. Required for IonosCloud Linux images. Required if \u003cspan pulumi-lang-nodejs=\"`imagePassword`\" pulumi-lang-dotnet=\"`ImagePassword`\" pulumi-lang-go=\"`imagePassword`\" pulumi-lang-python=\"`image_password`\" pulumi-lang-yaml=\"`imagePassword`\" pulumi-lang-java=\"`imagePassword`\"\u003e`imagePassword`\u003c/span\u003e is not provided.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "[string] The UUID of the template used for creating a GPU server.\n",
                        "willReplaceOnChanges": true
                    },
                    "vmState": {
                        "type": "string",
                        "description": "[string] Sets the power state of the GPU server. E.g: `RUNNING` or `SUSPENDED`.\n"
                    },
                    "volume": {
                        "$ref": "#/types/ionoscloud:index/GpuServerVolume:GpuServerVolume",
                        "description": "See the Volume section.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "ionoscloud.index/gpuserver.GpuServer has been deprecated in favor of ionoscloud.compute/gpuserver.GPUServer"
        },
        "ionoscloud:k8s/cluster:Cluster": {
            "description": "Manages a [Managed Kubernetes Cluster](https://docs.ionos.com/cloud/containers/managed-kubernetes/overview) on IonosCloud.\n\n## Example Usage\n\n### Public cluster\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.k8s.Cluster(\"example\", {\n    name: \"k8sClusterExample\",\n    k8sVersion: \"1.31.2\",\n    maintenanceWindow: {\n        dayOfTheWeek: \"Sunday\",\n        time: \"09:00:00Z\",\n    },\n    apiSubnetAllowLists: [\"1.2.3.4/32\"],\n    s3Buckets: [{\n        name: \"globally_unique_bucket_name\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.k8s.Cluster(\"example\",\n    name=\"k8sClusterExample\",\n    k8s_version=\"1.31.2\",\n    maintenance_window={\n        \"day_of_the_week\": \"Sunday\",\n        \"time\": \"09:00:00Z\",\n    },\n    api_subnet_allow_lists=[\"1.2.3.4/32\"],\n    s3_buckets=[{\n        \"name\": \"globally_unique_bucket_name\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.K8s.Cluster(\"example\", new()\n    {\n        Name = \"k8sClusterExample\",\n        K8sVersion = \"1.31.2\",\n        MaintenanceWindow = new Ionoscloud.K8s.Inputs.ClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Sunday\",\n            Time = \"09:00:00Z\",\n        },\n        ApiSubnetAllowLists = new[]\n        {\n            \"1.2.3.4/32\",\n        },\n        S3Buckets = new[]\n        {\n            new Ionoscloud.K8s.Inputs.ClusterS3BucketArgs\n            {\n                Name = \"globally_unique_bucket_name\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.NewCluster(ctx, \"example\", \u0026k8s.ClusterArgs{\n\t\t\tName:       pulumi.String(\"k8sClusterExample\"),\n\t\t\tK8sVersion: pulumi.String(\"1.31.2\"),\n\t\t\tMaintenanceWindow: \u0026k8s.ClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Sunday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00Z\"),\n\t\t\t},\n\t\t\tApiSubnetAllowLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1.2.3.4/32\"),\n\t\t\t},\n\t\t\tS3Buckets: k8s.ClusterS3BucketArray{\n\t\t\t\t\u0026k8s.ClusterS3BucketArgs{\n\t\t\t\t\tName: pulumi.String(\"globally_unique_bucket_name\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.ClusterArgs;\nimport com.pulumi.ionoscloud.k8s.inputs.ClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.k8s.inputs.ClusterS3BucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Cluster(\"example\", ClusterArgs.builder()\n            .name(\"k8sClusterExample\")\n            .k8sVersion(\"1.31.2\")\n            .maintenanceWindow(ClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Sunday\")\n                .time(\"09:00:00Z\")\n                .build())\n            .apiSubnetAllowLists(\"1.2.3.4/32\")\n            .s3Buckets(ClusterS3BucketArgs.builder()\n                .name(\"globally_unique_bucket_name\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:k8s:Cluster\n    properties:\n      name: k8sClusterExample\n      k8sVersion: 1.31.2\n      maintenanceWindow:\n        dayOfTheWeek: Sunday\n        time: 09:00:00Z\n      apiSubnetAllowLists:\n        - 1.2.3.4/32\n      s3Buckets:\n        - name: globally_unique_bucket_name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private Cluster\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst testdatacenter = new ionoscloud.compute.Datacenter(\"testdatacenter\", {\n    name: \"example\",\n    location: \"de/fra\",\n    description: \"Test datacenter\",\n});\nconst k8sip = new ionoscloud.compute.IPBlock(\"k8sip\", {\n    location: \"de/fra\",\n    size: 1,\n    name: \"IP Block Private K8s\",\n});\nconst example = new ionoscloud.k8s.Cluster(\"example\", {\n    name: \"k8sClusterExample\",\n    k8sVersion: \"1.31.2\",\n    maintenanceWindow: {\n        dayOfTheWeek: \"Sunday\",\n        time: \"09:00:00Z\",\n    },\n    apiSubnetAllowLists: [\"1.2.3.4/32\"],\n    s3Buckets: [{\n        name: \"globally_unique_bucket_name\",\n    }],\n    location: \"de/fra\",\n    natGatewayIp: k8sip.ips[0],\n    nodeSubnet: \"192.168.0.0/16\",\n    \"public\": false,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\ntestdatacenter = ionoscloud.compute.Datacenter(\"testdatacenter\",\n    name=\"example\",\n    location=\"de/fra\",\n    description=\"Test datacenter\")\nk8sip = ionoscloud.compute.IPBlock(\"k8sip\",\n    location=\"de/fra\",\n    size=1,\n    name=\"IP Block Private K8s\")\nexample = ionoscloud.k8s.Cluster(\"example\",\n    name=\"k8sClusterExample\",\n    k8s_version=\"1.31.2\",\n    maintenance_window={\n        \"day_of_the_week\": \"Sunday\",\n        \"time\": \"09:00:00Z\",\n    },\n    api_subnet_allow_lists=[\"1.2.3.4/32\"],\n    s3_buckets=[{\n        \"name\": \"globally_unique_bucket_name\",\n    }],\n    location=\"de/fra\",\n    nat_gateway_ip=k8sip.ips[0],\n    node_subnet=\"192.168.0.0/16\",\n    public=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testdatacenter = new Ionoscloud.Compute.Datacenter(\"testdatacenter\", new()\n    {\n        Name = \"example\",\n        Location = \"de/fra\",\n        Description = \"Test datacenter\",\n    });\n\n    var k8sip = new Ionoscloud.Compute.IPBlock(\"k8sip\", new()\n    {\n        Location = \"de/fra\",\n        Size = 1,\n        Name = \"IP Block Private K8s\",\n    });\n\n    var example = new Ionoscloud.K8s.Cluster(\"example\", new()\n    {\n        Name = \"k8sClusterExample\",\n        K8sVersion = \"1.31.2\",\n        MaintenanceWindow = new Ionoscloud.K8s.Inputs.ClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Sunday\",\n            Time = \"09:00:00Z\",\n        },\n        ApiSubnetAllowLists = new[]\n        {\n            \"1.2.3.4/32\",\n        },\n        S3Buckets = new[]\n        {\n            new Ionoscloud.K8s.Inputs.ClusterS3BucketArgs\n            {\n                Name = \"globally_unique_bucket_name\",\n            },\n        },\n        Location = \"de/fra\",\n        NatGatewayIp = k8sip.Ips.Apply(ips =\u003e ips[0]),\n        NodeSubnet = \"192.168.0.0/16\",\n        Public = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewDatacenter(ctx, \"testdatacenter\", \u0026compute.DatacenterArgs{\n\t\t\tName:        pulumi.String(\"example\"),\n\t\t\tLocation:    pulumi.String(\"de/fra\"),\n\t\t\tDescription: pulumi.String(\"Test datacenter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tk8sip, err := compute.NewIPBlock(ctx, \"k8sip\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t\tName:     pulumi.String(\"IP Block Private K8s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = k8s.NewCluster(ctx, \"example\", \u0026k8s.ClusterArgs{\n\t\t\tName:       pulumi.String(\"k8sClusterExample\"),\n\t\t\tK8sVersion: pulumi.String(\"1.31.2\"),\n\t\t\tMaintenanceWindow: \u0026k8s.ClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Sunday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00Z\"),\n\t\t\t},\n\t\t\tApiSubnetAllowLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1.2.3.4/32\"),\n\t\t\t},\n\t\t\tS3Buckets: k8s.ClusterS3BucketArray{\n\t\t\t\t\u0026k8s.ClusterS3BucketArgs{\n\t\t\t\t\tName: pulumi.String(\"globally_unique_bucket_name\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tNatGatewayIp: k8sip.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tNodeSubnet: pulumi.String(\"192.168.0.0/16\"),\n\t\t\tPublic:     pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.ClusterArgs;\nimport com.pulumi.ionoscloud.k8s.inputs.ClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.k8s.inputs.ClusterS3BucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testdatacenter = new Datacenter(\"testdatacenter\", DatacenterArgs.builder()\n            .name(\"example\")\n            .location(\"de/fra\")\n            .description(\"Test datacenter\")\n            .build());\n\n        var k8sip = new IPBlock(\"k8sip\", IPBlockArgs.builder()\n            .location(\"de/fra\")\n            .size(1)\n            .name(\"IP Block Private K8s\")\n            .build());\n\n        var example = new Cluster(\"example\", ClusterArgs.builder()\n            .name(\"k8sClusterExample\")\n            .k8sVersion(\"1.31.2\")\n            .maintenanceWindow(ClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Sunday\")\n                .time(\"09:00:00Z\")\n                .build())\n            .apiSubnetAllowLists(\"1.2.3.4/32\")\n            .s3Buckets(ClusterS3BucketArgs.builder()\n                .name(\"globally_unique_bucket_name\")\n                .build())\n            .location(\"de/fra\")\n            .natGatewayIp(k8sip.ips().applyValue(_ips -\u003e _ips[0]))\n            .nodeSubnet(\"192.168.0.0/16\")\n            .public_(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testdatacenter:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: example\n      location: de/fra\n      description: Test datacenter\n  k8sip:\n    type: ionoscloud:compute:IPBlock\n    properties:\n      location: de/fra\n      size: 1\n      name: IP Block Private K8s\n  example:\n    type: ionoscloud:k8s:Cluster\n    properties:\n      name: k8sClusterExample\n      k8sVersion: 1.31.2\n      maintenanceWindow:\n        dayOfTheWeek: Sunday\n        time: 09:00:00Z\n      apiSubnetAllowLists:\n        - 1.2.3.4/32\n      s3Buckets:\n        - name: globally_unique_bucket_name\n      location: de/fra\n      natGatewayIp: ${k8sip.ips[0]}\n      nodeSubnet: 192.168.0.0/16\n      public: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Kubernetes Cluster resource can be imported using its `resource id`, e.g.\n\n```sh\nterraform import ionoscloud_k8s_cluster.demo k8s_cluster uuid\n```\n\nThis can be helpful when you want to import kubernetes clusters which you have already created manually or using other means, outside of terraform.\n\n⚠️ **_Warning: **During a maintenance window, k8s can update your \u003cspan pulumi-lang-nodejs=\"`k8sVersion`\" pulumi-lang-dotnet=\"`K8sVersion`\" pulumi-lang-go=\"`k8sVersion`\" pulumi-lang-python=\"`k8s_version`\" pulumi-lang-yaml=\"`k8sVersion`\" pulumi-lang-java=\"`k8sVersion`\"\u003e`k8sVersion`\u003c/span\u003e if the old one reaches end of life. This upgrade will not be shown in the plan, as we prevent\nterraform from doing a downgrade, as downgrading \u003cspan pulumi-lang-nodejs=\"`k8sVersion`\" pulumi-lang-dotnet=\"`K8sVersion`\" pulumi-lang-go=\"`k8sVersion`\" pulumi-lang-python=\"`k8s_version`\" pulumi-lang-yaml=\"`k8sVersion`\" pulumi-lang-java=\"`k8sVersion`\"\u003e`k8sVersion`\u003c/span\u003e is not supported._**\n\n",
            "properties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the cluster.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the cluster in order to do it. Set the field to true only if you know what you are doing._**\n"
                },
                "apiSubnetAllowLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Access to the K8s API server is restricted to these CIDRs. Cluster-internal traffic is not affected by this restriction. If no allowlist is specified, access is not restricted. If an IP without subnet mask is provided, the default value will be used: 32 for IPv4 and 128 for IPv6.\n"
                },
                "k8sVersion": {
                    "type": "string",
                    "description": "[string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] This attribute is mandatory if the cluster is private. The location must be enabled for your contract, or you must have a data center at that location. This property is not adjustable.\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:k8s/ClusterMaintenanceWindow:ClusterMaintenanceWindow",
                    "description": "A maintenance window comprise of a day of the week and a time for maintenance to be allowed\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Kubernetes Cluster.\n"
                },
                "natGatewayIp": {
                    "type": "string",
                    "description": "[string] The NAT gateway IP of the cluster if the cluster is private. This attribute is immutable. Must be a reserved IP in the same location as the cluster's location. This attribute is mandatory if the cluster is private.\n"
                },
                "nodeSubnet": {
                    "type": "string",
                    "description": "[string] The node subnet of the cluster, if the cluster is private. This attribute is optional and immutable. Must be a valid CIDR notation for an IPv4 network prefix of 16 bits length.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "[boolean] Indicates if the cluster is public or private. This attribute is immutable.\n"
                },
                "s3Buckets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/ClusterS3Bucket:ClusterS3Bucket"
                    },
                    "description": "[list] List of IONOS Object Storage buckets configured for K8s usage. For now it contains only an IONOS Object Storage bucket used to store K8s API audit logs.\n"
                },
                "viableNodePoolVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] List of versions that may be used for node pools under this cluster\n"
                }
            },
            "required": [
                "k8sVersion",
                "maintenanceWindow",
                "name",
                "nodeSubnet",
                "viableNodePoolVersions"
            ],
            "inputProperties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the cluster.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the cluster in order to do it. Set the field to true only if you know what you are doing._**\n"
                },
                "apiSubnetAllowLists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Access to the K8s API server is restricted to these CIDRs. Cluster-internal traffic is not affected by this restriction. If no allowlist is specified, access is not restricted. If an IP without subnet mask is provided, the default value will be used: 32 for IPv4 and 128 for IPv6.\n"
                },
                "k8sVersion": {
                    "type": "string",
                    "description": "[string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] This attribute is mandatory if the cluster is private. The location must be enabled for your contract, or you must have a data center at that location. This property is not adjustable.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:k8s/ClusterMaintenanceWindow:ClusterMaintenanceWindow",
                    "description": "A maintenance window comprise of a day of the week and a time for maintenance to be allowed\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Kubernetes Cluster.\n"
                },
                "natGatewayIp": {
                    "type": "string",
                    "description": "[string] The NAT gateway IP of the cluster if the cluster is private. This attribute is immutable. Must be a reserved IP in the same location as the cluster's location. This attribute is mandatory if the cluster is private.\n",
                    "willReplaceOnChanges": true
                },
                "nodeSubnet": {
                    "type": "string",
                    "description": "[string] The node subnet of the cluster, if the cluster is private. This attribute is optional and immutable. Must be a valid CIDR notation for an IPv4 network prefix of 16 bits length.\n",
                    "willReplaceOnChanges": true
                },
                "public": {
                    "type": "boolean",
                    "description": "[boolean] Indicates if the cluster is public or private. This attribute is immutable.\n",
                    "willReplaceOnChanges": true
                },
                "s3Buckets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/ClusterS3Bucket:ClusterS3Bucket"
                    },
                    "description": "[list] List of IONOS Object Storage buckets configured for K8s usage. For now it contains only an IONOS Object Storage bucket used to store K8s API audit logs.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Cluster resources.\n",
                "properties": {
                    "allowReplace": {
                        "type": "boolean",
                        "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the cluster.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the cluster in order to do it. Set the field to true only if you know what you are doing._**\n"
                    },
                    "apiSubnetAllowLists": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Access to the K8s API server is restricted to these CIDRs. Cluster-internal traffic is not affected by this restriction. If no allowlist is specified, access is not restricted. If an IP without subnet mask is provided, the default value will be used: 32 for IPv4 and 128 for IPv6.\n"
                    },
                    "k8sVersion": {
                        "type": "string",
                        "description": "[string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] This attribute is mandatory if the cluster is private. The location must be enabled for your contract, or you must have a data center at that location. This property is not adjustable.\n",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:k8s/ClusterMaintenanceWindow:ClusterMaintenanceWindow",
                        "description": "A maintenance window comprise of a day of the week and a time for maintenance to be allowed\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Kubernetes Cluster.\n"
                    },
                    "natGatewayIp": {
                        "type": "string",
                        "description": "[string] The NAT gateway IP of the cluster if the cluster is private. This attribute is immutable. Must be a reserved IP in the same location as the cluster's location. This attribute is mandatory if the cluster is private.\n",
                        "willReplaceOnChanges": true
                    },
                    "nodeSubnet": {
                        "type": "string",
                        "description": "[string] The node subnet of the cluster, if the cluster is private. This attribute is optional and immutable. Must be a valid CIDR notation for an IPv4 network prefix of 16 bits length.\n",
                        "willReplaceOnChanges": true
                    },
                    "public": {
                        "type": "boolean",
                        "description": "[boolean] Indicates if the cluster is public or private. This attribute is immutable.\n",
                        "willReplaceOnChanges": true
                    },
                    "s3Buckets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/ClusterS3Bucket:ClusterS3Bucket"
                        },
                        "description": "[list] List of IONOS Object Storage buckets configured for K8s usage. For now it contains only an IONOS Object Storage bucket used to store K8s API audit logs.\n"
                    },
                    "viableNodePoolVersions": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] List of versions that may be used for node pools under this cluster\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:k8s/nodePool:NodePool": {
            "description": "Manages a **Managed Kubernetes Node Pool**, part of a managed Kubernetes cluster on IonosCloud.\n\n## Import\n\nA Kubernetes Node Pool resource can be imported using its Kubernetes cluster's uuid as well as its own UUID, both of which you can retrieve from the cloud API: `resource id`, e.g.:\n\n```sh\n$ pulumi import ionoscloud:k8s/nodePool:NodePool demo k8s_cluster_uuid/k8s_nodepool_id\n```\n\nThis can be helpful when you want to import kubernetes node pools which you have already created manually or using other means, outside of terraform, towards the goal of managing them via Terraform\n\n⚠️ **_Warning: **During a maintenance window, k8s can update your \u003cspan pulumi-lang-nodejs=\"`k8sVersion`\" pulumi-lang-dotnet=\"`K8sVersion`\" pulumi-lang-go=\"`k8sVersion`\" pulumi-lang-python=\"`k8s_version`\" pulumi-lang-yaml=\"`k8sVersion`\" pulumi-lang-java=\"`k8sVersion`\"\u003e`k8sVersion`\u003c/span\u003e if the old one reaches end of life. This upgrade will not be shown in the plan, as we prevent \nterraform from doing a downgrade, as downgrading \u003cspan pulumi-lang-nodejs=\"`k8sVersion`\" pulumi-lang-dotnet=\"`K8sVersion`\" pulumi-lang-go=\"`k8sVersion`\" pulumi-lang-python=\"`k8s_version`\" pulumi-lang-yaml=\"`k8sVersion`\" pulumi-lang-java=\"`k8sVersion`\"\u003e`k8sVersion`\u003c/span\u003e is not supported._**\n\n⚠️ **_Warning: **If you are upgrading from v5.x.x to v6.x.x**: You have to modify you plan for lans to match the new structure, by putting the ids from the old slice in lans.id fields. This is not backwards compatible._**\n\n",
            "properties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing.\nThis will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade._**\n\nImmutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.\n\n⚠️ **Note**:\n\nBe careful when using \u003cspan pulumi-lang-nodejs=\"`autoScaling`\" pulumi-lang-dotnet=\"`AutoScaling`\" pulumi-lang-go=\"`autoScaling`\" pulumi-lang-python=\"`auto_scaling`\" pulumi-lang-yaml=\"`autoScaling`\" pulumi-lang-java=\"`autoScaling`\"\u003e`autoScaling`\u003c/span\u003e since the number of nodes can change. Because of that, when running\n`pulumi preview`, Terraform will think that an update is required (since \u003cspan pulumi-lang-nodejs=\"`nodeCount`\" pulumi-lang-dotnet=\"`NodeCount`\" pulumi-lang-go=\"`nodeCount`\" pulumi-lang-python=\"`node_count`\" pulumi-lang-yaml=\"`nodeCount`\" pulumi-lang-java=\"`nodeCount`\"\u003e`nodeCount`\u003c/span\u003e from the \u003cspan pulumi-lang-nodejs=\"`tf`\" pulumi-lang-dotnet=\"`Tf`\" pulumi-lang-go=\"`tf`\" pulumi-lang-python=\"`tf`\" pulumi-lang-yaml=\"`tf`\" pulumi-lang-java=\"`tf`\"\u003e`tf`\u003c/span\u003e plan will be different\nfrom the number of nodes set by the scheduler). To avoid that, you can use:\n"
                },
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A key/value map of annotations\n"
                },
                "autoScaling": {
                    "$ref": "#/types/ionoscloud:k8s/NodePoolAutoScaling:NodePoolAutoScaling",
                    "description": "[string] Whether the Node Pool should autoscale. For more details, please check the API documentation\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] - The desired Compute availability zone - See the API documentation for more information. *This attribute is immutable*.\n"
                },
                "coresCount": {
                    "type": "integer",
                    "description": "[int] - The CPU cores count for each node of the node pool. *This attribute is immutable*.\n"
                },
                "cpuFamily": {
                    "type": "string",
                    "description": "[string] The desired CPU Family - See the API documentation for more information. *This attribute is immutable*.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID\n"
                },
                "k8sClusterId": {
                    "type": "string",
                    "description": "[string] A k8s cluster's UUID\n"
                },
                "k8sVersion": {
                    "type": "string",
                    "description": "[string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A key/value map of labels\n"
                },
                "lans": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/NodePoolLan:NodePoolLan"
                    },
                    "description": "[list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:k8s/NodePoolMaintenanceWindow:NodePoolMaintenanceWindow",
                    "description": "See the **maintenance_window** section in the example above\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Kubernetes Cluster. *This attribute is immutable*.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "[int] - The desired number of nodes in the node pool\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] A list of public IPs associated with the node pool; must have at least \u003cspan pulumi-lang-nodejs=\"`nodeCount \" pulumi-lang-dotnet=\"`NodeCount \" pulumi-lang-go=\"`nodeCount \" pulumi-lang-python=\"`node_count \" pulumi-lang-yaml=\"`nodeCount \" pulumi-lang-java=\"`nodeCount \"\u003e`nodeCount \u003c/span\u003e+ 1` elements\n"
                },
                "ramSize": {
                    "type": "integer",
                    "description": "[int] - The desired amount of RAM, in MB. *This attribute is immutable*.\n"
                },
                "serverType": {
                    "type": "string",
                    "description": "[string] The server type for the compute engine - See the API documentation for more information. Possible values: `DedicatedCore`, `VCPU`\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "[int] - The size of the volume in GB. The size should be greater than 10GB. *This attribute is immutable*.\n"
                },
                "storageType": {
                    "type": "string",
                    "description": "[string] - The desired storage type - SSD/HDD. *This attribute is immutable*.\n"
                }
            },
            "required": [
                "availabilityZone",
                "coresCount",
                "datacenterId",
                "k8sClusterId",
                "k8sVersion",
                "maintenanceWindow",
                "name",
                "nodeCount",
                "ramSize",
                "storageSize",
                "storageType"
            ],
            "inputProperties": {
                "allowReplace": {
                    "type": "boolean",
                    "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing.\nThis will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade._**\n\nImmutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.\n\n⚠️ **Note**:\n\nBe careful when using \u003cspan pulumi-lang-nodejs=\"`autoScaling`\" pulumi-lang-dotnet=\"`AutoScaling`\" pulumi-lang-go=\"`autoScaling`\" pulumi-lang-python=\"`auto_scaling`\" pulumi-lang-yaml=\"`autoScaling`\" pulumi-lang-java=\"`autoScaling`\"\u003e`autoScaling`\u003c/span\u003e since the number of nodes can change. Because of that, when running\n`pulumi preview`, Terraform will think that an update is required (since \u003cspan pulumi-lang-nodejs=\"`nodeCount`\" pulumi-lang-dotnet=\"`NodeCount`\" pulumi-lang-go=\"`nodeCount`\" pulumi-lang-python=\"`node_count`\" pulumi-lang-yaml=\"`nodeCount`\" pulumi-lang-java=\"`nodeCount`\"\u003e`nodeCount`\u003c/span\u003e from the \u003cspan pulumi-lang-nodejs=\"`tf`\" pulumi-lang-dotnet=\"`Tf`\" pulumi-lang-go=\"`tf`\" pulumi-lang-python=\"`tf`\" pulumi-lang-yaml=\"`tf`\" pulumi-lang-java=\"`tf`\"\u003e`tf`\u003c/span\u003e plan will be different\nfrom the number of nodes set by the scheduler). To avoid that, you can use:\n"
                },
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A key/value map of annotations\n"
                },
                "autoScaling": {
                    "$ref": "#/types/ionoscloud:k8s/NodePoolAutoScaling:NodePoolAutoScaling",
                    "description": "[string] Whether the Node Pool should autoscale. For more details, please check the API documentation\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "[string] - The desired Compute availability zone - See the API documentation for more information. *This attribute is immutable*.\n",
                    "willReplaceOnChanges": true
                },
                "coresCount": {
                    "type": "integer",
                    "description": "[int] - The CPU cores count for each node of the node pool. *This attribute is immutable*.\n",
                    "willReplaceOnChanges": true
                },
                "cpuFamily": {
                    "type": "string",
                    "description": "[string] The desired CPU Family - See the API documentation for more information. *This attribute is immutable*.\n",
                    "willReplaceOnChanges": true
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID\n",
                    "willReplaceOnChanges": true
                },
                "k8sClusterId": {
                    "type": "string",
                    "description": "[string] A k8s cluster's UUID\n",
                    "willReplaceOnChanges": true
                },
                "k8sVersion": {
                    "type": "string",
                    "description": "[string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A key/value map of labels\n"
                },
                "lans": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:k8s/NodePoolLan:NodePoolLan"
                    },
                    "description": "[list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:k8s/NodePoolMaintenanceWindow:NodePoolMaintenanceWindow",
                    "description": "See the **maintenance_window** section in the example above\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Kubernetes Cluster. *This attribute is immutable*.\n",
                    "willReplaceOnChanges": true
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "[int] - The desired number of nodes in the node pool\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] A list of public IPs associated with the node pool; must have at least \u003cspan pulumi-lang-nodejs=\"`nodeCount \" pulumi-lang-dotnet=\"`NodeCount \" pulumi-lang-go=\"`nodeCount \" pulumi-lang-python=\"`node_count \" pulumi-lang-yaml=\"`nodeCount \" pulumi-lang-java=\"`nodeCount \"\u003e`nodeCount \u003c/span\u003e+ 1` elements\n"
                },
                "ramSize": {
                    "type": "integer",
                    "description": "[int] - The desired amount of RAM, in MB. *This attribute is immutable*.\n",
                    "willReplaceOnChanges": true
                },
                "serverType": {
                    "type": "string",
                    "description": "[string] The server type for the compute engine - See the API documentation for more information. Possible values: `DedicatedCore`, `VCPU`\n"
                },
                "storageSize": {
                    "type": "integer",
                    "description": "[int] - The size of the volume in GB. The size should be greater than 10GB. *This attribute is immutable*.\n",
                    "willReplaceOnChanges": true
                },
                "storageType": {
                    "type": "string",
                    "description": "[string] - The desired storage type - SSD/HDD. *This attribute is immutable*.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "availabilityZone",
                "coresCount",
                "datacenterId",
                "k8sClusterId",
                "k8sVersion",
                "nodeCount",
                "ramSize",
                "storageSize",
                "storageType"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering NodePool resources.\n",
                "properties": {
                    "allowReplace": {
                        "type": "boolean",
                        "description": "[bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.\n\n⚠️ **_Warning: \u003cspan pulumi-lang-nodejs=\"`allowReplace`\" pulumi-lang-dotnet=\"`AllowReplace`\" pulumi-lang-go=\"`allowReplace`\" pulumi-lang-python=\"`allow_replace`\" pulumi-lang-yaml=\"`allowReplace`\" pulumi-lang-java=\"`allowReplace`\"\u003e`allowReplace`\u003c/span\u003e - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing.\nThis will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade._**\n\nImmutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.\n\n⚠️ **Note**:\n\nBe careful when using \u003cspan pulumi-lang-nodejs=\"`autoScaling`\" pulumi-lang-dotnet=\"`AutoScaling`\" pulumi-lang-go=\"`autoScaling`\" pulumi-lang-python=\"`auto_scaling`\" pulumi-lang-yaml=\"`autoScaling`\" pulumi-lang-java=\"`autoScaling`\"\u003e`autoScaling`\u003c/span\u003e since the number of nodes can change. Because of that, when running\n`pulumi preview`, Terraform will think that an update is required (since \u003cspan pulumi-lang-nodejs=\"`nodeCount`\" pulumi-lang-dotnet=\"`NodeCount`\" pulumi-lang-go=\"`nodeCount`\" pulumi-lang-python=\"`node_count`\" pulumi-lang-yaml=\"`nodeCount`\" pulumi-lang-java=\"`nodeCount`\"\u003e`nodeCount`\u003c/span\u003e from the \u003cspan pulumi-lang-nodejs=\"`tf`\" pulumi-lang-dotnet=\"`Tf`\" pulumi-lang-go=\"`tf`\" pulumi-lang-python=\"`tf`\" pulumi-lang-yaml=\"`tf`\" pulumi-lang-java=\"`tf`\"\u003e`tf`\u003c/span\u003e plan will be different\nfrom the number of nodes set by the scheduler). To avoid that, you can use:\n"
                    },
                    "annotations": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "[map] A key/value map of annotations\n"
                    },
                    "autoScaling": {
                        "$ref": "#/types/ionoscloud:k8s/NodePoolAutoScaling:NodePoolAutoScaling",
                        "description": "[string] Whether the Node Pool should autoscale. For more details, please check the API documentation\n"
                    },
                    "availabilityZone": {
                        "type": "string",
                        "description": "[string] - The desired Compute availability zone - See the API documentation for more information. *This attribute is immutable*.\n",
                        "willReplaceOnChanges": true
                    },
                    "coresCount": {
                        "type": "integer",
                        "description": "[int] - The CPU cores count for each node of the node pool. *This attribute is immutable*.\n",
                        "willReplaceOnChanges": true
                    },
                    "cpuFamily": {
                        "type": "string",
                        "description": "[string] The desired CPU Family - See the API documentation for more information. *This attribute is immutable*.\n",
                        "willReplaceOnChanges": true
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] A Datacenter's UUID\n",
                        "willReplaceOnChanges": true
                    },
                    "k8sClusterId": {
                        "type": "string",
                        "description": "[string] A k8s cluster's UUID\n",
                        "willReplaceOnChanges": true
                    },
                    "k8sVersion": {
                        "type": "string",
                        "description": "[string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.\n"
                    },
                    "labels": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "[map] A key/value map of labels\n"
                    },
                    "lans": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/NodePoolLan:NodePoolLan"
                        },
                        "description": "[list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:k8s/NodePoolMaintenanceWindow:NodePoolMaintenanceWindow",
                        "description": "See the **maintenance_window** section in the example above\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Kubernetes Cluster. *This attribute is immutable*.\n",
                        "willReplaceOnChanges": true
                    },
                    "nodeCount": {
                        "type": "integer",
                        "description": "[int] - The desired number of nodes in the node pool\n"
                    },
                    "publicIps": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] A list of public IPs associated with the node pool; must have at least \u003cspan pulumi-lang-nodejs=\"`nodeCount \" pulumi-lang-dotnet=\"`NodeCount \" pulumi-lang-go=\"`nodeCount \" pulumi-lang-python=\"`node_count \" pulumi-lang-yaml=\"`nodeCount \" pulumi-lang-java=\"`nodeCount \"\u003e`nodeCount \u003c/span\u003e+ 1` elements\n"
                    },
                    "ramSize": {
                        "type": "integer",
                        "description": "[int] - The desired amount of RAM, in MB. *This attribute is immutable*.\n",
                        "willReplaceOnChanges": true
                    },
                    "serverType": {
                        "type": "string",
                        "description": "[string] The server type for the compute engine - See the API documentation for more information. Possible values: `DedicatedCore`, `VCPU`\n"
                    },
                    "storageSize": {
                        "type": "integer",
                        "description": "[int] - The size of the volume in GB. The size should be greater than 10GB. *This attribute is immutable*.\n",
                        "willReplaceOnChanges": true
                    },
                    "storageType": {
                        "type": "string",
                        "description": "[string] - The desired storage type - SSD/HDD. *This attribute is immutable*.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:kafka/cluster:Cluster": {
            "description": "Manages a [Kafka Cluster](https://docs.ionos.com/cloud/data-analytics/kafka/overview) on IonosCloud.\n\n## Example Usage\n\nThis resource will create an operational Kafka Cluster. After this section completes, the provisioner can be called.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"example-kafka-datacenter\",\n    location: \"de/fra\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"example-kafka-lan\",\n});\nconst exampleCluster = new ionoscloud.kafka.Cluster(\"example\", {\n    name: \"example-kafka-cluster\",\n    location: \"de/fra\",\n    version: \"3.9.0\",\n    size: \"S\",\n    connections: {\n        datacenterId: example.id,\n        lanId: exampleLan.id,\n        brokerAddresses: [\n            \"192.168.1.101/24\",\n            \"192.168.1.102/24\",\n            \"192.168.1.103/24\",\n        ],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"example-kafka-datacenter\",\n    location=\"de/fra\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"example-kafka-lan\")\nexample_cluster = ionoscloud.kafka.Cluster(\"example\",\n    name=\"example-kafka-cluster\",\n    location=\"de/fra\",\n    version=\"3.9.0\",\n    size=\"S\",\n    connections={\n        \"datacenter_id\": example.id,\n        \"lan_id\": example_lan.id,\n        \"broker_addresses\": [\n            \"192.168.1.101/24\",\n            \"192.168.1.102/24\",\n            \"192.168.1.103/24\",\n        ],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"example-kafka-datacenter\",\n        Location = \"de/fra\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"example-kafka-lan\",\n    });\n\n    var exampleCluster = new Ionoscloud.Kafka.Cluster(\"example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Location = \"de/fra\",\n        Version = \"3.9.0\",\n        Size = \"S\",\n        Connections = new Ionoscloud.Kafka.Inputs.ClusterConnectionsArgs\n        {\n            DatacenterId = example.Id,\n            LanId = exampleLan.Id,\n            BrokerAddresses = new[]\n            {\n                \"192.168.1.101/24\",\n                \"192.168.1.102/24\",\n                \"192.168.1.103/24\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/kafka\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"example-kafka-datacenter\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"example-kafka-lan\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kafka.NewCluster(ctx, \"example\", \u0026kafka.ClusterArgs{\n\t\t\tName:     pulumi.String(\"example-kafka-cluster\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tVersion:  pulumi.String(\"3.9.0\"),\n\t\t\tSize:     pulumi.String(\"S\"),\n\t\t\tConnections: \u0026kafka.ClusterConnectionsArgs{\n\t\t\t\tDatacenterId: example.ID(),\n\t\t\t\tLanId:        exampleLan.ID(),\n\t\t\t\tBrokerAddresses: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.1.101/24\"),\n\t\t\t\t\tpulumi.String(\"192.168.1.102/24\"),\n\t\t\t\t\tpulumi.String(\"192.168.1.103/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.kafka.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.kafka.ClusterArgs;\nimport com.pulumi.ionoscloud.kafka.inputs.ClusterConnectionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"example-kafka-datacenter\")\n            .location(\"de/fra\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"example-kafka-lan\")\n            .build());\n\n        var exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .location(\"de/fra\")\n            .version(\"3.9.0\")\n            .size(\"S\")\n            .connections(ClusterConnectionsArgs.builder()\n                .datacenterId(example.id())\n                .lanId(exampleLan.id())\n                .brokerAddresses(                \n                    \"192.168.1.101/24\",\n                    \"192.168.1.102/24\",\n                    \"192.168.1.103/24\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: example-kafka-datacenter\n      location: de/fra\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: example-kafka-lan\n  exampleCluster:\n    type: ionoscloud:kafka:Cluster\n    name: example\n    properties:\n      name: example-kafka-cluster\n      location: de/fra\n      version: 3.9.0\n      size: S\n      connections:\n        datacenterId: ${example.id}\n        lanId: ${exampleLan.id}\n        brokerAddresses:\n          - 192.168.1.101/24\n          - 192.168.1.102/24\n          - 192.168.1.103/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKafka Cluster can be imported using the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e and `kafka cluster id`:\n\n```sh\nterraform import ionoscloud_kafka_cluster.mycluster location:kafka cluster uuid\n```\n\n",
            "properties": {
                "brokerAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] IP address and port of cluster brokers.\n\n\u003e **⚠ NOTE:** `IONOS_API_URL_KAFKA` can be used to set a custom API URL for the kafka resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                },
                "connections": {
                    "$ref": "#/types/ionoscloud:kafka/ClusterConnections:ClusterConnections",
                    "description": "Connection information of the Kafka Cluster. Minimum items: 1, maximum items: 1.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Kafka Cluster. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the Kafka Cluster.\n"
                },
                "size": {
                    "type": "string",
                    "description": "[string] Size of the Kafka Cluster. Possible values: `XS`, `S`\n"
                },
                "version": {
                    "type": "string",
                    "description": "[string] Version of the Kafka Cluster. Possible values: `3.9.0`\n"
                }
            },
            "required": [
                "brokerAddresses",
                "connections",
                "name",
                "size",
                "version"
            ],
            "inputProperties": {
                "connections": {
                    "$ref": "#/types/ionoscloud:kafka/ClusterConnections:ClusterConnections",
                    "description": "Connection information of the Kafka Cluster. Minimum items: 1, maximum items: 1.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Kafka Cluster. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the Kafka Cluster.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "string",
                    "description": "[string] Size of the Kafka Cluster. Possible values: `XS`, `S`\n",
                    "willReplaceOnChanges": true
                },
                "version": {
                    "type": "string",
                    "description": "[string] Version of the Kafka Cluster. Possible values: `3.9.0`\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "connections",
                "size",
                "version"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Cluster resources.\n",
                "properties": {
                    "brokerAddresses": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] IP address and port of cluster brokers.\n\n\u003e **⚠ NOTE:** `IONOS_API_URL_KAFKA` can be used to set a custom API URL for the kafka resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                    },
                    "connections": {
                        "$ref": "#/types/ionoscloud:kafka/ClusterConnections:ClusterConnections",
                        "description": "Connection information of the Kafka Cluster. Minimum items: 1, maximum items: 1.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the Kafka Cluster. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] Name of the Kafka Cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "string",
                        "description": "[string] Size of the Kafka Cluster. Possible values: `XS`, `S`\n",
                        "willReplaceOnChanges": true
                    },
                    "version": {
                        "type": "string",
                        "description": "[string] Version of the Kafka Cluster. Possible values: `3.9.0`\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:kafka/topic:Topic": {
            "description": "Manages a **Kafka Cluster Topic** on IonosCloud.\n\n## Example Usage\n\nThis resource will create an operational Kafka Cluster Topic. After this section completes, the provisioner can be\ncalled.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"example-kafka-datacenter\",\n    location: \"de/fra\",\n});\nconst exampleLan = new ionoscloud.compute.Lan(\"example\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"example-kafka-lan\",\n});\nconst exampleCluster = new ionoscloud.kafka.Cluster(\"example\", {\n    name: \"example-kafka-cluster\",\n    location: example.location,\n    version: \"3.9.0\",\n    size: \"S\",\n    connections: {\n        datacenterId: example.id,\n        lanId: exampleLan.id,\n        brokerAddresses: [\n            \"192.168.1.101/24\",\n            \"192.168.1.102/24\",\n            \"192.168.1.103/24\",\n        ],\n    },\n});\nconst exampleTopic = new ionoscloud.kafka.Topic(\"example\", {\n    clusterId: exampleCluster.id,\n    name: \"kafka-cluster-topic\",\n    location: exampleCluster.location,\n    replicationFactor: 1,\n    numberOfPartitions: 1,\n    retentionTime: 86400000,\n    segmentBytes: 1073741824,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"example-kafka-datacenter\",\n    location=\"de/fra\")\nexample_lan = ionoscloud.compute.Lan(\"example\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"example-kafka-lan\")\nexample_cluster = ionoscloud.kafka.Cluster(\"example\",\n    name=\"example-kafka-cluster\",\n    location=example.location,\n    version=\"3.9.0\",\n    size=\"S\",\n    connections={\n        \"datacenter_id\": example.id,\n        \"lan_id\": example_lan.id,\n        \"broker_addresses\": [\n            \"192.168.1.101/24\",\n            \"192.168.1.102/24\",\n            \"192.168.1.103/24\",\n        ],\n    })\nexample_topic = ionoscloud.kafka.Topic(\"example\",\n    cluster_id=example_cluster.id,\n    name=\"kafka-cluster-topic\",\n    location=example_cluster.location,\n    replication_factor=1,\n    number_of_partitions=1,\n    retention_time=86400000,\n    segment_bytes=1073741824)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"example-kafka-datacenter\",\n        Location = \"de/fra\",\n    });\n\n    var exampleLan = new Ionoscloud.Compute.Lan(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"example-kafka-lan\",\n    });\n\n    var exampleCluster = new Ionoscloud.Kafka.Cluster(\"example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Location = example.Location,\n        Version = \"3.9.0\",\n        Size = \"S\",\n        Connections = new Ionoscloud.Kafka.Inputs.ClusterConnectionsArgs\n        {\n            DatacenterId = example.Id,\n            LanId = exampleLan.Id,\n            BrokerAddresses = new[]\n            {\n                \"192.168.1.101/24\",\n                \"192.168.1.102/24\",\n                \"192.168.1.103/24\",\n            },\n        },\n    });\n\n    var exampleTopic = new Ionoscloud.Kafka.Topic(\"example\", new()\n    {\n        ClusterId = exampleCluster.Id,\n        Name = \"kafka-cluster-topic\",\n        Location = exampleCluster.Location,\n        ReplicationFactor = 1,\n        NumberOfPartitions = 1,\n        RetentionTime = 86400000,\n        SegmentBytes = 1073741824,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/kafka\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"example-kafka-datacenter\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleLan, err := compute.NewLan(ctx, \"example\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"example-kafka-lan\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleCluster, err := kafka.NewCluster(ctx, \"example\", \u0026kafka.ClusterArgs{\n\t\t\tName:     pulumi.String(\"example-kafka-cluster\"),\n\t\t\tLocation: example.Location,\n\t\t\tVersion:  pulumi.String(\"3.9.0\"),\n\t\t\tSize:     pulumi.String(\"S\"),\n\t\t\tConnections: \u0026kafka.ClusterConnectionsArgs{\n\t\t\t\tDatacenterId: example.ID(),\n\t\t\t\tLanId:        exampleLan.ID(),\n\t\t\t\tBrokerAddresses: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.1.101/24\"),\n\t\t\t\t\tpulumi.String(\"192.168.1.102/24\"),\n\t\t\t\t\tpulumi.String(\"192.168.1.103/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kafka.NewTopic(ctx, \"example\", \u0026kafka.TopicArgs{\n\t\t\tClusterId:          exampleCluster.ID(),\n\t\t\tName:               pulumi.String(\"kafka-cluster-topic\"),\n\t\t\tLocation:           exampleCluster.Location,\n\t\t\tReplicationFactor:  pulumi.Int(1),\n\t\t\tNumberOfPartitions: pulumi.Int(1),\n\t\t\tRetentionTime:      pulumi.Int(86400000),\n\t\t\tSegmentBytes:       pulumi.Int(1073741824),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.kafka.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.kafka.ClusterArgs;\nimport com.pulumi.ionoscloud.kafka.inputs.ClusterConnectionsArgs;\nimport com.ionoscloud.pulumi.ionoscloud.kafka.Topic;\nimport com.ionoscloud.pulumi.ionoscloud.kafka.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"example-kafka-datacenter\")\n            .location(\"de/fra\")\n            .build());\n\n        var exampleLan = new Lan(\"exampleLan\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"example-kafka-lan\")\n            .build());\n\n        var exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .location(example.location())\n            .version(\"3.9.0\")\n            .size(\"S\")\n            .connections(ClusterConnectionsArgs.builder()\n                .datacenterId(example.id())\n                .lanId(exampleLan.id())\n                .brokerAddresses(                \n                    \"192.168.1.101/24\",\n                    \"192.168.1.102/24\",\n                    \"192.168.1.103/24\")\n                .build())\n            .build());\n\n        var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n            .clusterId(exampleCluster.id())\n            .name(\"kafka-cluster-topic\")\n            .location(exampleCluster.location())\n            .replicationFactor(1)\n            .numberOfPartitions(1)\n            .retentionTime(86400000)\n            .segmentBytes(1073741824)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: example-kafka-datacenter\n      location: de/fra\n  exampleLan:\n    type: ionoscloud:compute:Lan\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: example-kafka-lan\n  exampleCluster:\n    type: ionoscloud:kafka:Cluster\n    name: example\n    properties:\n      name: example-kafka-cluster\n      location: ${example.location}\n      version: 3.9.0\n      size: S\n      connections:\n        datacenterId: ${example.id}\n        lanId: ${exampleLan.id}\n        brokerAddresses:\n          - 192.168.1.101/24\n          - 192.168.1.102/24\n          - 192.168.1.103/24\n  exampleTopic:\n    type: ionoscloud:kafka:Topic\n    name: example\n    properties:\n      clusterId: ${exampleCluster.id}\n      name: kafka-cluster-topic\n      location: ${exampleCluster.location}\n      replicationFactor: 1\n      numberOfPartitions: 1\n      retentionTime: 8.64e+07\n      segmentBytes: 1.073741824e+09\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKafka Cluster Topic can be imported using the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, `kafka cluster id` and the `kafka cluster topic id`:\n\n```sh\nterraform import ionoscloud_kafka_cluster_topic.my_topic location:kafka cluster uuid:kafka cluster topic uuid\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] ID of the Kafka Cluster that the topic belongs to.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Kafka Cluster Topic. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the Kafka Cluster.\n"
                },
                "numberOfPartitions": {
                    "type": "integer",
                    "description": "[int] The number of partitions of the topic. Partitions allow for parallel\nprocessing of messages. The partition count must be greater than or equal to the replication factor. Minimum value: 1.\nDefault value: 3.\n"
                },
                "replicationFactor": {
                    "type": "integer",
                    "description": "[int] The number of replicas of the topic. The replication factor determines how many\ncopies of the topic are stored on different brokers. The replication factor must be less than or equal to the number\nof brokers in the Kafka Cluster. Minimum value: 1. Default value: 3.\n"
                },
                "retentionTime": {
                    "type": "integer",
                    "description": "[int] This configuration controls the maximum time we will retain a log before we will\ndiscard old log segments to free up space. This represents an SLA on how soon consumers must read their data. If set\nto -1, no time limit is applied. Default value: 604800000.\n"
                },
                "segmentBytes": {
                    "type": "integer",
                    "description": "[int] This configuration controls the segment file size for the log. Retention and\ncleaning is always done a file at a time so a larger segment size means fewer files but less granular control over\nretention. Default value: 1073741824.\n"
                }
            },
            "required": [
                "clusterId",
                "name"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "[string] ID of the Kafka Cluster that the topic belongs to.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Kafka Cluster Topic. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] Name of the Kafka Cluster.\n",
                    "willReplaceOnChanges": true
                },
                "numberOfPartitions": {
                    "type": "integer",
                    "description": "[int] The number of partitions of the topic. Partitions allow for parallel\nprocessing of messages. The partition count must be greater than or equal to the replication factor. Minimum value: 1.\nDefault value: 3.\n",
                    "willReplaceOnChanges": true
                },
                "replicationFactor": {
                    "type": "integer",
                    "description": "[int] The number of replicas of the topic. The replication factor determines how many\ncopies of the topic are stored on different brokers. The replication factor must be less than or equal to the number\nof brokers in the Kafka Cluster. Minimum value: 1. Default value: 3.\n",
                    "willReplaceOnChanges": true
                },
                "retentionTime": {
                    "type": "integer",
                    "description": "[int] This configuration controls the maximum time we will retain a log before we will\ndiscard old log segments to free up space. This represents an SLA on how soon consumers must read their data. If set\nto -1, no time limit is applied. Default value: 604800000.\n",
                    "willReplaceOnChanges": true
                },
                "segmentBytes": {
                    "type": "integer",
                    "description": "[int] This configuration controls the segment file size for the log. Retention and\ncleaning is always done a file at a time so a larger segment size means fewer files but less granular control over\nretention. Default value: 1073741824.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Topic resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] ID of the Kafka Cluster that the topic belongs to.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the Kafka Cluster Topic. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] Name of the Kafka Cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "numberOfPartitions": {
                        "type": "integer",
                        "description": "[int] The number of partitions of the topic. Partitions allow for parallel\nprocessing of messages. The partition count must be greater than or equal to the replication factor. Minimum value: 1.\nDefault value: 3.\n",
                        "willReplaceOnChanges": true
                    },
                    "replicationFactor": {
                        "type": "integer",
                        "description": "[int] The number of replicas of the topic. The replication factor determines how many\ncopies of the topic are stored on different brokers. The replication factor must be less than or equal to the number\nof brokers in the Kafka Cluster. Minimum value: 1. Default value: 3.\n",
                        "willReplaceOnChanges": true
                    },
                    "retentionTime": {
                        "type": "integer",
                        "description": "[int] This configuration controls the maximum time we will retain a log before we will\ndiscard old log segments to free up space. This represents an SLA on how soon consumers must read their data. If set\nto -1, no time limit is applied. Default value: 604800000.\n",
                        "willReplaceOnChanges": true
                    },
                    "segmentBytes": {
                        "type": "integer",
                        "description": "[int] This configuration controls the segment file size for the log. Retention and\ncleaning is always done a file at a time so a larger segment size means fewer files but less granular control over\nretention. Default value: 1073741824.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:logging/pipeline:Pipeline": {
            "description": "Manages a [Logging pipeline](https://docs.ionos.com/cloud/observability/logging-service/overview/log-pipelines).\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **logging_pipeline** resource. Please ensure you are using tokens as other methods will not be valid.\n\n## Usage example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.logging.Pipeline(\"example\", {\n    location: \"es/vit\",\n    name: \"pipelineexample\",\n    logs: [\n        {\n            source: \"kubernetes\",\n            tag: \"tagexample\",\n            protocol: \"http\",\n            destinations: [{\n                type: \"loki\",\n                retentionInDays: 7,\n            }],\n        },\n        {\n            source: \"kubernetes\",\n            tag: \"anothertagexample\",\n            protocol: \"tcp\",\n            destinations: [{\n                type: \"loki\",\n                retentionInDays: 7,\n            }],\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.logging.Pipeline(\"example\",\n    location=\"es/vit\",\n    name=\"pipelineexample\",\n    logs=[\n        {\n            \"source\": \"kubernetes\",\n            \"tag\": \"tagexample\",\n            \"protocol\": \"http\",\n            \"destinations\": [{\n                \"type\": \"loki\",\n                \"retention_in_days\": 7,\n            }],\n        },\n        {\n            \"source\": \"kubernetes\",\n            \"tag\": \"anothertagexample\",\n            \"protocol\": \"tcp\",\n            \"destinations\": [{\n                \"type\": \"loki\",\n                \"retention_in_days\": 7,\n            }],\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Logging.Pipeline(\"example\", new()\n    {\n        Location = \"es/vit\",\n        Name = \"pipelineexample\",\n        Logs = new[]\n        {\n            new Ionoscloud.Logging.Inputs.PipelineLogArgs\n            {\n                Source = \"kubernetes\",\n                Tag = \"tagexample\",\n                Protocol = \"http\",\n                Destinations = new[]\n                {\n                    new Ionoscloud.Logging.Inputs.PipelineLogDestinationArgs\n                    {\n                        Type = \"loki\",\n                        RetentionInDays = 7,\n                    },\n                },\n            },\n            new Ionoscloud.Logging.Inputs.PipelineLogArgs\n            {\n                Source = \"kubernetes\",\n                Tag = \"anothertagexample\",\n                Protocol = \"tcp\",\n                Destinations = new[]\n                {\n                    new Ionoscloud.Logging.Inputs.PipelineLogDestinationArgs\n                    {\n                        Type = \"loki\",\n                        RetentionInDays = 7,\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewPipeline(ctx, \"example\", \u0026logging.PipelineArgs{\n\t\t\tLocation: pulumi.String(\"es/vit\"),\n\t\t\tName:     pulumi.String(\"pipelineexample\"),\n\t\t\tLogs: logging.PipelineLogArray{\n\t\t\t\t\u0026logging.PipelineLogArgs{\n\t\t\t\t\tSource:   pulumi.String(\"kubernetes\"),\n\t\t\t\t\tTag:      pulumi.String(\"tagexample\"),\n\t\t\t\t\tProtocol: pulumi.String(\"http\"),\n\t\t\t\t\tDestinations: logging.PipelineLogDestinationArray{\n\t\t\t\t\t\t\u0026logging.PipelineLogDestinationArgs{\n\t\t\t\t\t\t\tType:            pulumi.String(\"loki\"),\n\t\t\t\t\t\t\tRetentionInDays: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026logging.PipelineLogArgs{\n\t\t\t\t\tSource:   pulumi.String(\"kubernetes\"),\n\t\t\t\t\tTag:      pulumi.String(\"anothertagexample\"),\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tDestinations: logging.PipelineLogDestinationArray{\n\t\t\t\t\t\t\u0026logging.PipelineLogDestinationArgs{\n\t\t\t\t\t\t\tType:            pulumi.String(\"loki\"),\n\t\t\t\t\t\t\tRetentionInDays: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.logging.Pipeline;\nimport com.ionoscloud.pulumi.ionoscloud.logging.PipelineArgs;\nimport com.pulumi.ionoscloud.logging.inputs.PipelineLogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Pipeline(\"example\", PipelineArgs.builder()\n            .location(\"es/vit\")\n            .name(\"pipelineexample\")\n            .logs(            \n                PipelineLogArgs.builder()\n                    .source(\"kubernetes\")\n                    .tag(\"tagexample\")\n                    .protocol(\"http\")\n                    .destinations(PipelineLogDestinationArgs.builder()\n                        .type(\"loki\")\n                        .retentionInDays(7)\n                        .build())\n                    .build(),\n                PipelineLogArgs.builder()\n                    .source(\"kubernetes\")\n                    .tag(\"anothertagexample\")\n                    .protocol(\"tcp\")\n                    .destinations(PipelineLogDestinationArgs.builder()\n                        .type(\"loki\")\n                        .retentionInDays(7)\n                        .build())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:logging:Pipeline\n    properties:\n      location: es/vit\n      name: pipelineexample\n      logs:\n        - source: kubernetes\n          tag: tagexample\n          protocol: http\n          destinations:\n            - type: loki\n              retentionInDays: 7\n        - source: kubernetes\n          tag: anothertagexample\n          protocol: tcp\n          destinations:\n            - type: loki\n              retentionInDays: 7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor re-usability, an array of **logs** can be defined in a **tfvars** file or inside the terraform\nplan, and used as presented below:\n\nThe content inside **vars.tfvars** file:\n\n## Import\n\nIn order to import a Logging pipeline, you can define an empty Logging pipeline resource in the plan:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.logging.Pipeline(\"example\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.logging.Pipeline(\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Logging.Pipeline(\"example\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewPipeline(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.logging.Pipeline;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Pipeline(\"example\");\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:logging:Pipeline\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`pipelineId`\" pulumi-lang-dotnet=\"`PipelineId`\" pulumi-lang-go=\"`pipelineId`\" pulumi-lang-python=\"`pipeline_id`\" pulumi-lang-yaml=\"`pipelineId`\" pulumi-lang-java=\"`pipelineId`\"\u003e`pipelineId`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:logging/pipeline:Pipeline example location:pipeline_id\n```\n\n",
            "properties": {
                "grafanaAddress": {
                    "type": "string",
                    "description": "[string] The Grafana address is where user can access their logs, create dashboards, and set up alerts\n"
                },
                "httpAddress": {
                    "type": "string",
                    "description": "[string] The HTTP address of the pipeline. This is the address to which logs are sent using the HTTP protocol.\n"
                },
                "key": {
                    "type": "string",
                    "description": "[string] The key is shared once and is used to authenticate the logs sent to the pipeline\n",
                    "secret": true
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Logging pipeline. Default: `de/txl`, other available locations: `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`,  `fr/par`, `us/mci`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n"
                },
                "logs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:logging/PipelineLog:PipelineLog"
                    },
                    "description": "[list] Pipeline logs, a list that contains elements with the following structure:\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Logging pipeline.\n"
                },
                "tcpAddress": {
                    "type": "string",
                    "description": "[string] The TCP address of the pipeline. This is the address to which logs are sent using the TCP protocol.\n"
                }
            },
            "required": [
                "grafanaAddress",
                "httpAddress",
                "key",
                "logs",
                "name",
                "tcpAddress"
            ],
            "inputProperties": {
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Logging pipeline. Default: `de/txl`, other available locations: `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`,  `fr/par`, `us/mci`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n",
                    "willReplaceOnChanges": true
                },
                "logs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:logging/PipelineLog:PipelineLog"
                    },
                    "description": "[list] Pipeline logs, a list that contains elements with the following structure:\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Logging pipeline.\n"
                }
            },
            "requiredInputs": [
                "logs"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Pipeline resources.\n",
                "properties": {
                    "grafanaAddress": {
                        "type": "string",
                        "description": "[string] The Grafana address is where user can access their logs, create dashboards, and set up alerts\n"
                    },
                    "httpAddress": {
                        "type": "string",
                        "description": "[string] The HTTP address of the pipeline. This is the address to which logs are sent using the HTTP protocol.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "[string] The key is shared once and is used to authenticate the logs sent to the pipeline\n",
                        "secret": true
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the Logging pipeline. Default: `de/txl`, other available locations: `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`,  `fr/par`, `us/mci`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n",
                        "willReplaceOnChanges": true
                    },
                    "logs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:logging/PipelineLog:PipelineLog"
                        },
                        "description": "[list] Pipeline logs, a list that contains elements with the following structure:\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Logging pipeline.\n"
                    },
                    "tcpAddress": {
                        "type": "string",
                        "description": "[string] The TCP address of the pipeline. This is the address to which logs are sent using the TCP protocol.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:monitoring/pipeline:Pipeline": {
            "description": "Manages a [Monitoring pipeline](https://docs.ionos.com/cloud/observability/monitoring-service).\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **monitoring_pipeline** resource. Please ensure you are using tokens as other methods will not be valid.\n\n## Usage example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.monitoring.Pipeline(\"example\", {\n    location: \"es/vit\",\n    name: \"pipelineExample\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.monitoring.Pipeline(\"example\",\n    location=\"es/vit\",\n    name=\"pipelineExample\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Monitoring.Pipeline(\"example\", new()\n    {\n        Location = \"es/vit\",\n        Name = \"pipelineExample\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := monitoring.NewPipeline(ctx, \"example\", \u0026monitoring.PipelineArgs{\n\t\t\tLocation: pulumi.String(\"es/vit\"),\n\t\t\tName:     pulumi.String(\"pipelineExample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.monitoring.Pipeline;\nimport com.ionoscloud.pulumi.ionoscloud.monitoring.PipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Pipeline(\"example\", PipelineArgs.builder()\n            .location(\"es/vit\")\n            .name(\"pipelineExample\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:monitoring:Pipeline\n    properties:\n      location: es/vit\n      name: pipelineExample\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n**NOTE:** The default timeout for all operations is 60 minutes. If you want to change the default value, you can use \u003cspan pulumi-lang-nodejs=\"`timeouts`\" pulumi-lang-dotnet=\"`Timeouts`\" pulumi-lang-go=\"`timeouts`\" pulumi-lang-python=\"`timeouts`\" pulumi-lang-yaml=\"`timeouts`\" pulumi-lang-java=\"`timeouts`\"\u003e`timeouts`\u003c/span\u003e attribute inside the resource:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.monitoring.Pipeline(\"example\", {\n    location: \"es/vit\",\n    name: \"pipelineExample\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.monitoring.Pipeline(\"example\",\n    location=\"es/vit\",\n    name=\"pipelineExample\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Monitoring.Pipeline(\"example\", new()\n    {\n        Location = \"es/vit\",\n        Name = \"pipelineExample\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := monitoring.NewPipeline(ctx, \"example\", \u0026monitoring.PipelineArgs{\n\t\t\tLocation: pulumi.String(\"es/vit\"),\n\t\t\tName:     pulumi.String(\"pipelineExample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.monitoring.Pipeline;\nimport com.ionoscloud.pulumi.ionoscloud.monitoring.PipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Pipeline(\"example\", PipelineArgs.builder()\n            .location(\"es/vit\")\n            .name(\"pipelineExample\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:monitoring:Pipeline\n    properties:\n      location: es/vit\n      name: pipelineExample\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIn order to import a Monitoring pipeline, you can define an empty Monitoring pipeline resource in the plan:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.monitoring.Pipeline(\"example\", {});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.monitoring.Pipeline(\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Monitoring.Pipeline(\"example\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := monitoring.NewPipeline(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.monitoring.Pipeline;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Pipeline(\"example\");\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:monitoring:Pipeline\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`pipelineId`\" pulumi-lang-dotnet=\"`PipelineId`\" pulumi-lang-go=\"`pipelineId`\" pulumi-lang-python=\"`pipeline_id`\" pulumi-lang-yaml=\"`pipelineId`\" pulumi-lang-java=\"`pipelineId`\"\u003e`pipelineId`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:monitoring/pipeline:Pipeline example location:pipeline_id\n```\n\n",
            "properties": {
                "grafanaEndpoint": {
                    "type": "string",
                    "description": "[string] The endpoint of the Grafana instance.\n"
                },
                "httpEndpoint": {
                    "type": "string",
                    "description": "[string] The HTTP endpoint of the monitoring instance.\n"
                },
                "key": {
                    "type": "string",
                    "description": "(Sensitive)[string] The key used to connect to the monitoring pipeline.\n\n\u003e **⚠ NOTE:** `IONOS_API_URL_MONITORING` can be used to set a custom API URL for the resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL.\n",
                    "secret": true
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Monitoring pipeline. Default is `de/fra`. It can be one of `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`,`fr/par`, `us/mci`. If this is not set and if no value is provided for the `IONOS_API_URL_MONITORING` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Monitoring pipeline.\n"
                },
                "timeouts": {
                    "$ref": "#/types/ionoscloud:monitoring/PipelineTimeouts:PipelineTimeouts"
                }
            },
            "required": [
                "grafanaEndpoint",
                "httpEndpoint",
                "key",
                "name"
            ],
            "inputProperties": {
                "location": {
                    "type": "string",
                    "description": "[string] The location of the Monitoring pipeline. Default is `de/fra`. It can be one of `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`,`fr/par`, `us/mci`. If this is not set and if no value is provided for the `IONOS_API_URL_MONITORING` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Monitoring pipeline.\n"
                },
                "timeouts": {
                    "$ref": "#/types/ionoscloud:monitoring/PipelineTimeouts:PipelineTimeouts"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Pipeline resources.\n",
                "properties": {
                    "grafanaEndpoint": {
                        "type": "string",
                        "description": "[string] The endpoint of the Grafana instance.\n"
                    },
                    "httpEndpoint": {
                        "type": "string",
                        "description": "[string] The HTTP endpoint of the monitoring instance.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "(Sensitive)[string] The key used to connect to the monitoring pipeline.\n\n\u003e **⚠ NOTE:** `IONOS_API_URL_MONITORING` can be used to set a custom API URL for the resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL.\n",
                        "secret": true
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the Monitoring pipeline. Default is `de/fra`. It can be one of `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`,`fr/par`, `us/mci`. If this is not set and if no value is provided for the `IONOS_API_URL_MONITORING` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Monitoring pipeline.\n"
                    },
                    "timeouts": {
                        "$ref": "#/types/ionoscloud:monitoring/PipelineTimeouts:PipelineTimeouts"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:nfs/cluster:Cluster": {
            "description": "Create clusters of [Network File Storage (NFS)](https://docs.ionos.com/cloud/storage-and-backup/network-file-storage) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst nfsDc = new ionoscloud.compute.Datacenter(\"nfs_dc\", {\n    name: \"NFS Datacenter\",\n    location: \"de/txl\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst nfsLan = new ionoscloud.compute.Lan(\"nfs_lan\", {\n    datacenterId: nfsDc.id,\n    \"public\": false,\n    name: \"Lan for NFS\",\n});\nconst example = new ionoscloud.nfs.Cluster(\"example\", {\n    name: \"test\",\n    location: \"de/txl\",\n    size: 2,\n    nfs: {\n        minVersion: \"4.2\",\n    },\n    connections: {\n        datacenterId: nfsDc.id,\n        ipAddress: \"192.168.100.10/24\",\n        lan: nfsLan.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\nnfs_dc = ionoscloud.compute.Datacenter(\"nfs_dc\",\n    name=\"NFS Datacenter\",\n    location=\"de/txl\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nnfs_lan = ionoscloud.compute.Lan(\"nfs_lan\",\n    datacenter_id=nfs_dc.id,\n    public=False,\n    name=\"Lan for NFS\")\nexample = ionoscloud.nfs.Cluster(\"example\",\n    name=\"test\",\n    location=\"de/txl\",\n    size=2,\n    nfs={\n        \"min_version\": \"4.2\",\n    },\n    connections={\n        \"datacenter_id\": nfs_dc.id,\n        \"ip_address\": \"192.168.100.10/24\",\n        \"lan\": nfs_lan.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var nfsDc = new Ionoscloud.Compute.Datacenter(\"nfs_dc\", new()\n    {\n        Name = \"NFS Datacenter\",\n        Location = \"de/txl\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var nfsLan = new Ionoscloud.Compute.Lan(\"nfs_lan\", new()\n    {\n        DatacenterId = nfsDc.Id,\n        Public = false,\n        Name = \"Lan for NFS\",\n    });\n\n    var example = new Ionoscloud.Nfs.Cluster(\"example\", new()\n    {\n        Name = \"test\",\n        Location = \"de/txl\",\n        Size = 2,\n        Nfs = new Ionoscloud.Nfs.Inputs.ClusterNfsArgs\n        {\n            MinVersion = \"4.2\",\n        },\n        Connections = new Ionoscloud.Nfs.Inputs.ClusterConnectionsArgs\n        {\n            DatacenterId = nfsDc.Id,\n            IpAddress = \"192.168.100.10/24\",\n            Lan = nfsLan.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nfs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\tnfsDc, err := compute.NewDatacenter(ctx, \"nfs_dc\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"NFS Datacenter\"),\n\t\t\tLocation:          pulumi.String(\"de/txl\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnfsLan, err := compute.NewLan(ctx, \"nfs_lan\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: nfsDc.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan for NFS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nfs.NewCluster(ctx, \"example\", \u0026nfs.ClusterArgs{\n\t\t\tName:     pulumi.String(\"test\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t\tSize:     pulumi.Int(2),\n\t\t\tNfs: \u0026nfs.ClusterNfsArgs{\n\t\t\t\tMinVersion: pulumi.String(\"4.2\"),\n\t\t\t},\n\t\t\tConnections: \u0026nfs.ClusterConnectionsArgs{\n\t\t\t\tDatacenterId: nfsDc.ID(),\n\t\t\t\tIpAddress:    pulumi.String(\"192.168.100.10/24\"),\n\t\t\t\tLan:          nfsLan.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nfs.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.nfs.ClusterArgs;\nimport com.pulumi.ionoscloud.nfs.inputs.ClusterNfsArgs;\nimport com.pulumi.ionoscloud.nfs.inputs.ClusterConnectionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var nfsDc = new Datacenter(\"nfsDc\", DatacenterArgs.builder()\n            .name(\"NFS Datacenter\")\n            .location(\"de/txl\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var nfsLan = new Lan(\"nfsLan\", LanArgs.builder()\n            .datacenterId(nfsDc.id())\n            .public_(false)\n            .name(\"Lan for NFS\")\n            .build());\n\n        var example = new Cluster(\"example\", ClusterArgs.builder()\n            .name(\"test\")\n            .location(\"de/txl\")\n            .size(2)\n            .nfs(ClusterNfsArgs.builder()\n                .minVersion(\"4.2\")\n                .build())\n            .connections(ClusterConnectionsArgs.builder()\n                .datacenterId(nfsDc.id())\n                .ipAddress(\"192.168.100.10/24\")\n                .lan(nfsLan.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  nfsDc:\n    type: ionoscloud:compute:Datacenter\n    name: nfs_dc\n    properties:\n      name: NFS Datacenter\n      location: de/txl\n      description: Datacenter Description\n      secAuthProtection: false\n  nfsLan:\n    type: ionoscloud:compute:Lan\n    name: nfs_lan\n    properties:\n      datacenterId: ${nfsDc.id}\n      public: false\n      name: Lan for NFS\n  example:\n    type: ionoscloud:nfs:Cluster\n    properties:\n      name: test\n      location: de/txl\n      size: 2\n      nfs:\n        minVersion: '4.2'\n      connections:\n        datacenterId: ${nfsDc.id}\n        ipAddress: 192.168.100.10/24\n        lan: ${nfsLan.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Network File Storage Cluster resource can be imported using its \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e and `resource id`:\n\n```sh\n$ pulumi import ionoscloud:nfs/cluster:Cluster name location:uuid\n```\n\n",
            "properties": {
                "connections": {
                    "$ref": "#/types/ionoscloud:nfs/ClusterConnections:ClusterConnections",
                    "description": "The network connections for the Network File Storage Cluster."
                },
                "location": {
                    "type": "string",
                    "description": "The location where the Network File Storage cluster is located. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`. Other available locations are: `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n- `de/fra` - Frankfurt\n- `de/txl` - Berlin\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Network File Storage cluster.\n"
                },
                "nfs": {
                    "$ref": "#/types/ionoscloud:nfs/ClusterNfs:ClusterNfs"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the Network File Storage cluster in TiB. Note that the cluster size cannot be reduced after provisioning. This value determines the billing fees. Default is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e. The minimum value is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e and the maximum value is \u003cspan pulumi-lang-nodejs=\"`42`\" pulumi-lang-dotnet=\"`42`\" pulumi-lang-go=\"`42`\" pulumi-lang-python=\"`42`\" pulumi-lang-yaml=\"`42`\" pulumi-lang-java=\"`42`\"\u003e`42`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "connections",
                "name",
                "size"
            ],
            "inputProperties": {
                "connections": {
                    "$ref": "#/types/ionoscloud:nfs/ClusterConnections:ClusterConnections",
                    "description": "The network connections for the Network File Storage Cluster."
                },
                "location": {
                    "type": "string",
                    "description": "The location where the Network File Storage cluster is located. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`. Other available locations are: `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n- `de/fra` - Frankfurt\n- `de/txl` - Berlin\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Network File Storage cluster.\n"
                },
                "nfs": {
                    "$ref": "#/types/ionoscloud:nfs/ClusterNfs:ClusterNfs"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the Network File Storage cluster in TiB. Note that the cluster size cannot be reduced after provisioning. This value determines the billing fees. Default is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e. The minimum value is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e and the maximum value is \u003cspan pulumi-lang-nodejs=\"`42`\" pulumi-lang-dotnet=\"`42`\" pulumi-lang-go=\"`42`\" pulumi-lang-python=\"`42`\" pulumi-lang-yaml=\"`42`\" pulumi-lang-java=\"`42`\"\u003e`42`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "connections",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Cluster resources.\n",
                "properties": {
                    "connections": {
                        "$ref": "#/types/ionoscloud:nfs/ClusterConnections:ClusterConnections",
                        "description": "The network connections for the Network File Storage Cluster."
                    },
                    "location": {
                        "type": "string",
                        "description": "The location where the Network File Storage cluster is located. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`. Other available locations are: `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n- `de/fra` - Frankfurt\n- `de/txl` - Berlin\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Network File Storage cluster.\n"
                    },
                    "nfs": {
                        "$ref": "#/types/ionoscloud:nfs/ClusterNfs:ClusterNfs"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the Network File Storage cluster in TiB. Note that the cluster size cannot be reduced after provisioning. This value determines the billing fees. Default is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e. The minimum value is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e and the maximum value is \u003cspan pulumi-lang-nodejs=\"`42`\" pulumi-lang-dotnet=\"`42`\" pulumi-lang-go=\"`42`\" pulumi-lang-python=\"`42`\" pulumi-lang-yaml=\"`42`\" pulumi-lang-java=\"`42`\"\u003e`42`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:nfs/share:Share": {
            "description": "Creates and manages Network File Storage (NFS) Share objects on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst nfsDc = new ionoscloud.compute.Datacenter(\"nfs_dc\", {\n    name: \"NFS Datacenter\",\n    location: \"de/txl\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst nfsLan = new ionoscloud.compute.Lan(\"nfs_lan\", {\n    datacenterId: nfsDc.id,\n    \"public\": false,\n    name: \"Lan for NFS\",\n});\nconst example = new ionoscloud.nfs.Cluster(\"example\", {\n    name: \"test\",\n    location: \"de/txl\",\n    size: 2,\n    nfs: {\n        minVersion: \"4.2\",\n    },\n    connections: {\n        datacenterId: nfsDc.id,\n        ipAddress: \"192.168.100.10/24\",\n        lan: nfsLan.id,\n    },\n});\nconst exampleShare = new ionoscloud.nfs.Share(\"example\", {\n    location: \"de/txl\",\n    clusterId: example.id,\n    name: \"example-share\",\n    quota: 512,\n    gid: 512,\n    uid: 512,\n    clientGroups: [{\n        description: \"Client Group 1\",\n        ipNetworks: [\"10.234.50.0/24\"],\n        hosts: [\"10.234.62.123\"],\n        nfs: {\n            squash: \"all-anonymous\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\nnfs_dc = ionoscloud.compute.Datacenter(\"nfs_dc\",\n    name=\"NFS Datacenter\",\n    location=\"de/txl\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nnfs_lan = ionoscloud.compute.Lan(\"nfs_lan\",\n    datacenter_id=nfs_dc.id,\n    public=False,\n    name=\"Lan for NFS\")\nexample = ionoscloud.nfs.Cluster(\"example\",\n    name=\"test\",\n    location=\"de/txl\",\n    size=2,\n    nfs={\n        \"min_version\": \"4.2\",\n    },\n    connections={\n        \"datacenter_id\": nfs_dc.id,\n        \"ip_address\": \"192.168.100.10/24\",\n        \"lan\": nfs_lan.id,\n    })\nexample_share = ionoscloud.nfs.Share(\"example\",\n    location=\"de/txl\",\n    cluster_id=example.id,\n    name=\"example-share\",\n    quota=512,\n    gid=512,\n    uid=512,\n    client_groups=[{\n        \"description\": \"Client Group 1\",\n        \"ip_networks\": [\"10.234.50.0/24\"],\n        \"hosts\": [\"10.234.62.123\"],\n        \"nfs\": {\n            \"squash\": \"all-anonymous\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var nfsDc = new Ionoscloud.Compute.Datacenter(\"nfs_dc\", new()\n    {\n        Name = \"NFS Datacenter\",\n        Location = \"de/txl\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var nfsLan = new Ionoscloud.Compute.Lan(\"nfs_lan\", new()\n    {\n        DatacenterId = nfsDc.Id,\n        Public = false,\n        Name = \"Lan for NFS\",\n    });\n\n    var example = new Ionoscloud.Nfs.Cluster(\"example\", new()\n    {\n        Name = \"test\",\n        Location = \"de/txl\",\n        Size = 2,\n        Nfs = new Ionoscloud.Nfs.Inputs.ClusterNfsArgs\n        {\n            MinVersion = \"4.2\",\n        },\n        Connections = new Ionoscloud.Nfs.Inputs.ClusterConnectionsArgs\n        {\n            DatacenterId = nfsDc.Id,\n            IpAddress = \"192.168.100.10/24\",\n            Lan = nfsLan.Id,\n        },\n    });\n\n    var exampleShare = new Ionoscloud.Nfs.Share(\"example\", new()\n    {\n        Location = \"de/txl\",\n        ClusterId = example.Id,\n        Name = \"example-share\",\n        Quota = 512,\n        Gid = 512,\n        Uid = 512,\n        ClientGroups = new[]\n        {\n            new Ionoscloud.Nfs.Inputs.ShareClientGroupArgs\n            {\n                Description = \"Client Group 1\",\n                IpNetworks = new[]\n                {\n                    \"10.234.50.0/24\",\n                },\n                Hosts = new[]\n                {\n                    \"10.234.62.123\",\n                },\n                Nfs = new Ionoscloud.Nfs.Inputs.ShareClientGroupNfsArgs\n                {\n                    Squash = \"all-anonymous\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nfs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\tnfsDc, err := compute.NewDatacenter(ctx, \"nfs_dc\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"NFS Datacenter\"),\n\t\t\tLocation:          pulumi.String(\"de/txl\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnfsLan, err := compute.NewLan(ctx, \"nfs_lan\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: nfsDc.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan for NFS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := nfs.NewCluster(ctx, \"example\", \u0026nfs.ClusterArgs{\n\t\t\tName:     pulumi.String(\"test\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t\tSize:     pulumi.Int(2),\n\t\t\tNfs: \u0026nfs.ClusterNfsArgs{\n\t\t\t\tMinVersion: pulumi.String(\"4.2\"),\n\t\t\t},\n\t\t\tConnections: \u0026nfs.ClusterConnectionsArgs{\n\t\t\t\tDatacenterId: nfsDc.ID(),\n\t\t\t\tIpAddress:    pulumi.String(\"192.168.100.10/24\"),\n\t\t\t\tLan:          nfsLan.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nfs.NewShare(ctx, \"example\", \u0026nfs.ShareArgs{\n\t\t\tLocation:  pulumi.String(\"de/txl\"),\n\t\t\tClusterId: example.ID(),\n\t\t\tName:      pulumi.String(\"example-share\"),\n\t\t\tQuota:     pulumi.Int(512),\n\t\t\tGid:       pulumi.Int(512),\n\t\t\tUid:       pulumi.Int(512),\n\t\t\tClientGroups: nfs.ShareClientGroupArray{\n\t\t\t\t\u0026nfs.ShareClientGroupArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Client Group 1\"),\n\t\t\t\t\tIpNetworks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.234.50.0/24\"),\n\t\t\t\t\t},\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.234.62.123\"),\n\t\t\t\t\t},\n\t\t\t\t\tNfs: \u0026nfs.ShareClientGroupNfsArgs{\n\t\t\t\t\t\tSquash: pulumi.String(\"all-anonymous\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nfs.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.nfs.ClusterArgs;\nimport com.pulumi.ionoscloud.nfs.inputs.ClusterNfsArgs;\nimport com.pulumi.ionoscloud.nfs.inputs.ClusterConnectionsArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nfs.Share;\nimport com.ionoscloud.pulumi.ionoscloud.nfs.ShareArgs;\nimport com.pulumi.ionoscloud.nfs.inputs.ShareClientGroupArgs;\nimport com.pulumi.ionoscloud.nfs.inputs.ShareClientGroupNfsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var nfsDc = new Datacenter(\"nfsDc\", DatacenterArgs.builder()\n            .name(\"NFS Datacenter\")\n            .location(\"de/txl\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var nfsLan = new Lan(\"nfsLan\", LanArgs.builder()\n            .datacenterId(nfsDc.id())\n            .public_(false)\n            .name(\"Lan for NFS\")\n            .build());\n\n        var example = new Cluster(\"example\", ClusterArgs.builder()\n            .name(\"test\")\n            .location(\"de/txl\")\n            .size(2)\n            .nfs(ClusterNfsArgs.builder()\n                .minVersion(\"4.2\")\n                .build())\n            .connections(ClusterConnectionsArgs.builder()\n                .datacenterId(nfsDc.id())\n                .ipAddress(\"192.168.100.10/24\")\n                .lan(nfsLan.id())\n                .build())\n            .build());\n\n        var exampleShare = new Share(\"exampleShare\", ShareArgs.builder()\n            .location(\"de/txl\")\n            .clusterId(example.id())\n            .name(\"example-share\")\n            .quota(512)\n            .gid(512)\n            .uid(512)\n            .clientGroups(ShareClientGroupArgs.builder()\n                .description(\"Client Group 1\")\n                .ipNetworks(\"10.234.50.0/24\")\n                .hosts(\"10.234.62.123\")\n                .nfs(ShareClientGroupNfsArgs.builder()\n                    .squash(\"all-anonymous\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  nfsDc:\n    type: ionoscloud:compute:Datacenter\n    name: nfs_dc\n    properties:\n      name: NFS Datacenter\n      location: de/txl\n      description: Datacenter Description\n      secAuthProtection: false\n  nfsLan:\n    type: ionoscloud:compute:Lan\n    name: nfs_lan\n    properties:\n      datacenterId: ${nfsDc.id}\n      public: false\n      name: Lan for NFS\n  example:\n    type: ionoscloud:nfs:Cluster\n    properties:\n      name: test\n      location: de/txl\n      size: 2\n      nfs:\n        minVersion: '4.2'\n      connections:\n        datacenterId: ${nfsDc.id}\n        ipAddress: 192.168.100.10/24\n        lan: ${nfsLan.id}\n  exampleShare:\n    type: ionoscloud:nfs:Share\n    name: example\n    properties:\n      location: de/txl\n      clusterId: ${example.id}\n      name: example-share\n      quota: 512\n      gid: 512\n      uid: 512\n      clientGroups:\n        - description: Client Group 1\n          ipNetworks:\n            - 10.234.50.0/24\n          hosts:\n            - 10.234.62.123\n          nfs:\n            squash: all-anonymous\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Network File Storage Share resource can be imported using its \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e and `resource id`:\n\n```sh\n$ pulumi import ionoscloud:nfs/share:Share name location:cluster_id:resource_id\n```\n\n",
            "properties": {
                "clientGroups": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:nfs/ShareClientGroup:ShareClientGroup"
                    },
                    "description": "The groups of clients are the systems connecting to the Network File Storage cluster. Each group includes:\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the Network File Storage Cluster.\n"
                },
                "gid": {
                    "type": "integer",
                    "description": "The group ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the Network File Storage Cluster. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`. Other available locations are: `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The directory being exported.\n"
                },
                "nfsPath": {
                    "type": "string",
                    "description": "Path to the NFS export. The NFS path is the path to the directory being exported."
                },
                "quota": {
                    "type": "integer",
                    "description": "The quota in MiB for the export. The quota can restrict the amount of data that can be stored within the export. The quota can be disabled using \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n"
                },
                "uid": {
                    "type": "integer",
                    "description": "The user ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                }
            },
            "required": [
                "clientGroups",
                "clusterId",
                "name",
                "nfsPath"
            ],
            "inputProperties": {
                "clientGroups": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:nfs/ShareClientGroup:ShareClientGroup"
                    },
                    "description": "The groups of clients are the systems connecting to the Network File Storage cluster. Each group includes:\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the Network File Storage Cluster.\n",
                    "willReplaceOnChanges": true
                },
                "gid": {
                    "type": "integer",
                    "description": "The group ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the Network File Storage Cluster. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`. Other available locations are: `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The directory being exported.\n"
                },
                "quota": {
                    "type": "integer",
                    "description": "The quota in MiB for the export. The quota can restrict the amount of data that can be stored within the export. The quota can be disabled using \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n"
                },
                "uid": {
                    "type": "integer",
                    "description": "The user ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                }
            },
            "requiredInputs": [
                "clientGroups",
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Share resources.\n",
                "properties": {
                    "clientGroups": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:nfs/ShareClientGroup:ShareClientGroup"
                        },
                        "description": "The groups of clients are the systems connecting to the Network File Storage cluster. Each group includes:\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the Network File Storage Cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "gid": {
                        "type": "integer",
                        "description": "The group ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the Network File Storage Cluster. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`. Other available locations are: `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The directory being exported.\n"
                    },
                    "nfsPath": {
                        "type": "string",
                        "description": "Path to the NFS export. The NFS path is the path to the directory being exported."
                    },
                    "quota": {
                        "type": "integer",
                        "description": "The quota in MiB for the export. The quota can restrict the amount of data that can be stored within the export. The quota can be disabled using \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n"
                    },
                    "uid": {
                        "type": "integer",
                        "description": "The user ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:nlb/balancer:Balancer": {
            "description": "Manages a [Network Load Balancer](https://docs.ionos.com/cloud/network-services/network-load-balancer/outline) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst example1 = new ionoscloud.compute.Lan(\"example1\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example 1\",\n});\nconst example2 = new ionoscloud.compute.Lan(\"example2\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example 2\",\n});\nconst exampleBalancer = new ionoscloud.nlb.Balancer(\"example\", {\n    datacenterId: example.id,\n    name: \"example\",\n    listenerLan: example1.id,\n    targetLan: example2.id,\n    ips: [\"10.12.118.224\"],\n    lbPrivateIps: [\"10.13.72.225/24\"],\n    centralLogging: true,\n    loggingFormat: \"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample1 = ionoscloud.compute.Lan(\"example1\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example 1\")\nexample2 = ionoscloud.compute.Lan(\"example2\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example 2\")\nexample_balancer = ionoscloud.nlb.Balancer(\"example\",\n    datacenter_id=example.id,\n    name=\"example\",\n    listener_lan=example1.id,\n    target_lan=example2.id,\n    ips=[\"10.12.118.224\"],\n    lb_private_ips=[\"10.13.72.225/24\"],\n    central_logging=True,\n    logging_format=\"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var example1 = new Ionoscloud.Compute.Lan(\"example1\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example 1\",\n    });\n\n    var example2 = new Ionoscloud.Compute.Lan(\"example2\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example 2\",\n    });\n\n    var exampleBalancer = new Ionoscloud.Nlb.Balancer(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Name = \"example\",\n        ListenerLan = example1.Id,\n        TargetLan = example2.Id,\n        Ips = new[]\n        {\n            \"10.12.118.224\",\n        },\n        LbPrivateIps = new[]\n        {\n            \"10.13.72.225/24\",\n        },\n        CentralLogging = true,\n        LoggingFormat = \"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nlb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample1, err := compute.NewLan(ctx, \"example1\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan Example 1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample2, err := compute.NewLan(ctx, \"example2\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan Example 2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nlb.NewBalancer(ctx, \"example\", \u0026nlb.BalancerArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t\tListenerLan:  example1.ID(),\n\t\t\tTargetLan:    example2.ID(),\n\t\t\tIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.12.118.224\"),\n\t\t\t},\n\t\t\tLbPrivateIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.13.72.225/24\"),\n\t\t\t},\n\t\t\tCentralLogging: pulumi.Bool(true),\n\t\t\tLoggingFormat:  pulumi.String(\"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.Balancer;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.BalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var example1 = new Lan(\"example1\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"Lan Example 1\")\n            .build());\n\n        var example2 = new Lan(\"example2\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"Lan Example 2\")\n            .build());\n\n        var exampleBalancer = new Balancer(\"exampleBalancer\", BalancerArgs.builder()\n            .datacenterId(example.id())\n            .name(\"example\")\n            .listenerLan(example1.id())\n            .targetLan(example2.id())\n            .ips(\"10.12.118.224\")\n            .lbPrivateIps(\"10.13.72.225/24\")\n            .centralLogging(true)\n            .loggingFormat(\"%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \\\"\\\" \\\"\\\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  example1:\n    type: ionoscloud:compute:Lan\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: Lan Example 1\n  example2:\n    type: ionoscloud:compute:Lan\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: Lan Example 2\n  exampleBalancer:\n    type: ionoscloud:nlb:Balancer\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      name: example\n      listenerLan: ${example1.id}\n      targetLan: ${example2.id}\n      ips:\n        - 10.12.118.224\n      lbPrivateIps:\n        - 10.13.72.225/24\n      centralLogging: true\n      loggingFormat: '%{+Q}o %{-Q}ci - - [%trg] %r %ST %B \"\" \"\" %cp %ms %ft %b %s %TR %Tw %Tc %Tr %Ta %tsc %ac %fc %bc %sc %rc %sq %bq %CC %CS %hrl %hsl'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example configuring Flowlog\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.nlb.Balancer(\"example\", {\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"nlb with flowlog\",\n    listenerLan: example1.id,\n    targetLan: example2.id,\n    ips: [\"10.12.118.224\"],\n    lbPrivateIps: [\"10.13.72.225/24\"],\n    flowlog: {\n        action: \"ALL\",\n        bucket: \"flowlog-bucket\",\n        direction: \"INGRESS\",\n        name: \"flowlog\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nlb.Balancer(\"example\",\n    datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"nlb with flowlog\",\n    listener_lan=example1[\"id\"],\n    target_lan=example2[\"id\"],\n    ips=[\"10.12.118.224\"],\n    lb_private_ips=[\"10.13.72.225/24\"],\n    flowlog={\n        \"action\": \"ALL\",\n        \"bucket\": \"flowlog-bucket\",\n        \"direction\": \"INGRESS\",\n        \"name\": \"flowlog\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Nlb.Balancer(\"example\", new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"nlb with flowlog\",\n        ListenerLan = example1.Id,\n        TargetLan = example2.Id,\n        Ips = new[]\n        {\n            \"10.12.118.224\",\n        },\n        LbPrivateIps = new[]\n        {\n            \"10.13.72.225/24\",\n        },\n        Flowlog = new Ionoscloud.Nlb.Inputs.BalancerFlowlogArgs\n        {\n            Action = \"ALL\",\n            Bucket = \"flowlog-bucket\",\n            Direction = \"INGRESS\",\n            Name = \"flowlog\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nlb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nlb.NewBalancer(ctx, \"example\", \u0026nlb.BalancerArgs{\n\t\t\tDatacenterId: pulumi.Any(exampleIonoscloudDatacenter.Id),\n\t\t\tName:         pulumi.String(\"nlb with flowlog\"),\n\t\t\tListenerLan:  pulumi.Any(example1.Id),\n\t\t\tTargetLan:    pulumi.Any(example2.Id),\n\t\t\tIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.12.118.224\"),\n\t\t\t},\n\t\t\tLbPrivateIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.13.72.225/24\"),\n\t\t\t},\n\t\t\tFlowlog: \u0026nlb.BalancerFlowlogArgs{\n\t\t\t\tAction:    pulumi.String(\"ALL\"),\n\t\t\t\tBucket:    pulumi.String(\"flowlog-bucket\"),\n\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\tName:      pulumi.String(\"flowlog\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.Balancer;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.BalancerArgs;\nimport com.pulumi.ionoscloud.nlb.inputs.BalancerFlowlogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Balancer(\"example\", BalancerArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"nlb with flowlog\")\n            .listenerLan(example1.id())\n            .targetLan(example2.id())\n            .ips(\"10.12.118.224\")\n            .lbPrivateIps(\"10.13.72.225/24\")\n            .flowlog(BalancerFlowlogArgs.builder()\n                .action(\"ALL\")\n                .bucket(\"flowlog-bucket\")\n                .direction(\"INGRESS\")\n                .name(\"flowlog\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:nlb:Balancer\n    properties:\n      datacenterId: ${exampleIonoscloudDatacenter.id}\n      name: nlb with flowlog\n      listenerLan: ${example1.id}\n      targetLan: ${example2.id}\n      ips:\n        - 10.12.118.224\n      lbPrivateIps:\n        - 10.13.72.225/24\n      flowlog:\n        action: ALL\n        bucket: flowlog-bucket\n        direction: INGRESS\n        name: flowlog\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThis will configure flowlog for ALL(rejected and accepted) ingress traffic and will log it into an existing ionos bucket named `flowlog-bucket`. Any s3 compatible client can be used to create it. Adding a flowlog does not force re-creation or the nic, but changing any other field than\n\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e will. Deleting a flowlog will also force nic re-creation.\n\n## Import\n\nA Network Load Balancer resource can be imported using its `resource id` and the `datacenter id` e.g.\n\n```sh\nterraform import ionoscloud_networkloadbalancer.my_networkloadbalancer datacenter uuid/networkloadbalancer uuid\n```\n\n",
            "properties": {
                "centralLogging": {
                    "type": "boolean",
                    "description": "[bool] Turn logging on and off for this product. Default value is 'false'.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n"
                },
                "flowlog": {
                    "$ref": "#/types/ionoscloud:nlb/BalancerFlowlog:BalancerFlowlog",
                    "description": "[list] Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of IP addresses of the Network Load Balancer. (inbound and outbound) IP of the listenerLan must be a customer reserved IP for the public load balancer and private IP for the private load balancer.\n"
                },
                "lbPrivateIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of private IP addresses with subnet mask of the Network Load Balancer. IPs must contain valid subnet mask. If user will not provide any IP then the system will generate one IP with /24 subnet.\n"
                },
                "listenerLan": {
                    "type": "integer",
                    "description": "[int] Id of the listening LAN. (inbound)\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "loggingFormat": {
                    "type": "string",
                    "description": "Specifies the format of the logs."
                },
                "name": {
                    "type": "string",
                    "description": "[string] A name of that Network Load Balancer.\n"
                },
                "targetLan": {
                    "type": "integer",
                    "description": "[int] Id of the balanced private target LAN. (outbound)\n"
                }
            },
            "required": [
                "datacenterId",
                "lbPrivateIps",
                "listenerLan",
                "name",
                "targetLan"
            ],
            "inputProperties": {
                "centralLogging": {
                    "type": "boolean",
                    "description": "[bool] Turn logging on and off for this product. Default value is 'false'.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n",
                    "willReplaceOnChanges": true
                },
                "flowlog": {
                    "$ref": "#/types/ionoscloud:nlb/BalancerFlowlog:BalancerFlowlog",
                    "description": "[list] Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of IP addresses of the Network Load Balancer. (inbound and outbound) IP of the listenerLan must be a customer reserved IP for the public load balancer and private IP for the private load balancer.\n"
                },
                "lbPrivateIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] Collection of private IP addresses with subnet mask of the Network Load Balancer. IPs must contain valid subnet mask. If user will not provide any IP then the system will generate one IP with /24 subnet.\n"
                },
                "listenerLan": {
                    "type": "integer",
                    "description": "[int] Id of the listening LAN. (inbound)\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "loggingFormat": {
                    "type": "string",
                    "description": "Specifies the format of the logs."
                },
                "name": {
                    "type": "string",
                    "description": "[string] A name of that Network Load Balancer.\n"
                },
                "targetLan": {
                    "type": "integer",
                    "description": "[int] Id of the balanced private target LAN. (outbound)\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "listenerLan",
                "targetLan"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Balancer resources.\n",
                "properties": {
                    "centralLogging": {
                        "type": "boolean",
                        "description": "[bool] Turn logging on and off for this product. Default value is 'false'.\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] A Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "flowlog": {
                        "$ref": "#/types/ionoscloud:nlb/BalancerFlowlog:BalancerFlowlog",
                        "description": "[list] Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n"
                    },
                    "ips": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Collection of IP addresses of the Network Load Balancer. (inbound and outbound) IP of the listenerLan must be a customer reserved IP for the public load balancer and private IP for the private load balancer.\n"
                    },
                    "lbPrivateIps": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] Collection of private IP addresses with subnet mask of the Network Load Balancer. IPs must contain valid subnet mask. If user will not provide any IP then the system will generate one IP with /24 subnet.\n"
                    },
                    "listenerLan": {
                        "type": "integer",
                        "description": "[int] Id of the listening LAN. (inbound)\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "loggingFormat": {
                        "type": "string",
                        "description": "Specifies the format of the logs."
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] A name of that Network Load Balancer.\n"
                    },
                    "targetLan": {
                        "type": "integer",
                        "description": "[int] Id of the balanced private target LAN. (outbound)\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:nlb/forwardingRule:ForwardingRule": {
            "description": "Manages a **Network Load Balancer Forwarding Rule** on IonosCloud.\n\n## Example Usage\n\n### \n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst example1 = new ionoscloud.compute.Lan(\"example1\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example 1\",\n});\nconst example2 = new ionoscloud.compute.Lan(\"example2\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example 2\",\n});\nconst exampleBalancer = new ionoscloud.nlb.Balancer(\"example\", {\n    datacenterId: example.id,\n    name: \"example\",\n    listenerLan: example1.id,\n    targetLan: example2.id,\n    ips: [\"10.12.118.224\"],\n    lbPrivateIps: [\"10.13.72.225/24\"],\n});\nconst exampleForwardingRule = new ionoscloud.nlb.ForwardingRule(\"example\", {\n    datacenterId: example.id,\n    networkloadbalancerId: exampleBalancer.id,\n    name: \"example\",\n    algorithm: \"SOURCE_IP\",\n    protocol: \"TCP\",\n    listenerIp: \"10.12.118.224\",\n    listenerPort: 8081,\n    targets: [{\n        ip: \"22.231.2.2\",\n        port: 8080,\n        weight: 123,\n        proxyProtocol: \"v1\",\n        healthCheck: {\n            check: true,\n            checkInterval: 1000,\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample1 = ionoscloud.compute.Lan(\"example1\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example 1\")\nexample2 = ionoscloud.compute.Lan(\"example2\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example 2\")\nexample_balancer = ionoscloud.nlb.Balancer(\"example\",\n    datacenter_id=example.id,\n    name=\"example\",\n    listener_lan=example1.id,\n    target_lan=example2.id,\n    ips=[\"10.12.118.224\"],\n    lb_private_ips=[\"10.13.72.225/24\"])\nexample_forwarding_rule = ionoscloud.nlb.ForwardingRule(\"example\",\n    datacenter_id=example.id,\n    networkloadbalancer_id=example_balancer.id,\n    name=\"example\",\n    algorithm=\"SOURCE_IP\",\n    protocol=\"TCP\",\n    listener_ip=\"10.12.118.224\",\n    listener_port=8081,\n    targets=[{\n        \"ip\": \"22.231.2.2\",\n        \"port\": 8080,\n        \"weight\": 123,\n        \"proxy_protocol\": \"v1\",\n        \"health_check\": {\n            \"check\": True,\n            \"check_interval\": 1000,\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var example1 = new Ionoscloud.Compute.Lan(\"example1\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example 1\",\n    });\n\n    var example2 = new Ionoscloud.Compute.Lan(\"example2\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example 2\",\n    });\n\n    var exampleBalancer = new Ionoscloud.Nlb.Balancer(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Name = \"example\",\n        ListenerLan = example1.Id,\n        TargetLan = example2.Id,\n        Ips = new[]\n        {\n            \"10.12.118.224\",\n        },\n        LbPrivateIps = new[]\n        {\n            \"10.13.72.225/24\",\n        },\n    });\n\n    var exampleForwardingRule = new Ionoscloud.Nlb.ForwardingRule(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        NetworkloadbalancerId = exampleBalancer.Id,\n        Name = \"example\",\n        Algorithm = \"SOURCE_IP\",\n        Protocol = \"TCP\",\n        ListenerIp = \"10.12.118.224\",\n        ListenerPort = 8081,\n        Targets = new[]\n        {\n            new Ionoscloud.Nlb.Inputs.ForwardingRuleTargetArgs\n            {\n                Ip = \"22.231.2.2\",\n                Port = 8080,\n                Weight = 123,\n                ProxyProtocol = \"v1\",\n                HealthCheck = new Ionoscloud.Nlb.Inputs.ForwardingRuleTargetHealthCheckArgs\n                {\n                    Check = true,\n                    CheckInterval = 1000,\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nlb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:              pulumi.String(\"Datacenter Example\"),\n\t\t\tLocation:          pulumi.String(\"us/las\"),\n\t\t\tDescription:       pulumi.String(\"Datacenter Description\"),\n\t\t\tSecAuthProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample1, err := compute.NewLan(ctx, \"example1\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan Example 1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample2, err := compute.NewLan(ctx, \"example2\", \u0026compute.LanArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tName:         pulumi.String(\"Lan Example 2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBalancer, err := nlb.NewBalancer(ctx, \"example\", \u0026nlb.BalancerArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tName:         pulumi.String(\"example\"),\n\t\t\tListenerLan:  example1.ID(),\n\t\t\tTargetLan:    example2.ID(),\n\t\t\tIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.12.118.224\"),\n\t\t\t},\n\t\t\tLbPrivateIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.13.72.225/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nlb.NewForwardingRule(ctx, \"example\", \u0026nlb.ForwardingRuleArgs{\n\t\t\tDatacenterId:          example.ID(),\n\t\t\tNetworkloadbalancerId: exampleBalancer.ID(),\n\t\t\tName:                  pulumi.String(\"example\"),\n\t\t\tAlgorithm:             pulumi.String(\"SOURCE_IP\"),\n\t\t\tProtocol:              pulumi.String(\"TCP\"),\n\t\t\tListenerIp:            pulumi.String(\"10.12.118.224\"),\n\t\t\tListenerPort:          pulumi.Int(8081),\n\t\t\tTargets: nlb.ForwardingRuleTargetArray{\n\t\t\t\t\u0026nlb.ForwardingRuleTargetArgs{\n\t\t\t\t\tIp:            pulumi.String(\"22.231.2.2\"),\n\t\t\t\t\tPort:          pulumi.Int(8080),\n\t\t\t\t\tWeight:        pulumi.Int(123),\n\t\t\t\t\tProxyProtocol: pulumi.String(\"v1\"),\n\t\t\t\t\tHealthCheck: \u0026nlb.ForwardingRuleTargetHealthCheckArgs{\n\t\t\t\t\t\tCheck:         pulumi.Bool(true),\n\t\t\t\t\t\tCheckInterval: pulumi.Int(1000),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.Balancer;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.BalancerArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.ForwardingRule;\nimport com.ionoscloud.pulumi.ionoscloud.nlb.ForwardingRuleArgs;\nimport com.pulumi.ionoscloud.nlb.inputs.ForwardingRuleTargetArgs;\nimport com.pulumi.ionoscloud.nlb.inputs.ForwardingRuleTargetHealthCheckArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .description(\"Datacenter Description\")\n            .secAuthProtection(false)\n            .build());\n\n        var example1 = new Lan(\"example1\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"Lan Example 1\")\n            .build());\n\n        var example2 = new Lan(\"example2\", LanArgs.builder()\n            .datacenterId(example.id())\n            .public_(false)\n            .name(\"Lan Example 2\")\n            .build());\n\n        var exampleBalancer = new Balancer(\"exampleBalancer\", BalancerArgs.builder()\n            .datacenterId(example.id())\n            .name(\"example\")\n            .listenerLan(example1.id())\n            .targetLan(example2.id())\n            .ips(\"10.12.118.224\")\n            .lbPrivateIps(\"10.13.72.225/24\")\n            .build());\n\n        var exampleForwardingRule = new ForwardingRule(\"exampleForwardingRule\", ForwardingRuleArgs.builder()\n            .datacenterId(example.id())\n            .networkloadbalancerId(exampleBalancer.id())\n            .name(\"example\")\n            .algorithm(\"SOURCE_IP\")\n            .protocol(\"TCP\")\n            .listenerIp(\"10.12.118.224\")\n            .listenerPort(8081)\n            .targets(ForwardingRuleTargetArgs.builder()\n                .ip(\"22.231.2.2\")\n                .port(8080)\n                .weight(123)\n                .proxyProtocol(\"v1\")\n                .healthCheck(ForwardingRuleTargetHealthCheckArgs.builder()\n                    .check(true)\n                    .checkInterval(1000)\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Example\n      location: us/las\n      description: Datacenter Description\n      secAuthProtection: false\n  example1:\n    type: ionoscloud:compute:Lan\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: Lan Example 1\n  example2:\n    type: ionoscloud:compute:Lan\n    properties:\n      datacenterId: ${example.id}\n      public: false\n      name: Lan Example 2\n  exampleBalancer:\n    type: ionoscloud:nlb:Balancer\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      name: example\n      listenerLan: ${example1.id}\n      targetLan: ${example2.id}\n      ips:\n        - 10.12.118.224\n      lbPrivateIps:\n        - 10.13.72.225/24\n  exampleForwardingRule:\n    type: ionoscloud:nlb:ForwardingRule\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      networkloadbalancerId: ${exampleBalancer.id}\n      name: example\n      algorithm: SOURCE_IP\n      protocol: TCP\n      listenerIp: 10.12.118.224\n      listenerPort: '8081'\n      targets:\n        - ip: 22.231.2.2\n          port: '8080'\n          weight: '123'\n          proxyProtocol: v1\n          healthCheck:\n            check: true\n            checkInterval: 1000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with dynamic block for targets:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n    description: \"Datacenter Description\",\n    secAuthProtection: false,\n});\nconst example1 = new ionoscloud.compute.Lan(\"example1\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example 1\",\n});\nconst example2 = new ionoscloud.compute.Lan(\"example2\", {\n    datacenterId: example.id,\n    \"public\": false,\n    name: \"Lan Example 2\",\n});\nconst exampleBalancer = new ionoscloud.nlb.Balancer(\"example\", {\n    datacenterId: example.id,\n    name: \"example\",\n    listenerLan: example1.id,\n    targetLan: example2.id,\n    ips: [\"10.12.118.224\"],\n    lbPrivateIps: [\"10.13.72.225/24\"],\n});\nconst config = new pulumi.Config();\nconst iPs = config.getObject\u003cArray\u003cany\u003e\u003e(\"iPs\") || [\n    \"22.231.2.2\",\n    \"22.231.2.3\",\n    \"22.231.2.4\",\n];\nconst exampleForwardingRule = new ionoscloud.nlb.ForwardingRule(\"example\", {\n    targets: iPs.map((v, k) =\u003e ({key: k, value: v})).map(entry =\u003e ({\n        ip: entry.value,\n        port: 31234,\n        weight: 1,\n        healthCheck: {\n            check: true,\n            checkInterval: 1000,\n            maintenance: false,\n        },\n    })),\n    datacenterId: example.id,\n    networkloadbalancerId: exampleBalancer.id,\n    name: \"example\",\n    algorithm: \"SOURCE_IP\",\n    protocol: \"TCP\",\n    listenerIp: \"10.12.118.224\",\n    listenerPort: 8081,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Example\",\n    location=\"us/las\",\n    description=\"Datacenter Description\",\n    sec_auth_protection=False)\nexample1 = ionoscloud.compute.Lan(\"example1\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example 1\")\nexample2 = ionoscloud.compute.Lan(\"example2\",\n    datacenter_id=example.id,\n    public=False,\n    name=\"Lan Example 2\")\nexample_balancer = ionoscloud.nlb.Balancer(\"example\",\n    datacenter_id=example.id,\n    name=\"example\",\n    listener_lan=example1.id,\n    target_lan=example2.id,\n    ips=[\"10.12.118.224\"],\n    lb_private_ips=[\"10.13.72.225/24\"])\nconfig = pulumi.Config()\ni_ps = config.get_object(\"iPs\")\nif i_ps is None:\n    i_ps = [\n        \"22.231.2.2\",\n        \"22.231.2.3\",\n        \"22.231.2.4\",\n    ]\nexample_forwarding_rule = ionoscloud.nlb.ForwardingRule(\"example\",\n    targets=[{\n        \"ip\": entry[\"value\"],\n        \"port\": 31234,\n        \"weight\": 1,\n        \"health_check\": {\n            \"check\": True,\n            \"check_interval\": 1000,\n            \"maintenance\": False,\n        },\n    } for entry in [{\"key\": k, \"value\": v} for k, v in i_ps.items()]],\n    datacenter_id=example.id,\n    networkloadbalancer_id=example_balancer.id,\n    name=\"example\",\n    algorithm=\"SOURCE_IP\",\n    protocol=\"TCP\",\n    listener_ip=\"10.12.118.224\",\n    listener_port=8081)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n        Description = \"Datacenter Description\",\n        SecAuthProtection = false,\n    });\n\n    var example1 = new Ionoscloud.Compute.Lan(\"example1\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example 1\",\n    });\n\n    var example2 = new Ionoscloud.Compute.Lan(\"example2\", new()\n    {\n        DatacenterId = example.Id,\n        Public = false,\n        Name = \"Lan Example 2\",\n    });\n\n    var exampleBalancer = new Ionoscloud.Nlb.Balancer(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        Name = \"example\",\n        ListenerLan = example1.Id,\n        TargetLan = example2.Id,\n        Ips = new[]\n        {\n            \"10.12.118.224\",\n        },\n        LbPrivateIps = new[]\n        {\n            \"10.13.72.225/24\",\n        },\n    });\n\n    var config = new Config();\n    var iPs = config.GetObject\u003cdynamic[]\u003e(\"iPs\") ?? new[]\n    {\n        \"22.231.2.2\",\n        \"22.231.2.3\",\n        \"22.231.2.4\",\n    };\n    var exampleForwardingRule = new Ionoscloud.Nlb.ForwardingRule(\"example\", new()\n    {\n        Targets = iPs.Select((v, k) =\u003e new { Key = k, Value = v }).Select(entry =\u003e \n        {\n            return new Ionoscloud.Nlb.Inputs.ForwardingRuleTargetArgs\n            {\n                Ip = entry.Value,\n                Port = 31234,\n                Weight = 1,\n                HealthCheck = new Ionoscloud.Nlb.Inputs.ForwardingRuleTargetHealthCheckArgs\n                {\n                    Check = true,\n                    CheckInterval = 1000,\n                    Maintenance = false,\n                },\n            };\n        }).ToList(),\n        DatacenterId = example.Id,\n        NetworkloadbalancerId = exampleBalancer.Id,\n        Name = \"example\",\n        Algorithm = \"SOURCE_IP\",\n        Protocol = \"TCP\",\n        ListenerIp = \"10.12.118.224\",\n        ListenerPort = 8081,\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Network Load Balancer Forwarding Rule resource can be imported using its `resource id`, the `datacenter id` and the `networkloadbalancer id` e.g.\n\n```sh\nterraform import ionoscloud_networkloadbalancer_forwardingrule.my_networkloadbalancer_forwardingrule datacenter uuid/networkloadbalancer uuid/networkloadbalancer_forwardingrule uuid\n```\n\n",
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "[string] Algorithm for the balancing.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n"
                },
                "healthCheck": {
                    "$ref": "#/types/ionoscloud:nlb/ForwardingRuleHealthCheck:ForwardingRuleHealthCheck",
                    "description": "Health check attributes for Network Load Balancer forwarding rule.\n"
                },
                "listenerIp": {
                    "type": "string",
                    "description": "[string] Listening IP. (inbound)\n"
                },
                "listenerPort": {
                    "type": "integer",
                    "description": "[int] Listening port number. (inbound) (range: 1 to 65535)\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] A name of that Network Load Balancer forwarding rule.\n"
                },
                "networkloadbalancerId": {
                    "type": "string"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Protocol of the balancing.\n"
                },
                "targets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:nlb/ForwardingRuleTarget:ForwardingRuleTarget"
                    },
                    "description": "[Set] Array of items in that collection.\n"
                }
            },
            "required": [
                "algorithm",
                "datacenterId",
                "healthCheck",
                "listenerIp",
                "listenerPort",
                "name",
                "networkloadbalancerId",
                "protocol",
                "targets"
            ],
            "inputProperties": {
                "algorithm": {
                    "type": "string",
                    "description": "[string] Algorithm for the balancing.\n"
                },
                "datacenterId": {
                    "type": "string",
                    "description": "[string] A Datacenter's UUID.\n",
                    "willReplaceOnChanges": true
                },
                "healthCheck": {
                    "$ref": "#/types/ionoscloud:nlb/ForwardingRuleHealthCheck:ForwardingRuleHealthCheck",
                    "description": "Health check attributes for Network Load Balancer forwarding rule.\n"
                },
                "listenerIp": {
                    "type": "string",
                    "description": "[string] Listening IP. (inbound)\n"
                },
                "listenerPort": {
                    "type": "integer",
                    "description": "[int] Listening port number. (inbound) (range: 1 to 65535)\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] A name of that Network Load Balancer forwarding rule.\n"
                },
                "networkloadbalancerId": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] Protocol of the balancing.\n"
                },
                "targets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:nlb/ForwardingRuleTarget:ForwardingRuleTarget"
                    },
                    "description": "[Set] Array of items in that collection.\n"
                }
            },
            "requiredInputs": [
                "algorithm",
                "datacenterId",
                "listenerIp",
                "listenerPort",
                "networkloadbalancerId",
                "protocol",
                "targets"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ForwardingRule resources.\n",
                "properties": {
                    "algorithm": {
                        "type": "string",
                        "description": "[string] Algorithm for the balancing.\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] A Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "healthCheck": {
                        "$ref": "#/types/ionoscloud:nlb/ForwardingRuleHealthCheck:ForwardingRuleHealthCheck",
                        "description": "Health check attributes for Network Load Balancer forwarding rule.\n"
                    },
                    "listenerIp": {
                        "type": "string",
                        "description": "[string] Listening IP. (inbound)\n"
                    },
                    "listenerPort": {
                        "type": "integer",
                        "description": "[int] Listening port number. (inbound) (range: 1 to 65535)\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] A name of that Network Load Balancer forwarding rule.\n"
                    },
                    "networkloadbalancerId": {
                        "type": "string",
                        "willReplaceOnChanges": true
                    },
                    "protocol": {
                        "type": "string",
                        "description": "[string] Protocol of the balancing.\n"
                    },
                    "targets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:nlb/ForwardingRuleTarget:ForwardingRuleTarget"
                        },
                        "description": "[Set] Array of items in that collection.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:nsg/datacenterNsgSelection:DatacenterNsgSelection": {
            "description": "Links a Network Security Group to a IonosCloud datacenter. The datacenter can only have one linked NSG. To set a new NSG for the datacenter, the current one will be unlinked.\n\n## Example Usage\n\nA Network Security Group can be linked to a \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Datacenter`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Datacenter`\" pulumi-lang-go=\"`compute.Datacenter`\" pulumi-lang-python=\"`compute.Datacenter`\" pulumi-lang-yaml=\"`ionoscloud.compute.Datacenter`\" pulumi-lang-java=\"`ionoscloud.compute.Datacenter`\"\u003e`ionoscloud.compute.Datacenter`\u003c/span\u003e with this resource.\nDeleting the resource will unlink the NSG from the datacenter.\n\n### Select an external volume\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter Default NSG Example\",\n    location: \"de/fra\",\n});\nconst exampleNsg = new ionoscloud.nsg.Nsg(\"example\", {\n    name: \"NSG\",\n    description: \"NSG\",\n    datacenterId: example.id,\n});\nconst exampleDatacenterNsgSelection = new ionoscloud.nsg.DatacenterNsgSelection(\"example\", {\n    datacenterId: example.id,\n    nsgId: exampleNsg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter Default NSG Example\",\n    location=\"de/fra\")\nexample_nsg = ionoscloud.nsg.Nsg(\"example\",\n    name=\"NSG\",\n    description=\"NSG\",\n    datacenter_id=example.id)\nexample_datacenter_nsg_selection = ionoscloud.nsg.DatacenterNsgSelection(\"example\",\n    datacenter_id=example.id,\n    nsg_id=example_nsg.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter Default NSG Example\",\n        Location = \"de/fra\",\n    });\n\n    var exampleNsg = new Ionoscloud.Nsg.Nsg(\"example\", new()\n    {\n        Name = \"NSG\",\n        Description = \"NSG\",\n        DatacenterId = example.Id,\n    });\n\n    var exampleDatacenterNsgSelection = new Ionoscloud.Nsg.DatacenterNsgSelection(\"example\", new()\n    {\n        DatacenterId = example.Id,\n        NsgId = exampleNsg.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nsg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter Default NSG Example\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNsg, err := nsg.NewNsg(ctx, \"example\", \u0026nsg.NsgArgs{\n\t\t\tName:         pulumi.String(\"NSG\"),\n\t\t\tDescription:  pulumi.String(\"NSG\"),\n\t\t\tDatacenterId: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nsg.NewDatacenterNsgSelection(ctx, \"example\", \u0026nsg.DatacenterNsgSelectionArgs{\n\t\t\tDatacenterId: example.ID(),\n\t\t\tNsgId:        exampleNsg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.Nsg;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.NsgArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.DatacenterNsgSelection;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.DatacenterNsgSelectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter Default NSG Example\")\n            .location(\"de/fra\")\n            .build());\n\n        var exampleNsg = new Nsg(\"exampleNsg\", NsgArgs.builder()\n            .name(\"NSG\")\n            .description(\"NSG\")\n            .datacenterId(example.id())\n            .build());\n\n        var exampleDatacenterNsgSelection = new DatacenterNsgSelection(\"exampleDatacenterNsgSelection\", DatacenterNsgSelectionArgs.builder()\n            .datacenterId(example.id())\n            .nsgId(exampleNsg.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter Default NSG Example\n      location: de/fra\n  exampleNsg:\n    type: ionoscloud:nsg:Nsg\n    name: example\n    properties:\n      name: NSG\n      description: NSG\n      datacenterId: ${example.id}\n  exampleDatacenterNsgSelection:\n    type: ionoscloud:nsg:DatacenterNsgSelection\n    name: example\n    properties:\n      datacenterId: ${example.id}\n      nsgId: ${exampleNsg.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "nsgId": {
                    "type": "string",
                    "description": "[string] The ID of a Network Security Group.\n"
                }
            },
            "required": [
                "datacenterId",
                "nsgId"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "nsgId": {
                    "type": "string",
                    "description": "[string] The ID of a Network Security Group.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "nsgId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatacenterNsgSelection resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "nsgId": {
                        "type": "string",
                        "description": "[string] The ID of a Network Security Group.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:nsg/firewall:Firewall": {
            "description": "Manages a **Network Security Group Rule** on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter NSG Example\",\n    location: \"de/txl\",\n});\nconst exampleNsg = new ionoscloud.nsg.Nsg(\"example\", {\n    name: \"Example NSG\",\n    description: \"Example NSG Description\",\n    datacenterId: example.id,\n});\nconst exampleFirewall = new ionoscloud.nsg.Firewall(\"example\", {\n    nsgId: exampleNsg.id,\n    datacenterId: example.id,\n    protocol: \"TCP\",\n    name: \"SG Rule\",\n    sourceMac: \"00:0a:95:9d:68:15\",\n    sourceIp: \"22.231.113.11\",\n    targetIp: \"22.231.113.75\",\n    type: \"EGRESS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter NSG Example\",\n    location=\"de/txl\")\nexample_nsg = ionoscloud.nsg.Nsg(\"example\",\n    name=\"Example NSG\",\n    description=\"Example NSG Description\",\n    datacenter_id=example.id)\nexample_firewall = ionoscloud.nsg.Firewall(\"example\",\n    nsg_id=example_nsg.id,\n    datacenter_id=example.id,\n    protocol=\"TCP\",\n    name=\"SG Rule\",\n    source_mac=\"00:0a:95:9d:68:15\",\n    source_ip=\"22.231.113.11\",\n    target_ip=\"22.231.113.75\",\n    type=\"EGRESS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter NSG Example\",\n        Location = \"de/txl\",\n    });\n\n    var exampleNsg = new Ionoscloud.Nsg.Nsg(\"example\", new()\n    {\n        Name = \"Example NSG\",\n        Description = \"Example NSG Description\",\n        DatacenterId = example.Id,\n    });\n\n    var exampleFirewall = new Ionoscloud.Nsg.Firewall(\"example\", new()\n    {\n        NsgId = exampleNsg.Id,\n        DatacenterId = example.Id,\n        Protocol = \"TCP\",\n        Name = \"SG Rule\",\n        SourceMac = \"00:0a:95:9d:68:15\",\n        SourceIp = \"22.231.113.11\",\n        TargetIp = \"22.231.113.75\",\n        Type = \"EGRESS\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nsg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter NSG Example\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNsg, err := nsg.NewNsg(ctx, \"example\", \u0026nsg.NsgArgs{\n\t\t\tName:         pulumi.String(\"Example NSG\"),\n\t\t\tDescription:  pulumi.String(\"Example NSG Description\"),\n\t\t\tDatacenterId: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nsg.NewFirewall(ctx, \"example\", \u0026nsg.FirewallArgs{\n\t\t\tNsgId:        exampleNsg.ID(),\n\t\t\tDatacenterId: example.ID(),\n\t\t\tProtocol:     pulumi.String(\"TCP\"),\n\t\t\tName:         pulumi.String(\"SG Rule\"),\n\t\t\tSourceMac:    pulumi.String(\"00:0a:95:9d:68:15\"),\n\t\t\tSourceIp:     pulumi.String(\"22.231.113.11\"),\n\t\t\tTargetIp:     pulumi.String(\"22.231.113.75\"),\n\t\t\tType:         pulumi.String(\"EGRESS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.Nsg;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.NsgArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.Firewall;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.FirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter NSG Example\")\n            .location(\"de/txl\")\n            .build());\n\n        var exampleNsg = new Nsg(\"exampleNsg\", NsgArgs.builder()\n            .name(\"Example NSG\")\n            .description(\"Example NSG Description\")\n            .datacenterId(example.id())\n            .build());\n\n        var exampleFirewall = new Firewall(\"exampleFirewall\", FirewallArgs.builder()\n            .nsgId(exampleNsg.id())\n            .datacenterId(example.id())\n            .protocol(\"TCP\")\n            .name(\"SG Rule\")\n            .sourceMac(\"00:0a:95:9d:68:15\")\n            .sourceIp(\"22.231.113.11\")\n            .targetIp(\"22.231.113.75\")\n            .type(\"EGRESS\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter NSG Example\n      location: de/txl\n  exampleNsg:\n    type: ionoscloud:nsg:Nsg\n    name: example\n    properties:\n      name: Example NSG\n      description: Example NSG Description\n      datacenterId: ${example.id}\n  exampleFirewall:\n    type: ionoscloud:nsg:Firewall\n    name: example\n    properties:\n      nsgId: ${exampleNsg.id}\n      datacenterId: ${example.id}\n      protocol: TCP\n      name: SG Rule\n      sourceMac: 00:0a:95:9d:68:15\n      sourceIp: 22.231.113.11\n      targetIp: 22.231.113.75\n      type: EGRESS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Network Security Group firewall rule can be imported using the `datacenter id`, `nsg id` and `firewall rule id`, e.g.\n\n```sh\n$ pulumi import ionoscloud:nsg/firewall:Firewall mynsg_firewallrule datacenter_uuid/nsg_uuid/firewall_uuid\n```\n\nOr by using an \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e block.\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "icmpCode": {
                    "type": "string",
                    "description": "[int] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen.\n"
                },
                "icmpType": {
                    "type": "string",
                    "description": "[string] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the firewall rule.\n"
                },
                "nsgId": {
                    "type": "string",
                    "description": "[string] The ID of a Network Security Group.\n"
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "[int] Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "[int] Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] The protocol for the rule: TCP, UDP, ICMP, ANY. Property cannot be modified after creation (disallowed in update requests).\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "(computed)[string] Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "[string] Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address. Valid format: aa:bb:cc:dd:ee:ff.\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "(Computed)[string] In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Computed)[string] The type of firewall rule. If is not specified, it will take the default value INGRESS.\n"
                }
            },
            "required": [
                "datacenterId",
                "name",
                "nsgId",
                "protocol",
                "sourceIp",
                "targetIp",
                "type"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "icmpCode": {
                    "type": "string",
                    "description": "[int] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen.\n"
                },
                "icmpType": {
                    "type": "string",
                    "description": "[string] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the firewall rule.\n"
                },
                "nsgId": {
                    "type": "string",
                    "description": "[string] The ID of a Network Security Group.\n",
                    "willReplaceOnChanges": true
                },
                "portRangeEnd": {
                    "type": "integer",
                    "description": "[int] Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "portRangeStart": {
                    "type": "integer",
                    "description": "[int] Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "[string] The protocol for the rule: TCP, UDP, ICMP, ANY. Property cannot be modified after creation (disallowed in update requests).\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "(computed)[string] Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.\n"
                },
                "sourceMac": {
                    "type": "string",
                    "description": "[string] Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address. Valid format: aa:bb:cc:dd:ee:ff.\n"
                },
                "targetIp": {
                    "type": "string",
                    "description": "(Computed)[string] In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Computed)[string] The type of firewall rule. If is not specified, it will take the default value INGRESS.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "nsgId",
                "protocol"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Firewall resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "icmpCode": {
                        "type": "string",
                        "description": "[int] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen.\n"
                    },
                    "icmpType": {
                        "type": "string",
                        "description": "[string] Defines the allowed code (from 0 to 254) if protocol ICMP is chosen. Value null allows all codes.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the firewall rule.\n"
                    },
                    "nsgId": {
                        "type": "string",
                        "description": "[string] The ID of a Network Security Group.\n",
                        "willReplaceOnChanges": true
                    },
                    "portRangeEnd": {
                        "type": "integer",
                        "description": "[int] Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                    },
                    "portRangeStart": {
                        "type": "integer",
                        "description": "[int] Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen. Leave portRangeStart and portRangeEnd null to allow all ports.\n"
                    },
                    "protocol": {
                        "type": "string",
                        "description": "[string] The protocol for the rule: TCP, UDP, ICMP, ANY. Property cannot be modified after creation (disallowed in update requests).\n"
                    },
                    "sourceIp": {
                        "type": "string",
                        "description": "(computed)[string] Only traffic originating from the respective IPv4 address is allowed. Value null allows all source IPs.\n"
                    },
                    "sourceMac": {
                        "type": "string",
                        "description": "[string] Only traffic originating from the respective MAC address is allowed. Valid format: aa:bb:cc:dd:ee:ff. Value null allows all source MAC address. Valid format: aa:bb:cc:dd:ee:ff.\n"
                    },
                    "targetIp": {
                        "type": "string",
                        "description": "(Computed)[string] In case the target NIC has multiple IP addresses, only traffic directed to the respective IP address of the NIC is allowed. Value null allows all target IPs.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "(Computed)[string] The type of firewall rule. If is not specified, it will take the default value INGRESS.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:nsg/nsg:Nsg": {
            "description": "Manages a [Network Security Group](https://docs.ionos.com/cloud/network-services/network-security-groups/overview) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.compute.Datacenter(\"example\", {\n    name: \"Datacenter NSG Example\",\n    location: \"de/txl\",\n});\nconst exampleNsg = new ionoscloud.nsg.Nsg(\"example\", {\n    name: \"Example NSG\",\n    description: \"Example NSG Description\",\n    datacenterId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.Datacenter(\"example\",\n    name=\"Datacenter NSG Example\",\n    location=\"de/txl\")\nexample_nsg = ionoscloud.nsg.Nsg(\"example\",\n    name=\"Example NSG\",\n    description=\"Example NSG Description\",\n    datacenter_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Compute.Datacenter(\"example\", new()\n    {\n        Name = \"Datacenter NSG Example\",\n        Location = \"de/txl\",\n    });\n\n    var exampleNsg = new Ionoscloud.Nsg.Nsg(\"example\", new()\n    {\n        Name = \"Example NSG\",\n        Description = \"Example NSG Description\",\n        DatacenterId = example.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nsg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := compute.NewDatacenter(ctx, \"example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"Datacenter NSG Example\"),\n\t\t\tLocation: pulumi.String(\"de/txl\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = nsg.NewNsg(ctx, \"example\", \u0026nsg.NsgArgs{\n\t\t\tName:         pulumi.String(\"Example NSG\"),\n\t\t\tDescription:  pulumi.String(\"Example NSG Description\"),\n\t\t\tDatacenterId: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.Nsg;\nimport com.ionoscloud.pulumi.ionoscloud.nsg.NsgArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Datacenter(\"example\", DatacenterArgs.builder()\n            .name(\"Datacenter NSG Example\")\n            .location(\"de/txl\")\n            .build());\n\n        var exampleNsg = new Nsg(\"exampleNsg\", NsgArgs.builder()\n            .name(\"Example NSG\")\n            .description(\"Example NSG Description\")\n            .datacenterId(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:compute:Datacenter\n    properties:\n      name: Datacenter NSG Example\n      location: de/txl\n  exampleNsg:\n    type: ionoscloud:nsg:Nsg\n    name: example\n    properties:\n      name: Example NSG\n      description: Example NSG Description\n      datacenterId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Server can be imported using the `resource id` and the `datacenter id`, e.g.\n\n```sh\nterraform import ionoscloud_nsg.mynsg datacenter uuid/nsg uuid\n```\n\nOr by using an \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e block. Here is an example that allows you to import the default created nsg into terraform.\n",
            "properties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] Description for the Network Security Group.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise."
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Network Security Group.\n"
                },
                "ruleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Firewall Rules that are part of the Network Security Group\n"
                }
            },
            "required": [
                "datacenterId",
                "description",
                "name",
                "ruleIds"
            ],
            "inputProperties": {
                "datacenterId": {
                    "type": "string",
                    "description": "[string] The ID of a Virtual Data Center.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "[string] Description for the Network Security Group.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the Network Security Group.\n"
                }
            },
            "requiredInputs": [
                "datacenterId",
                "description"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Nsg resources.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n",
                        "willReplaceOnChanges": true
                    },
                    "description": {
                        "type": "string",
                        "description": "[string] Description for the Network Security Group.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the resource. This field should be used only if you are also using a file configuration and should not be configured otherwise.",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Network Security Group.\n"
                    },
                    "ruleIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of Firewall Rules that are part of the Network Security Group\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/bucket:Bucket": {
            "description": "Manages [IONOS Object Storage Buckets](https://docs.ionos.com/cloud/storage-and-backup/ionos-object-storage) on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {\n    name: \"example\",\n    region: \"eu-central-3\",\n    objectLockEnabled: true,\n    forceDestroy: true,\n    tags: {\n        key1: \"value1\",\n        key2: \"value2\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\",\n    name=\"example\",\n    region=\"eu-central-3\",\n    object_lock_enabled=True,\n    force_destroy=True,\n    tags={\n        \"key1\": \"value1\",\n        \"key2\": \"value2\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n        Region = \"eu-central-3\",\n        ObjectLockEnabled = true,\n        ForceDestroy = true,\n        Tags = \n        {\n            { \"key1\", \"value1\" },\n            { \"key2\", \"value2\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName:              pulumi.String(\"example\"),\n\t\t\tRegion:            pulumi.String(\"eu-central-3\"),\n\t\t\tObjectLockEnabled: pulumi.Bool(true),\n\t\t\tForceDestroy:      pulumi.Bool(true),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .region(\"eu-central-3\")\n            .objectLockEnabled(true)\n            .forceDestroy(true)\n            .tags(Map.ofEntries(\n                Map.entry(\"key1\", \"value1\"),\n                Map.entry(\"key2\", \"value2\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n      region: eu-central-3\n      objectLockEnabled: true\n      forceDestroy: true\n      tags:\n        key1: value1\n        key2: value2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA bucket can be imported using the `bucket name` and the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e:\n\n```sh\n$ pulumi import ionoscloud:objectstorage/bucket:Bucket example region:bucket_name\n```\n\nThe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e can be omitted, in which case the bucket will be imported from the default location: `eu-central-3`.\n\n```sh\n$ pulumi import ionoscloud:objectstorage/bucket:Bucket example bucket_name\n```\n\n",
            "properties": {
                "forceDestroy": {
                    "type": "boolean",
                    "description": "[bool] Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.By setting\u003cspan pulumi-lang-nodejs=\" forceDestroy \" pulumi-lang-dotnet=\" ForceDestroy \" pulumi-lang-go=\" forceDestroy \" pulumi-lang-python=\" force_destroy \" pulumi-lang-yaml=\" forceDestroy \" pulumi-lang-java=\" forceDestroy \"\u003e forceDestroy \u003c/span\u003eto true, you instruct Terraform to delete the bucket and all its contents during the terraform destroy process. This is particularly useful when dealing with buckets that contain objects, as it allows for automatic cleanup without requiring the manual deletion of objects beforehand. If\u003cspan pulumi-lang-nodejs=\" forceDestroy \" pulumi-lang-dotnet=\" ForceDestroy \" pulumi-lang-go=\" forceDestroy \" pulumi-lang-python=\" force_destroy \" pulumi-lang-yaml=\" forceDestroy \" pulumi-lang-java=\" forceDestroy \"\u003e forceDestroy \u003c/span\u003eis not set or is set to false, Terraform will refuse to delete a bucket that still contains objects. You must manually empty the bucket before Terraform can remove it.There is a significant risk of accidental data loss when using this attribute, as it irreversibly deletes all contents of the bucket. It's crucial to ensure that the bucket does not contain critical data before using force_destroy.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The bucket name. [ 3 .. 63 ] characters\n"
                },
                "objectLockEnabled": {
                    "type": "boolean",
                    "description": "[bool] The object lock configuration status of the bucket. Must be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "[string] Specifies the Region where the bucket will be created. Available regions are: `eu-central-3`, `eu-central-4`, `us-central-1`. Can be used only if the region is the same as the global region (set using `IONOS_S3_REGION` env var or \u003cspan pulumi-lang-nodejs=\"`s3Region`\" pulumi-lang-dotnet=\"`S3Region`\" pulumi-lang-go=\"`s3Region`\" pulumi-lang-python=\"`s3_region`\" pulumi-lang-yaml=\"`s3Region`\" pulumi-lang-java=\"`s3Region`\"\u003e`s3Region`\u003c/span\u003e provider attribute) or if the global region is unset. For using multiple different regions, please check the `Working with multiple regions/locations` section presented here.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A mapping of tags to assign to the bucket.\n"
                },
                "timeouts": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketTimeouts:BucketTimeouts",
                    "description": "Timeouts for this resource.\n"
                }
            },
            "required": [
                "forceDestroy",
                "name",
                "objectLockEnabled",
                "region"
            ],
            "inputProperties": {
                "forceDestroy": {
                    "type": "boolean",
                    "description": "[bool] Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.By setting\u003cspan pulumi-lang-nodejs=\" forceDestroy \" pulumi-lang-dotnet=\" ForceDestroy \" pulumi-lang-go=\" forceDestroy \" pulumi-lang-python=\" force_destroy \" pulumi-lang-yaml=\" forceDestroy \" pulumi-lang-java=\" forceDestroy \"\u003e forceDestroy \u003c/span\u003eto true, you instruct Terraform to delete the bucket and all its contents during the terraform destroy process. This is particularly useful when dealing with buckets that contain objects, as it allows for automatic cleanup without requiring the manual deletion of objects beforehand. If\u003cspan pulumi-lang-nodejs=\" forceDestroy \" pulumi-lang-dotnet=\" ForceDestroy \" pulumi-lang-go=\" forceDestroy \" pulumi-lang-python=\" force_destroy \" pulumi-lang-yaml=\" forceDestroy \" pulumi-lang-java=\" forceDestroy \"\u003e forceDestroy \u003c/span\u003eis not set or is set to false, Terraform will refuse to delete a bucket that still contains objects. You must manually empty the bucket before Terraform can remove it.There is a significant risk of accidental data loss when using this attribute, as it irreversibly deletes all contents of the bucket. It's crucial to ensure that the bucket does not contain critical data before using force_destroy.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The bucket name. [ 3 .. 63 ] characters\n"
                },
                "objectLockEnabled": {
                    "type": "boolean",
                    "description": "[bool] The object lock configuration status of the bucket. Must be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "[string] Specifies the Region where the bucket will be created. Available regions are: `eu-central-3`, `eu-central-4`, `us-central-1`. Can be used only if the region is the same as the global region (set using `IONOS_S3_REGION` env var or \u003cspan pulumi-lang-nodejs=\"`s3Region`\" pulumi-lang-dotnet=\"`S3Region`\" pulumi-lang-go=\"`s3Region`\" pulumi-lang-python=\"`s3_region`\" pulumi-lang-yaml=\"`s3Region`\" pulumi-lang-java=\"`s3Region`\"\u003e`s3Region`\u003c/span\u003e provider attribute) or if the global region is unset. For using multiple different regions, please check the `Working with multiple regions/locations` section presented here.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A mapping of tags to assign to the bucket.\n"
                },
                "timeouts": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketTimeouts:BucketTimeouts",
                    "description": "Timeouts for this resource.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Bucket resources.\n",
                "properties": {
                    "forceDestroy": {
                        "type": "boolean",
                        "description": "[bool] Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.By setting\u003cspan pulumi-lang-nodejs=\" forceDestroy \" pulumi-lang-dotnet=\" ForceDestroy \" pulumi-lang-go=\" forceDestroy \" pulumi-lang-python=\" force_destroy \" pulumi-lang-yaml=\" forceDestroy \" pulumi-lang-java=\" forceDestroy \"\u003e forceDestroy \u003c/span\u003eto true, you instruct Terraform to delete the bucket and all its contents during the terraform destroy process. This is particularly useful when dealing with buckets that contain objects, as it allows for automatic cleanup without requiring the manual deletion of objects beforehand. If\u003cspan pulumi-lang-nodejs=\" forceDestroy \" pulumi-lang-dotnet=\" ForceDestroy \" pulumi-lang-go=\" forceDestroy \" pulumi-lang-python=\" force_destroy \" pulumi-lang-yaml=\" forceDestroy \" pulumi-lang-java=\" forceDestroy \"\u003e forceDestroy \u003c/span\u003eis not set or is set to false, Terraform will refuse to delete a bucket that still contains objects. You must manually empty the bucket before Terraform can remove it.There is a significant risk of accidental data loss when using this attribute, as it irreversibly deletes all contents of the bucket. It's crucial to ensure that the bucket does not contain critical data before using force_destroy.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The bucket name. [ 3 .. 63 ] characters\n"
                    },
                    "objectLockEnabled": {
                        "type": "boolean",
                        "description": "[bool] The object lock configuration status of the bucket. Must be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "[string] Specifies the Region where the bucket will be created. Available regions are: `eu-central-3`, `eu-central-4`, `us-central-1`. Can be used only if the region is the same as the global region (set using `IONOS_S3_REGION` env var or \u003cspan pulumi-lang-nodejs=\"`s3Region`\" pulumi-lang-dotnet=\"`S3Region`\" pulumi-lang-go=\"`s3Region`\" pulumi-lang-python=\"`s3_region`\" pulumi-lang-yaml=\"`s3Region`\" pulumi-lang-java=\"`s3Region`\"\u003e`s3Region`\u003c/span\u003e provider attribute) or if the global region is unset. For using multiple different regions, please check the `Working with multiple regions/locations` section presented here.\n"
                    },
                    "tags": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A mapping of tags to assign to the bucket.\n"
                    },
                    "timeouts": {
                        "$ref": "#/types/ionoscloud:objectstorage/BucketTimeouts:BucketTimeouts",
                        "description": "Timeouts for this resource.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/bucketLifecycleConfiguration:BucketLifecycleConfiguration": {
            "description": "Manages Lifecycle Configuration for Buckets on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {name: \"example\"});\nconst exampleBucketLifecycleConfiguration = new ionoscloud.objectstorage.BucketLifecycleConfiguration(\"example\", {\n    bucket: example.name,\n    rules: [\n        {\n            id: \"1\",\n            status: \"Enabled\",\n            filter: [{\n                prefix: \"/logs\",\n            }],\n            expiration: [{\n                days: 90,\n            }],\n        },\n        {\n            id: \"2\",\n            status: \"Enabled\",\n            filter: [{\n                prefix: \"/logs\",\n            }],\n            noncurrentVersionExpiration: [{\n                noncurrentDays: 90,\n            }],\n        },\n        {\n            id: \"3\",\n            status: \"Enabled\",\n            filter: [{\n                prefix: \"/logs\",\n            }],\n            abortIncompleteMultipartUpload: [{\n                daysAfterInitiation: 90,\n            }],\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\", name=\"example\")\nexample_bucket_lifecycle_configuration = ionoscloud.objectstorage.BucketLifecycleConfiguration(\"example\",\n    bucket=example.name,\n    rules=[\n        {\n            \"id\": \"1\",\n            \"status\": \"Enabled\",\n            \"filter\": [{\n                \"prefix\": \"/logs\",\n            }],\n            \"expiration\": [{\n                \"days\": 90,\n            }],\n        },\n        {\n            \"id\": \"2\",\n            \"status\": \"Enabled\",\n            \"filter\": [{\n                \"prefix\": \"/logs\",\n            }],\n            \"noncurrent_version_expiration\": [{\n                \"noncurrentDays\": 90,\n            }],\n        },\n        {\n            \"id\": \"3\",\n            \"status\": \"Enabled\",\n            \"filter\": [{\n                \"prefix\": \"/logs\",\n            }],\n            \"abort_incomplete_multipart_upload\": [{\n                \"daysAfterInitiation\": 90,\n            }],\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleBucketLifecycleConfiguration = new Ionoscloud.Objectstorage.BucketLifecycleConfiguration(\"example\", new()\n    {\n        Bucket = example.Name,\n        Rules = new[]\n        {\n            new Ionoscloud.Objectstorage.Inputs.BucketLifecycleConfigurationRuleArgs\n            {\n                Id = \"1\",\n                Status = \"Enabled\",\n                Filter = new[]\n                {\n                    \n                    {\n                        { \"prefix\", \"/logs\" },\n                    },\n                },\n                Expiration = new[]\n                {\n                    \n                    {\n                        { \"days\", 90 },\n                    },\n                },\n            },\n            new Ionoscloud.Objectstorage.Inputs.BucketLifecycleConfigurationRuleArgs\n            {\n                Id = \"2\",\n                Status = \"Enabled\",\n                Filter = new[]\n                {\n                    \n                    {\n                        { \"prefix\", \"/logs\" },\n                    },\n                },\n                NoncurrentVersionExpiration = new[]\n                {\n                    \n                    {\n                        { \"noncurrentDays\", 90 },\n                    },\n                },\n            },\n            new Ionoscloud.Objectstorage.Inputs.BucketLifecycleConfigurationRuleArgs\n            {\n                Id = \"3\",\n                Status = \"Enabled\",\n                Filter = new[]\n                {\n                    \n                    {\n                        { \"prefix\", \"/logs\" },\n                    },\n                },\n                AbortIncompleteMultipartUpload = new[]\n                {\n                    \n                    {\n                        { \"daysAfterInitiation\", 90 },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewBucketLifecycleConfiguration(ctx, \"example\", \u0026objectstorage.BucketLifecycleConfigurationArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRules: objectstorage.BucketLifecycleConfigurationRuleArray{\n\t\t\t\t\u0026objectstorage.BucketLifecycleConfigurationRuleArgs{\n\t\t\t\t\tId:     pulumi.String(\"1\"),\n\t\t\t\t\tStatus: pulumi.String(\"Enabled\"),\n\t\t\t\t\tFilter: objectstorage.BucketLifecycleConfigurationRuleFilterArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"prefix\": \"/logs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExpiration: objectstorage.BucketLifecycleConfigurationRuleExpirationArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"days\": 90,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026objectstorage.BucketLifecycleConfigurationRuleArgs{\n\t\t\t\t\tId:     pulumi.String(\"2\"),\n\t\t\t\t\tStatus: pulumi.String(\"Enabled\"),\n\t\t\t\t\tFilter: objectstorage.BucketLifecycleConfigurationRuleFilterArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"prefix\": \"/logs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNoncurrentVersionExpiration: objectstorage.BucketLifecycleConfigurationRuleNoncurrentVersionExpirationArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"noncurrentDays\": 90,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026objectstorage.BucketLifecycleConfigurationRuleArgs{\n\t\t\t\t\tId:     pulumi.String(\"3\"),\n\t\t\t\t\tStatus: pulumi.String(\"Enabled\"),\n\t\t\t\t\tFilter: objectstorage.BucketLifecycleConfigurationRuleFilterArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"prefix\": \"/logs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAbortIncompleteMultipartUpload: objectstorage.BucketLifecycleConfigurationRuleAbortIncompleteMultipartUploadArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"daysAfterInitiation\": 90,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketLifecycleConfiguration;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketLifecycleConfigurationArgs;\nimport com.pulumi.ionoscloud.objectstorage.inputs.BucketLifecycleConfigurationRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleBucketLifecycleConfiguration = new BucketLifecycleConfiguration(\"exampleBucketLifecycleConfiguration\", BucketLifecycleConfigurationArgs.builder()\n            .bucket(example.name())\n            .rules(            \n                BucketLifecycleConfigurationRuleArgs.builder()\n                    .id(\"1\")\n                    .status(\"Enabled\")\n                    .filter(BucketLifecycleConfigurationRuleFilterArgs.builder()\n                        .prefix(\"/logs\")\n                        .build())\n                    .expiration(BucketLifecycleConfigurationRuleExpirationArgs.builder()\n                        .days(90)\n                        .build())\n                    .build(),\n                BucketLifecycleConfigurationRuleArgs.builder()\n                    .id(\"2\")\n                    .status(\"Enabled\")\n                    .filter(BucketLifecycleConfigurationRuleFilterArgs.builder()\n                        .prefix(\"/logs\")\n                        .build())\n                    .noncurrentVersionExpiration(BucketLifecycleConfigurationRuleNoncurrentVersionExpirationArgs.builder()\n                        .noncurrentDays(90)\n                        .build())\n                    .build(),\n                BucketLifecycleConfigurationRuleArgs.builder()\n                    .id(\"3\")\n                    .status(\"Enabled\")\n                    .filter(BucketLifecycleConfigurationRuleFilterArgs.builder()\n                        .prefix(\"/logs\")\n                        .build())\n                    .abortIncompleteMultipartUpload(BucketLifecycleConfigurationRuleAbortIncompleteMultipartUploadArgs.builder()\n                        .daysAfterInitiation(90)\n                        .build())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n  exampleBucketLifecycleConfiguration:\n    type: ionoscloud:objectstorage:BucketLifecycleConfiguration\n    name: example\n    properties:\n      bucket: ${example.name}\n      rules:\n        - id: '1'\n          status: Enabled\n          filter:\n            - prefix: /logs\n          expiration:\n            - days: 90\n        - id: '2'\n          status: Enabled\n          filter:\n            - prefix: /logs\n          noncurrentVersionExpiration:\n            - noncurrentDays: 90\n        - id: '3'\n          status: Enabled\n          filter:\n            - prefix: /logs\n          abortIncompleteMultipartUpload:\n            - daysAfterInitiation: 90\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIONOS Object Storage Bucket lifecycle configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e name.\n\n```sh\n$ pulumi import ionoscloud:objectstorage/bucketLifecycleConfiguration:BucketLifecycleConfiguration example example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/BucketLifecycleConfigurationRule:BucketLifecycleConfigurationRule"
                    },
                    "description": "A list of lifecycle rules for objects in the bucket."
                }
            },
            "required": [
                "bucket"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/BucketLifecycleConfigurationRule:BucketLifecycleConfigurationRule"
                    },
                    "description": "A list of lifecycle rules for objects in the bucket."
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BucketLifecycleConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:objectstorage/BucketLifecycleConfigurationRule:BucketLifecycleConfigurationRule"
                        },
                        "description": "A list of lifecycle rules for objects in the bucket."
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/bucketObject:BucketObject": {
            "description": "Manages **IONOS Object Storage Objects** on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Import\n\nResource Object can be imported using the `bucket name` and `object key`\n\n```sh\n$ pulumi import ionoscloud:objectstorage/bucketObject:BucketObject example example/object\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored. Must be between 3 and 63 characters.\n"
                },
                "cacheControl": {
                    "type": "string",
                    "description": "[string] Specifies caching behavior along the request/reply chain.\n"
                },
                "content": {
                    "type": "string",
                    "description": "[string] Inline content of the object.\n"
                },
                "contentDisposition": {
                    "type": "string",
                    "description": "[string] Specifies presentational information for the object.\n"
                },
                "contentEncoding": {
                    "type": "string",
                    "description": "[string] Specifies what content encodings have been applied to the object.\n"
                },
                "contentLanguage": {
                    "type": "string",
                    "description": "[string] The natural language or languages of the intended audience for the object.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "[string] A standard MIME type describing the format of the contents.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "[string] An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.\n"
                },
                "expires": {
                    "type": "string",
                    "description": "[string] The date and time at which the object is no longer cacheable.\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "[bool] If true, the object will be destroyed if versioning is enabled then all versions will be destroyed. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "[string] The key of the object. Must be at least 1 character long.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A map of metadata to store with the object in IONOS Object Storage. Metadata keys must be lowercase alphanumeric characters.\n"
                },
                "mfa": {
                    "type": "string",
                    "description": "[string]The concatenation of the authentication device's serial number, a space, and the value displayed on your authentication device.\n"
                },
                "objectLockLegalHold": {
                    "type": "string",
                    "description": "[string] Indicates whether a legal hold is in effect for the object. Valid values are `ON` and `OFF`.\n"
                },
                "objectLockMode": {
                    "type": "string",
                    "description": "[string] The object lock mode that you want to apply to the object. Valid values are `GOVERNANCE` and `COMPLIANCE`.\n"
                },
                "objectLockRetainUntilDate": {
                    "type": "string",
                    "description": "[string] The date and time when the object lock retention expires.Must be in RFC3999 format\n"
                },
                "requestPayer": {
                    "type": "string",
                    "description": "[string] Confirms that the requester knows that they will be charged for the request.\n"
                },
                "serverSideEncryption": {
                    "type": "string",
                    "description": "[string] The server-side encryption algorithm used when storing this object in IONOS Object Storage. Valid value is AES256.\n"
                },
                "serverSideEncryptionContext": {
                    "type": "string",
                    "description": "[string] Specifies the IONOS Object Storage Encryption Context for object encryption.\n",
                    "secret": true
                },
                "serverSideEncryptionCustomerAlgorithm": {
                    "type": "string",
                    "description": "[string] Specifies the algorithm to use for encrypting the object. Valid value is AES256.\n"
                },
                "serverSideEncryptionCustomerKey": {
                    "type": "string",
                    "description": "[string] Specifies the 256-bit, base64-encoded encryption key to use to encrypt and decrypt your data.\n"
                },
                "serverSideEncryptionCustomerKeyMd5": {
                    "type": "string",
                    "description": "[string] Specifies the 128-bit MD5 digest of the encryption key.\n"
                },
                "source": {
                    "type": "string",
                    "description": "[string] The path to the file to upload.\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "[string] The storage class of the object. Valid value is STANDARD. Default is STANDARD.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] The tag-set for the object.\n"
                },
                "versionId": {
                    "type": "string",
                    "description": "[string] The version of the object.\n"
                },
                "websiteRedirect": {
                    "type": "string",
                    "description": "[string] Redirects requests for this object to another object in the same bucket or to an external URL.\n"
                }
            },
            "required": [
                "bucket",
                "contentType",
                "etag",
                "forceDestroy",
                "key",
                "serverSideEncryption",
                "storageClass",
                "versionId"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored. Must be between 3 and 63 characters.\n"
                },
                "cacheControl": {
                    "type": "string",
                    "description": "[string] Specifies caching behavior along the request/reply chain.\n"
                },
                "content": {
                    "type": "string",
                    "description": "[string] Inline content of the object.\n"
                },
                "contentDisposition": {
                    "type": "string",
                    "description": "[string] Specifies presentational information for the object.\n"
                },
                "contentEncoding": {
                    "type": "string",
                    "description": "[string] Specifies what content encodings have been applied to the object.\n"
                },
                "contentLanguage": {
                    "type": "string",
                    "description": "[string] The natural language or languages of the intended audience for the object.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "[string] A standard MIME type describing the format of the contents.\n"
                },
                "expires": {
                    "type": "string",
                    "description": "[string] The date and time at which the object is no longer cacheable.\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "[bool] If true, the object will be destroyed if versioning is enabled then all versions will be destroyed. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "[string] The key of the object. Must be at least 1 character long.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A map of metadata to store with the object in IONOS Object Storage. Metadata keys must be lowercase alphanumeric characters.\n"
                },
                "mfa": {
                    "type": "string",
                    "description": "[string]The concatenation of the authentication device's serial number, a space, and the value displayed on your authentication device.\n"
                },
                "objectLockLegalHold": {
                    "type": "string",
                    "description": "[string] Indicates whether a legal hold is in effect for the object. Valid values are `ON` and `OFF`.\n"
                },
                "objectLockMode": {
                    "type": "string",
                    "description": "[string] The object lock mode that you want to apply to the object. Valid values are `GOVERNANCE` and `COMPLIANCE`.\n"
                },
                "objectLockRetainUntilDate": {
                    "type": "string",
                    "description": "[string] The date and time when the object lock retention expires.Must be in RFC3999 format\n"
                },
                "requestPayer": {
                    "type": "string",
                    "description": "[string] Confirms that the requester knows that they will be charged for the request.\n"
                },
                "serverSideEncryption": {
                    "type": "string",
                    "description": "[string] The server-side encryption algorithm used when storing this object in IONOS Object Storage. Valid value is AES256.\n"
                },
                "serverSideEncryptionContext": {
                    "type": "string",
                    "description": "[string] Specifies the IONOS Object Storage Encryption Context for object encryption.\n",
                    "secret": true
                },
                "serverSideEncryptionCustomerAlgorithm": {
                    "type": "string",
                    "description": "[string] Specifies the algorithm to use for encrypting the object. Valid value is AES256.\n"
                },
                "serverSideEncryptionCustomerKey": {
                    "type": "string",
                    "description": "[string] Specifies the 256-bit, base64-encoded encryption key to use to encrypt and decrypt your data.\n"
                },
                "serverSideEncryptionCustomerKeyMd5": {
                    "type": "string",
                    "description": "[string] Specifies the 128-bit MD5 digest of the encryption key.\n"
                },
                "source": {
                    "type": "string",
                    "description": "[string] The path to the file to upload.\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "[string] The storage class of the object. Valid value is STANDARD. Default is STANDARD.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] The tag-set for the object.\n"
                },
                "websiteRedirect": {
                    "type": "string",
                    "description": "[string] Redirects requests for this object to another object in the same bucket or to an external URL.\n"
                }
            },
            "requiredInputs": [
                "bucket",
                "key"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BucketObject resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored. Must be between 3 and 63 characters.\n"
                    },
                    "cacheControl": {
                        "type": "string",
                        "description": "[string] Specifies caching behavior along the request/reply chain.\n"
                    },
                    "content": {
                        "type": "string",
                        "description": "[string] Inline content of the object.\n"
                    },
                    "contentDisposition": {
                        "type": "string",
                        "description": "[string] Specifies presentational information for the object.\n"
                    },
                    "contentEncoding": {
                        "type": "string",
                        "description": "[string] Specifies what content encodings have been applied to the object.\n"
                    },
                    "contentLanguage": {
                        "type": "string",
                        "description": "[string] The natural language or languages of the intended audience for the object.\n"
                    },
                    "contentType": {
                        "type": "string",
                        "description": "[string] A standard MIME type describing the format of the contents.\n"
                    },
                    "etag": {
                        "type": "string",
                        "description": "[string] An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.\n"
                    },
                    "expires": {
                        "type": "string",
                        "description": "[string] The date and time at which the object is no longer cacheable.\n"
                    },
                    "forceDestroy": {
                        "type": "boolean",
                        "description": "[bool] If true, the object will be destroyed if versioning is enabled then all versions will be destroyed. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "[string] The key of the object. Must be at least 1 character long.\n"
                    },
                    "metadata": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "[map] A map of metadata to store with the object in IONOS Object Storage. Metadata keys must be lowercase alphanumeric characters.\n"
                    },
                    "mfa": {
                        "type": "string",
                        "description": "[string]The concatenation of the authentication device's serial number, a space, and the value displayed on your authentication device.\n"
                    },
                    "objectLockLegalHold": {
                        "type": "string",
                        "description": "[string] Indicates whether a legal hold is in effect for the object. Valid values are `ON` and `OFF`.\n"
                    },
                    "objectLockMode": {
                        "type": "string",
                        "description": "[string] The object lock mode that you want to apply to the object. Valid values are `GOVERNANCE` and `COMPLIANCE`.\n"
                    },
                    "objectLockRetainUntilDate": {
                        "type": "string",
                        "description": "[string] The date and time when the object lock retention expires.Must be in RFC3999 format\n"
                    },
                    "requestPayer": {
                        "type": "string",
                        "description": "[string] Confirms that the requester knows that they will be charged for the request.\n"
                    },
                    "serverSideEncryption": {
                        "type": "string",
                        "description": "[string] The server-side encryption algorithm used when storing this object in IONOS Object Storage. Valid value is AES256.\n"
                    },
                    "serverSideEncryptionContext": {
                        "type": "string",
                        "description": "[string] Specifies the IONOS Object Storage Encryption Context for object encryption.\n",
                        "secret": true
                    },
                    "serverSideEncryptionCustomerAlgorithm": {
                        "type": "string",
                        "description": "[string] Specifies the algorithm to use for encrypting the object. Valid value is AES256.\n"
                    },
                    "serverSideEncryptionCustomerKey": {
                        "type": "string",
                        "description": "[string] Specifies the 256-bit, base64-encoded encryption key to use to encrypt and decrypt your data.\n"
                    },
                    "serverSideEncryptionCustomerKeyMd5": {
                        "type": "string",
                        "description": "[string] Specifies the 128-bit MD5 digest of the encryption key.\n"
                    },
                    "source": {
                        "type": "string",
                        "description": "[string] The path to the file to upload.\n"
                    },
                    "storageClass": {
                        "type": "string",
                        "description": "[string] The storage class of the object. Valid value is STANDARD. Default is STANDARD.\n"
                    },
                    "tags": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "[map] The tag-set for the object.\n"
                    },
                    "versionId": {
                        "type": "string",
                        "description": "[string] The version of the object.\n"
                    },
                    "websiteRedirect": {
                        "type": "string",
                        "description": "[string] Redirects requests for this object to another object in the same bucket or to an external URL.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/bucketPolicy:BucketPolicy": {
            "description": "Manages **Buckets policies** on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {name: \"example\"});\nconst exampleBucketPolicy = new ionoscloud.objectstorage.BucketPolicy(\"example\", {\n    bucket: example.name,\n    policy: JSON.stringify({\n        Version: \"2012-10-17\",\n        Statement: [{\n            Sid: \"Delegate certain actions to another user\",\n            Action: [\n                \"s3:ListBucket\",\n                \"s3:PutObject\",\n                \"s3:GetObject\",\n            ],\n            Effect: \"Allow\",\n            Resource: [\n                \"arn:aws:s3:::example\",\n                \"arn:aws:s3:::example/*\",\n            ],\n            Condition: {\n                IpAddress: [\"123.123.123.123/32\"],\n            },\n            Principal: [\"arn:aws:iam:::user/31000000:9acd8251-2857-410e-b1fd-ca86462bdcec\"],\n        }],\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\", name=\"example\")\nexample_bucket_policy = ionoscloud.objectstorage.BucketPolicy(\"example\",\n    bucket=example.name,\n    policy=json.dumps({\n        \"Version\": \"2012-10-17\",\n        \"Statement\": [{\n            \"Sid\": \"Delegate certain actions to another user\",\n            \"Action\": [\n                \"s3:ListBucket\",\n                \"s3:PutObject\",\n                \"s3:GetObject\",\n            ],\n            \"Effect\": \"Allow\",\n            \"Resource\": [\n                \"arn:aws:s3:::example\",\n                \"arn:aws:s3:::example/*\",\n            ],\n            \"Condition\": {\n                \"IpAddress\": [\"123.123.123.123/32\"],\n            },\n            \"Principal\": [\"arn:aws:iam:::user/31000000:9acd8251-2857-410e-b1fd-ca86462bdcec\"],\n        }],\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleBucketPolicy = new Ionoscloud.Objectstorage.BucketPolicy(\"example\", new()\n    {\n        Bucket = example.Name,\n        Policy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"Version\"] = \"2012-10-17\",\n            [\"Statement\"] = new[]\n            {\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"Sid\"] = \"Delegate certain actions to another user\",\n                    [\"Action\"] = new[]\n                    {\n                        \"s3:ListBucket\",\n                        \"s3:PutObject\",\n                        \"s3:GetObject\",\n                    },\n                    [\"Effect\"] = \"Allow\",\n                    [\"Resource\"] = new[]\n                    {\n                        \"arn:aws:s3:::example\",\n                        \"arn:aws:s3:::example/*\",\n                    },\n                    [\"Condition\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"IpAddress\"] = new[]\n                        {\n                            \"123.123.123.123/32\",\n                        },\n                    },\n                    [\"Principal\"] = new[]\n                    {\n                        \"arn:aws:iam:::user/31000000:9acd8251-2857-410e-b1fd-ca86462bdcec\",\n                    },\n                },\n            },\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Sid\": \"Delegate certain actions to another user\",\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"s3:ListBucket\",\n\t\t\t\t\t\t\"s3:PutObject\",\n\t\t\t\t\t\t\"s3:GetObject\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\"arn:aws:s3:::example\",\n\t\t\t\t\t\t\"arn:aws:s3:::example/*\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Condition\": map[string]interface{}{\n\t\t\t\t\t\t\"IpAddress\": []string{\n\t\t\t\t\t\t\t\"123.123.123.123/32\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"Principal\": []string{\n\t\t\t\t\t\t\"arn:aws:iam:::user/31000000:9acd8251-2857-410e-b1fd-ca86462bdcec\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = objectstorage.NewBucketPolicy(ctx, \"example\", \u0026objectstorage.BucketPolicyArgs{\n\t\t\tBucket: example.Name,\n\t\t\tPolicy: pulumi.String(pulumi.String(json0)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketPolicy;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleBucketPolicy = new BucketPolicy(\"exampleBucketPolicy\", BucketPolicyArgs.builder()\n            .bucket(example.name())\n            .policy(serializeJson(\n                jsonObject(\n                    jsonProperty(\"Version\", \"2012-10-17\"),\n                    jsonProperty(\"Statement\", jsonArray(jsonObject(\n                        jsonProperty(\"Sid\", \"Delegate certain actions to another user\"),\n                        jsonProperty(\"Action\", jsonArray(\n                            \"s3:ListBucket\", \n                            \"s3:PutObject\", \n                            \"s3:GetObject\"\n                        )),\n                        jsonProperty(\"Effect\", \"Allow\"),\n                        jsonProperty(\"Resource\", jsonArray(\n                            \"arn:aws:s3:::example\", \n                            \"arn:aws:s3:::example/*\"\n                        )),\n                        jsonProperty(\"Condition\", jsonObject(\n                            jsonProperty(\"IpAddress\", jsonArray(\"123.123.123.123/32\"))\n                        )),\n                        jsonProperty(\"Principal\", jsonArray(\"arn:aws:iam:::user/31000000:9acd8251-2857-410e-b1fd-ca86462bdcec\"))\n                    )))\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n  exampleBucketPolicy:\n    type: ionoscloud:objectstorage:BucketPolicy\n    name: example\n    properties:\n      bucket: ${example.name}\n      policy:\n        fn::toJSON:\n          Version: 2012-10-17\n          Statement:\n            - Sid: Delegate certain actions to another user\n              Action:\n                - s3:ListBucket\n                - s3:PutObject\n                - s3:GetObject\n              Effect: Allow\n              Resource:\n                - arn:aws:s3:::example\n                - arn:aws:s3:::example/*\n              Condition:\n                IpAddress:\n                  - 123.123.123.123/32\n              Principal:\n                - arn:aws:iam:::user/31000000:9acd8251-2857-410e-b1fd-ca86462bdcec\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n⚠️ **Note:** For more information about the bucket policy or the policy format, please see the [IonosCloud Object Storage documentation](https://docs.ionos.com/cloud/storage-and-backup/ionos-object-storage/settings/bucket-policy#policy-format).\n\n## Import\n\nResource Policy can be imported using the `bucket name`\n\n```sh\n$ pulumi import ionoscloud:objectstorage/bucketPolicy:BucketPolicy example example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "policy": {
                    "type": "string",
                    "description": "[string] The policy document. This is a JSON formatted string.\n"
                }
            },
            "required": [
                "bucket",
                "policy"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "policy": {
                    "type": "string",
                    "description": "[string] The policy document. This is a JSON formatted string.\n"
                }
            },
            "requiredInputs": [
                "bucket",
                "policy"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BucketPolicy resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "policy": {
                        "type": "string",
                        "description": "[string] The policy document. This is a JSON formatted string.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/bucketServerSideEncryptionConfiguration:BucketServerSideEncryptionConfiguration": {
            "description": "Manages Server Side Encryption Configuration for Buckets on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {name: \"example\"});\nconst exampleBucketServerSideEncryptionConfiguration = new ionoscloud.objectstorage.BucketServerSideEncryptionConfiguration(\"example\", {\n    bucket: example.name,\n    rules: [{\n        applyServerSideEncryptionByDefault: [{\n            sseAlgorithm: \"AES256\",\n        }],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\", name=\"example\")\nexample_bucket_server_side_encryption_configuration = ionoscloud.objectstorage.BucketServerSideEncryptionConfiguration(\"example\",\n    bucket=example.name,\n    rules=[{\n        \"apply_server_side_encryption_by_default\": [{\n            \"sseAlgorithm\": \"AES256\",\n        }],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleBucketServerSideEncryptionConfiguration = new Ionoscloud.Objectstorage.BucketServerSideEncryptionConfiguration(\"example\", new()\n    {\n        Bucket = example.Name,\n        Rules = new[]\n        {\n            new Ionoscloud.Objectstorage.Inputs.BucketServerSideEncryptionConfigurationRuleArgs\n            {\n                ApplyServerSideEncryptionByDefault = new[]\n                {\n                    \n                    {\n                        { \"sseAlgorithm\", \"AES256\" },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewBucketServerSideEncryptionConfiguration(ctx, \"example\", \u0026objectstorage.BucketServerSideEncryptionConfigurationArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRules: objectstorage.BucketServerSideEncryptionConfigurationRuleArray{\n\t\t\t\t\u0026objectstorage.BucketServerSideEncryptionConfigurationRuleArgs{\n\t\t\t\t\tApplyServerSideEncryptionByDefault: objectstorage.BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"sseAlgorithm\": \"AES256\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketServerSideEncryptionConfiguration;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketServerSideEncryptionConfigurationArgs;\nimport com.pulumi.ionoscloud.objectstorage.inputs.BucketServerSideEncryptionConfigurationRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleBucketServerSideEncryptionConfiguration = new BucketServerSideEncryptionConfiguration(\"exampleBucketServerSideEncryptionConfiguration\", BucketServerSideEncryptionConfigurationArgs.builder()\n            .bucket(example.name())\n            .rules(BucketServerSideEncryptionConfigurationRuleArgs.builder()\n                .applyServerSideEncryptionByDefault(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs.builder()\n                    .sseAlgorithm(\"AES256\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n  exampleBucketServerSideEncryptionConfiguration:\n    type: ionoscloud:objectstorage:BucketServerSideEncryptionConfiguration\n    name: example\n    properties:\n      bucket: ${example.name}\n      rules:\n        - applyServerSideEncryptionByDefault:\n            - sseAlgorithm: AES256\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIONOS Object Storage Bucket server side encryption configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e name.\n\n```sh\n$ pulumi import ionoscloud:objectstorage/bucketServerSideEncryptionConfiguration:BucketServerSideEncryptionConfiguration example example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/BucketServerSideEncryptionConfigurationRule:BucketServerSideEncryptionConfigurationRule"
                    },
                    "description": "[block] A block of rule as defined below.\n"
                }
            },
            "required": [
                "bucket"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/BucketServerSideEncryptionConfigurationRule:BucketServerSideEncryptionConfigurationRule"
                    },
                    "description": "[block] A block of rule as defined below.\n"
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BucketServerSideEncryptionConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:objectstorage/BucketServerSideEncryptionConfigurationRule:BucketServerSideEncryptionConfigurationRule"
                        },
                        "description": "[block] A block of rule as defined below.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/bucketVersioning:BucketVersioning": {
            "description": "Manages **Buckets versioning** on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {name: \"example\"});\nconst exampleBucketVersioning = new ionoscloud.objectstorage.BucketVersioning(\"example\", {\n    bucket: example.name,\n    versioningConfiguration: [{\n        status: \"Enabled\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\", name=\"example\")\nexample_bucket_versioning = ionoscloud.objectstorage.BucketVersioning(\"example\",\n    bucket=example.name,\n    versioning_configuration=[{\n        \"status\": \"Enabled\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleBucketVersioning = new Ionoscloud.Objectstorage.BucketVersioning(\"example\", new()\n    {\n        Bucket = example.Name,\n        VersioningConfiguration = new[]\n        {\n            \n            {\n                { \"status\", \"Enabled\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewBucketVersioning(ctx, \"example\", \u0026objectstorage.BucketVersioningArgs{\n\t\t\tBucket: example.Name,\n\t\t\tVersioningConfiguration: objectstorage.BucketVersioningVersioningConfigurationArgs{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"status\": \"Enabled\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketVersioning;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketVersioningArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleBucketVersioning = new BucketVersioning(\"exampleBucketVersioning\", BucketVersioningArgs.builder()\n            .bucket(example.name())\n            .versioningConfiguration(BucketVersioningVersioningConfigurationArgs.builder()\n                .status(\"Enabled\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n  exampleBucketVersioning:\n    type: ionoscloud:objectstorage:BucketVersioning\n    name: example\n    properties:\n      bucket: ${example.name}\n      versioningConfiguration:\n        - status: Enabled\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIONOS Object Storage Bucket Versioning can be imported using the \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e name.\n\n```sh\n$ pulumi import ionoscloud:objectstorage/bucketVersioning:BucketVersioning example example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "versioningConfiguration": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketVersioningVersioningConfiguration:BucketVersioningVersioningConfiguration",
                    "description": "[block] A block of\u003cspan pulumi-lang-nodejs=\" versioningConfiguration \" pulumi-lang-dotnet=\" VersioningConfiguration \" pulumi-lang-go=\" versioningConfiguration \" pulumi-lang-python=\" versioning_configuration \" pulumi-lang-yaml=\" versioningConfiguration \" pulumi-lang-java=\" versioningConfiguration \"\u003e versioningConfiguration \u003c/span\u003eas defined below.\n"
                }
            },
            "required": [
                "bucket"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "versioningConfiguration": {
                    "$ref": "#/types/ionoscloud:objectstorage/BucketVersioningVersioningConfiguration:BucketVersioningVersioningConfiguration",
                    "description": "[block] A block of\u003cspan pulumi-lang-nodejs=\" versioningConfiguration \" pulumi-lang-dotnet=\" VersioningConfiguration \" pulumi-lang-go=\" versioningConfiguration \" pulumi-lang-python=\" versioning_configuration \" pulumi-lang-yaml=\" versioningConfiguration \" pulumi-lang-java=\" versioningConfiguration \"\u003e versioningConfiguration \u003c/span\u003eas defined below.\n"
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BucketVersioning resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "versioningConfiguration": {
                        "$ref": "#/types/ionoscloud:objectstorage/BucketVersioningVersioningConfiguration:BucketVersioningVersioningConfiguration",
                        "description": "[block] A block of\u003cspan pulumi-lang-nodejs=\" versioningConfiguration \" pulumi-lang-dotnet=\" VersioningConfiguration \" pulumi-lang-go=\" versioningConfiguration \" pulumi-lang-python=\" versioning_configuration \" pulumi-lang-yaml=\" versioningConfiguration \" pulumi-lang-java=\" versioningConfiguration \"\u003e versioningConfiguration \u003c/span\u003eas defined below.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/corsConfiguration:CorsConfiguration": {
            "description": "Manages Object Lock Configuration for Buckets on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {name: \"example\"});\nconst test = new ionoscloud.objectstorage.CorsConfiguration(\"test\", {\n    bucket: example.name,\n    corsRules: [{\n        allowedHeaders: [\"*\"],\n        allowedMethods: [\n            \"PUT\",\n            \"POST\",\n        ],\n        allowedOrigins: [\"https://s3-website-test.hashicorp.com\"],\n        exposeHeaders: [\"ETag\"],\n        maxAgeSeconds: 3000,\n        id: 1234,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\", name=\"example\")\ntest = ionoscloud.objectstorage.CorsConfiguration(\"test\",\n    bucket=example.name,\n    cors_rules=[{\n        \"allowed_headers\": [\"*\"],\n        \"allowed_methods\": [\n            \"PUT\",\n            \"POST\",\n        ],\n        \"allowed_origins\": [\"https://s3-website-test.hashicorp.com\"],\n        \"expose_headers\": [\"ETag\"],\n        \"max_age_seconds\": 3000,\n        \"id\": 1234,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var test = new Ionoscloud.Objectstorage.CorsConfiguration(\"test\", new()\n    {\n        Bucket = example.Name,\n        CorsRules = new[]\n        {\n            new Ionoscloud.Objectstorage.Inputs.CorsConfigurationCorsRuleArgs\n            {\n                AllowedHeaders = new[]\n                {\n                    \"*\",\n                },\n                AllowedMethods = new[]\n                {\n                    \"PUT\",\n                    \"POST\",\n                },\n                AllowedOrigins = new[]\n                {\n                    \"https://s3-website-test.hashicorp.com\",\n                },\n                ExposeHeaders = new[]\n                {\n                    \"ETag\",\n                },\n                MaxAgeSeconds = 3000,\n                Id = 1234,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewCorsConfiguration(ctx, \"test\", \u0026objectstorage.CorsConfigurationArgs{\n\t\t\tBucket: example.Name,\n\t\t\tCorsRules: objectstorage.CorsConfigurationCorsRuleArray{\n\t\t\t\t\u0026objectstorage.CorsConfigurationCorsRuleArgs{\n\t\t\t\t\tAllowedHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"https://s3-website-test.hashicorp.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ETag\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAgeSeconds: pulumi.Int(3000),\n\t\t\t\t\tId:            pulumi.Int(1234),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.CorsConfiguration;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.CorsConfigurationArgs;\nimport com.pulumi.ionoscloud.objectstorage.inputs.CorsConfigurationCorsRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var test = new CorsConfiguration(\"test\", CorsConfigurationArgs.builder()\n            .bucket(example.name())\n            .corsRules(CorsConfigurationCorsRuleArgs.builder()\n                .allowedHeaders(\"*\")\n                .allowedMethods(                \n                    \"PUT\",\n                    \"POST\")\n                .allowedOrigins(\"https://s3-website-test.hashicorp.com\")\n                .exposeHeaders(\"ETag\")\n                .maxAgeSeconds(3000)\n                .id(1234)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n  test:\n    type: ionoscloud:objectstorage:CorsConfiguration\n    properties:\n      bucket: ${example.name}\n      corsRules:\n        - allowedHeaders:\n            - '*'\n          allowedMethods:\n            - PUT\n            - POST\n          allowedOrigins:\n            - https://s3-website-test.hashicorp.com\n          exposeHeaders:\n            - ETag\n          maxAgeSeconds: 3000\n          id: 1234\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIONOS Object Storage Bucket cors configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e name.\n\n```sh\n$ pulumi import ionoscloud:objectstorage/corsConfiguration:CorsConfiguration example example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/CorsConfigurationCorsRule:CorsConfigurationCorsRule"
                    },
                    "description": "[block] A block of\u003cspan pulumi-lang-nodejs=\" corsRule \" pulumi-lang-dotnet=\" CorsRule \" pulumi-lang-go=\" corsRule \" pulumi-lang-python=\" cors_rule \" pulumi-lang-yaml=\" corsRule \" pulumi-lang-java=\" corsRule \"\u003e corsRule \u003c/span\u003eas defined below.\n"
                }
            },
            "required": [
                "bucket"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/CorsConfigurationCorsRule:CorsConfigurationCorsRule"
                    },
                    "description": "[block] A block of\u003cspan pulumi-lang-nodejs=\" corsRule \" pulumi-lang-dotnet=\" CorsRule \" pulumi-lang-go=\" corsRule \" pulumi-lang-python=\" cors_rule \" pulumi-lang-yaml=\" corsRule \" pulumi-lang-java=\" corsRule \"\u003e corsRule \u003c/span\u003eas defined below.\n"
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CorsConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "corsRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:objectstorage/CorsConfigurationCorsRule:CorsConfigurationCorsRule"
                        },
                        "description": "[block] A block of\u003cspan pulumi-lang-nodejs=\" corsRule \" pulumi-lang-dotnet=\" CorsRule \" pulumi-lang-go=\" corsRule \" pulumi-lang-python=\" cors_rule \" pulumi-lang-yaml=\" corsRule \" pulumi-lang-java=\" corsRule \"\u003e corsRule \u003c/span\u003eas defined below.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/objectCopy:ObjectCopy": {
            "description": "Creates a copy of an object that is already stored in IONOS Object Storage.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst source = new ionoscloud.objectstorage.Bucket(\"source\", {name: \"source\"});\nconst target = new ionoscloud.objectstorage.Bucket(\"target\", {name: \"target\"});\nconst sourceBucketObject = new ionoscloud.objectstorage.BucketObject(\"source\", {\n    bucket: source.name,\n    key: \"source_object\",\n    content: \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n    contentType: \"application/octet-stream\",\n});\nconst example = new ionoscloud.objectstorage.ObjectCopy(\"example\", {\n    bucket: target.name,\n    key: \"example\",\n    source: pulumi.interpolate`${source.name}/${sourceBucketObject.key}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nsource = ionoscloud.objectstorage.Bucket(\"source\", name=\"source\")\ntarget = ionoscloud.objectstorage.Bucket(\"target\", name=\"target\")\nsource_bucket_object = ionoscloud.objectstorage.BucketObject(\"source\",\n    bucket=source.name,\n    key=\"source_object\",\n    content=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n    content_type=\"application/octet-stream\")\nexample = ionoscloud.objectstorage.ObjectCopy(\"example\",\n    bucket=target.name,\n    key=\"example\",\n    source=pulumi.Output.all(\n        name=source.name,\n        key=source_bucket_object.key\n).apply(lambda resolved_outputs: f\"{resolved_outputs['name']}/{resolved_outputs['key']}\")\n)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var source = new Ionoscloud.Objectstorage.Bucket(\"source\", new()\n    {\n        Name = \"source\",\n    });\n\n    var target = new Ionoscloud.Objectstorage.Bucket(\"target\", new()\n    {\n        Name = \"target\",\n    });\n\n    var sourceBucketObject = new Ionoscloud.Objectstorage.BucketObject(\"source\", new()\n    {\n        Bucket = source.Name,\n        Key = \"source_object\",\n        Content = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n        ContentType = \"application/octet-stream\",\n    });\n\n    var example = new Ionoscloud.Objectstorage.ObjectCopy(\"example\", new()\n    {\n        Bucket = target.Name,\n        Key = \"example\",\n        Source = Output.Tuple(source.Name, sourceBucketObject.Key).Apply(values =\u003e\n        {\n            var name = values.Item1;\n            var key = values.Item2;\n            return $\"{name}/{key}\";\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := objectstorage.NewBucket(ctx, \"source\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"source\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttarget, err := objectstorage.NewBucket(ctx, \"target\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"target\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceBucketObject, err := objectstorage.NewBucketObject(ctx, \"source\", \u0026objectstorage.BucketObjectArgs{\n\t\t\tBucket:      source.Name,\n\t\t\tKey:         pulumi.String(\"source_object\"),\n\t\t\tContent:     pulumi.String(\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"),\n\t\t\tContentType: pulumi.String(\"application/octet-stream\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewObjectCopy(ctx, \"example\", \u0026objectstorage.ObjectCopyArgs{\n\t\t\tBucket: target.Name,\n\t\t\tKey:    pulumi.String(\"example\"),\n\t\t\tSource: pulumi.All(source.Name, sourceBucketObject.Key).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tname := _args[0].(string)\n\t\t\t\tkey := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(\"%v/%v\", name, key), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketObject;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketObjectArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.ObjectCopy;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.ObjectCopyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var source = new Bucket(\"source\", BucketArgs.builder()\n            .name(\"source\")\n            .build());\n\n        var target = new Bucket(\"target\", BucketArgs.builder()\n            .name(\"target\")\n            .build());\n\n        var sourceBucketObject = new BucketObject(\"sourceBucketObject\", BucketObjectArgs.builder()\n            .bucket(source.name())\n            .key(\"source_object\")\n            .content(\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\")\n            .contentType(\"application/octet-stream\")\n            .build());\n\n        var example = new ObjectCopy(\"example\", ObjectCopyArgs.builder()\n            .bucket(target.name())\n            .key(\"example\")\n            .source(Output.tuple(source.name(), sourceBucketObject.key()).applyValue(values -\u003e {\n                var name = values.t1;\n                var key = values.t2;\n                return String.format(\"%s/%s\", name,key);\n            }))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  source:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: source\n  target:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: target\n  sourceBucketObject:\n    type: ionoscloud:objectstorage:BucketObject\n    name: source\n    properties:\n      bucket: ${source.name}\n      key: source_object\n      content: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\n      contentType: application/octet-stream\n  example:\n    type: ionoscloud:objectstorage:ObjectCopy\n    properties:\n      bucket: ${target.name}\n      key: example\n      source: ${source.name}/${sourceBucketObject.key}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Object Copy can be imported using the `bucket name` and `object copy key`\n\n```sh\n$ pulumi import ionoscloud:objectstorage/objectCopy:ObjectCopy example target/example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored. Must be between 3 and 63 characters.\n"
                },
                "cacheControl": {
                    "type": "string",
                    "description": "[string] Specifies caching behavior along the request/reply chain.\n"
                },
                "contentDisposition": {
                    "type": "string",
                    "description": "[string] Specifies presentational information for the object.\n"
                },
                "contentEncoding": {
                    "type": "string",
                    "description": "[string] Specifies what content encodings have been applied to the object.\n"
                },
                "contentLanguage": {
                    "type": "string",
                    "description": "[string] The natural language or languages of the intended audience for the object.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "[string] A standard MIME type describing the format of the contents.\n"
                },
                "copyIfMatch": {
                    "type": "string",
                    "description": "Copies the object if its entity tag (ETag) matches the specified tag"
                },
                "copyIfModifiedSince": {
                    "type": "string",
                    "description": "Copies the object if it has been modified since the specified time"
                },
                "copyIfNoneMatch": {
                    "type": "string",
                    "description": "Copies the object if its entity tag (ETag) is different than the specified ETag"
                },
                "copyIfUnmodifiedSince": {
                    "type": "string",
                    "description": "Copies the object if it hasn't been modified since the specified time"
                },
                "etag": {
                    "type": "string",
                    "description": "[string] An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.\n"
                },
                "expires": {
                    "type": "string",
                    "description": "[string] The date and time at which the object is no longer cacheable.\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "[bool] If true, the object will be destroyed if versioning is enabled then all versions will be destroyed. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "[string] The key of the object. Must be at least 1 character long.\n"
                },
                "lastModified": {
                    "type": "string",
                    "description": "[string] The date and time at which the object was last modified.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A map of metadata to store with the object in IONOS Object Storage. Metadata keys must be lowercase alphanumeric characters.\n"
                },
                "metadataDirective": {
                    "type": "string",
                    "description": "[string] Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.\n"
                },
                "objectLockLegalHold": {
                    "type": "string",
                    "description": "[string] Indicates whether a legal hold is in effect for the object. Valid values are `ON` and `OFF`.\n"
                },
                "objectLockMode": {
                    "type": "string",
                    "description": "[string] The object lock mode that you want to apply to the object. Valid values are `GOVERNANCE` and `COMPLIANCE`.\n"
                },
                "objectLockRetainUntilDate": {
                    "type": "string",
                    "description": "[string] The date and time when the object lock retention expires.Must be in RFC3999 format\n"
                },
                "serverSideEncryption": {
                    "type": "string",
                    "description": "[string] The server-side encryption algorithm used when storing this object in IONOS Object Storage. Valid value is AES256.\n"
                },
                "serverSideEncryptionCustomerAlgorithm": {
                    "type": "string",
                    "description": "[string] Specifies the algorithm to use for encrypting the object. Valid value is AES256.\n"
                },
                "serverSideEncryptionCustomerKey": {
                    "type": "string",
                    "description": "[string] Specifies the 256-bit, base64-encoded encryption key to use to encrypt and decrypt your data.\n"
                },
                "serverSideEncryptionCustomerKeyMd5": {
                    "type": "string",
                    "description": "[string] Specifies the 128-bit MD5 digest of the encryption key.\n"
                },
                "source": {
                    "type": "string",
                    "description": "[string] The source of the object to be copied\n"
                },
                "sourceCustomerAlgorithm": {
                    "type": "string",
                    "description": "[string] Specifies the algorithm used for source object encryption. Valid value is AES256.\n"
                },
                "sourceCustomerKey": {
                    "type": "string",
                    "description": "[string] Specifies the 256-bit, base64-encoded encryption key for source object encryption.\n"
                },
                "sourceCustomerKeyMd5": {
                    "type": "string",
                    "description": "[string] Specifies the 128-bit MD5 digest of the encryption key for source object encryption.\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "[string] The storage class of the object. Valid value is STANDARD. Default is STANDARD.\n"
                },
                "taggingDirective": {
                    "type": "string",
                    "description": "[string] Specifies whether the object tag-set is copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] The tag-set for the object.\n"
                },
                "versionId": {
                    "type": "string",
                    "description": "[string] The version of the object.\n"
                },
                "websiteRedirect": {
                    "type": "string",
                    "description": "[string] Redirects requests for this object to another object in the same bucket or to an external URL.\n"
                }
            },
            "required": [
                "bucket",
                "contentType",
                "etag",
                "forceDestroy",
                "key",
                "lastModified",
                "source",
                "storageClass",
                "versionId"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored. Must be between 3 and 63 characters.\n"
                },
                "cacheControl": {
                    "type": "string",
                    "description": "[string] Specifies caching behavior along the request/reply chain.\n"
                },
                "contentDisposition": {
                    "type": "string",
                    "description": "[string] Specifies presentational information for the object.\n"
                },
                "contentEncoding": {
                    "type": "string",
                    "description": "[string] Specifies what content encodings have been applied to the object.\n"
                },
                "contentLanguage": {
                    "type": "string",
                    "description": "[string] The natural language or languages of the intended audience for the object.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "[string] A standard MIME type describing the format of the contents.\n"
                },
                "copyIfMatch": {
                    "type": "string",
                    "description": "Copies the object if its entity tag (ETag) matches the specified tag"
                },
                "copyIfModifiedSince": {
                    "type": "string",
                    "description": "Copies the object if it has been modified since the specified time"
                },
                "copyIfNoneMatch": {
                    "type": "string",
                    "description": "Copies the object if its entity tag (ETag) is different than the specified ETag"
                },
                "copyIfUnmodifiedSince": {
                    "type": "string",
                    "description": "Copies the object if it hasn't been modified since the specified time"
                },
                "expires": {
                    "type": "string",
                    "description": "[string] The date and time at which the object is no longer cacheable.\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "[bool] If true, the object will be destroyed if versioning is enabled then all versions will be destroyed. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "[string] The key of the object. Must be at least 1 character long.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] A map of metadata to store with the object in IONOS Object Storage. Metadata keys must be lowercase alphanumeric characters.\n"
                },
                "metadataDirective": {
                    "type": "string",
                    "description": "[string] Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.\n"
                },
                "objectLockLegalHold": {
                    "type": "string",
                    "description": "[string] Indicates whether a legal hold is in effect for the object. Valid values are `ON` and `OFF`.\n"
                },
                "objectLockMode": {
                    "type": "string",
                    "description": "[string] The object lock mode that you want to apply to the object. Valid values are `GOVERNANCE` and `COMPLIANCE`.\n"
                },
                "objectLockRetainUntilDate": {
                    "type": "string",
                    "description": "[string] The date and time when the object lock retention expires.Must be in RFC3999 format\n"
                },
                "serverSideEncryption": {
                    "type": "string",
                    "description": "[string] The server-side encryption algorithm used when storing this object in IONOS Object Storage. Valid value is AES256.\n"
                },
                "serverSideEncryptionCustomerAlgorithm": {
                    "type": "string",
                    "description": "[string] Specifies the algorithm to use for encrypting the object. Valid value is AES256.\n"
                },
                "serverSideEncryptionCustomerKey": {
                    "type": "string",
                    "description": "[string] Specifies the 256-bit, base64-encoded encryption key to use to encrypt and decrypt your data.\n"
                },
                "serverSideEncryptionCustomerKeyMd5": {
                    "type": "string",
                    "description": "[string] Specifies the 128-bit MD5 digest of the encryption key.\n"
                },
                "source": {
                    "type": "string",
                    "description": "[string] The source of the object to be copied\n"
                },
                "sourceCustomerAlgorithm": {
                    "type": "string",
                    "description": "[string] Specifies the algorithm used for source object encryption. Valid value is AES256.\n"
                },
                "sourceCustomerKey": {
                    "type": "string",
                    "description": "[string] Specifies the 256-bit, base64-encoded encryption key for source object encryption.\n"
                },
                "sourceCustomerKeyMd5": {
                    "type": "string",
                    "description": "[string] Specifies the 128-bit MD5 digest of the encryption key for source object encryption.\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "[string] The storage class of the object. Valid value is STANDARD. Default is STANDARD.\n"
                },
                "taggingDirective": {
                    "type": "string",
                    "description": "[string] Specifies whether the object tag-set is copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "[map] The tag-set for the object.\n"
                },
                "websiteRedirect": {
                    "type": "string",
                    "description": "[string] Redirects requests for this object to another object in the same bucket or to an external URL.\n"
                }
            },
            "requiredInputs": [
                "bucket",
                "key",
                "source"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectCopy resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored. Must be between 3 and 63 characters.\n"
                    },
                    "cacheControl": {
                        "type": "string",
                        "description": "[string] Specifies caching behavior along the request/reply chain.\n"
                    },
                    "contentDisposition": {
                        "type": "string",
                        "description": "[string] Specifies presentational information for the object.\n"
                    },
                    "contentEncoding": {
                        "type": "string",
                        "description": "[string] Specifies what content encodings have been applied to the object.\n"
                    },
                    "contentLanguage": {
                        "type": "string",
                        "description": "[string] The natural language or languages of the intended audience for the object.\n"
                    },
                    "contentType": {
                        "type": "string",
                        "description": "[string] A standard MIME type describing the format of the contents.\n"
                    },
                    "copyIfMatch": {
                        "type": "string",
                        "description": "Copies the object if its entity tag (ETag) matches the specified tag"
                    },
                    "copyIfModifiedSince": {
                        "type": "string",
                        "description": "Copies the object if it has been modified since the specified time"
                    },
                    "copyIfNoneMatch": {
                        "type": "string",
                        "description": "Copies the object if its entity tag (ETag) is different than the specified ETag"
                    },
                    "copyIfUnmodifiedSince": {
                        "type": "string",
                        "description": "Copies the object if it hasn't been modified since the specified time"
                    },
                    "etag": {
                        "type": "string",
                        "description": "[string] An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a resource found at a URL.\n"
                    },
                    "expires": {
                        "type": "string",
                        "description": "[string] The date and time at which the object is no longer cacheable.\n"
                    },
                    "forceDestroy": {
                        "type": "boolean",
                        "description": "[bool] If true, the object will be destroyed if versioning is enabled then all versions will be destroyed. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "[string] The key of the object. Must be at least 1 character long.\n"
                    },
                    "lastModified": {
                        "type": "string",
                        "description": "[string] The date and time at which the object was last modified.\n"
                    },
                    "metadata": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "[map] A map of metadata to store with the object in IONOS Object Storage. Metadata keys must be lowercase alphanumeric characters.\n"
                    },
                    "metadataDirective": {
                        "type": "string",
                        "description": "[string] Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.\n"
                    },
                    "objectLockLegalHold": {
                        "type": "string",
                        "description": "[string] Indicates whether a legal hold is in effect for the object. Valid values are `ON` and `OFF`.\n"
                    },
                    "objectLockMode": {
                        "type": "string",
                        "description": "[string] The object lock mode that you want to apply to the object. Valid values are `GOVERNANCE` and `COMPLIANCE`.\n"
                    },
                    "objectLockRetainUntilDate": {
                        "type": "string",
                        "description": "[string] The date and time when the object lock retention expires.Must be in RFC3999 format\n"
                    },
                    "serverSideEncryption": {
                        "type": "string",
                        "description": "[string] The server-side encryption algorithm used when storing this object in IONOS Object Storage. Valid value is AES256.\n"
                    },
                    "serverSideEncryptionCustomerAlgorithm": {
                        "type": "string",
                        "description": "[string] Specifies the algorithm to use for encrypting the object. Valid value is AES256.\n"
                    },
                    "serverSideEncryptionCustomerKey": {
                        "type": "string",
                        "description": "[string] Specifies the 256-bit, base64-encoded encryption key to use to encrypt and decrypt your data.\n"
                    },
                    "serverSideEncryptionCustomerKeyMd5": {
                        "type": "string",
                        "description": "[string] Specifies the 128-bit MD5 digest of the encryption key.\n"
                    },
                    "source": {
                        "type": "string",
                        "description": "[string] The source of the object to be copied\n"
                    },
                    "sourceCustomerAlgorithm": {
                        "type": "string",
                        "description": "[string] Specifies the algorithm used for source object encryption. Valid value is AES256.\n"
                    },
                    "sourceCustomerKey": {
                        "type": "string",
                        "description": "[string] Specifies the 256-bit, base64-encoded encryption key for source object encryption.\n"
                    },
                    "sourceCustomerKeyMd5": {
                        "type": "string",
                        "description": "[string] Specifies the 128-bit MD5 digest of the encryption key for source object encryption.\n"
                    },
                    "storageClass": {
                        "type": "string",
                        "description": "[string] The storage class of the object. Valid value is STANDARD. Default is STANDARD.\n"
                    },
                    "taggingDirective": {
                        "type": "string",
                        "description": "[string] Specifies whether the object tag-set is copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.\n"
                    },
                    "tags": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "[map] The tag-set for the object.\n"
                    },
                    "versionId": {
                        "type": "string",
                        "description": "[string] The version of the object.\n"
                    },
                    "websiteRedirect": {
                        "type": "string",
                        "description": "[string] Redirects requests for this object to another object in the same bucket or to an external URL.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/objectLockConfiguration:ObjectLockConfiguration": {
            "description": "Manages Object Lock Configuration for Buckets on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {\n    name: \"example\",\n    objectLockEnabled: true,\n});\nconst test = new ionoscloud.objectstorage.ObjectLockConfiguration(\"test\", {\n    bucket: example.name,\n    objectLockEnabled: \"Enabled\",\n    rule: [{\n        defaultRetention: [{\n            mode: \"GOVERNANCE\",\n            days: 1,\n        }],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\",\n    name=\"example\",\n    object_lock_enabled=True)\ntest = ionoscloud.objectstorage.ObjectLockConfiguration(\"test\",\n    bucket=example.name,\n    object_lock_enabled=\"Enabled\",\n    rule=[{\n        \"defaultRetention\": [{\n            \"mode\": \"GOVERNANCE\",\n            \"days\": 1,\n        }],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n        ObjectLockEnabled = true,\n    });\n\n    var test = new Ionoscloud.Objectstorage.ObjectLockConfiguration(\"test\", new()\n    {\n        Bucket = example.Name,\n        ObjectLockEnabled = \"Enabled\",\n        Rule = new[]\n        {\n            \n            {\n                { \"defaultRetention\", new[]\n                {\n                    \n                    {\n                        { \"mode\", \"GOVERNANCE\" },\n                        { \"days\", 1 },\n                    },\n                } },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName:              pulumi.String(\"example\"),\n\t\t\tObjectLockEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewObjectLockConfiguration(ctx, \"test\", \u0026objectstorage.ObjectLockConfigurationArgs{\n\t\t\tBucket:            example.Name,\n\t\t\tObjectLockEnabled: pulumi.String(\"Enabled\"),\n\t\t\tRule: objectstorage.ObjectLockConfigurationRuleArgs{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"defaultRetention\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"mode\": \"GOVERNANCE\",\n\t\t\t\t\t\t\t\"days\": 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.ObjectLockConfiguration;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.ObjectLockConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .objectLockEnabled(true)\n            .build());\n\n        var test = new ObjectLockConfiguration(\"test\", ObjectLockConfigurationArgs.builder()\n            .bucket(example.name())\n            .objectLockEnabled(\"Enabled\")\n            .rule(ObjectLockConfigurationRuleArgs.builder()\n                .defaultRetention(ObjectLockConfigurationRuleDefaultRetentionArgs.builder()\n                    .mode(\"GOVERNANCE\")\n                    .days(1)\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n      objectLockEnabled: true\n  test:\n    type: ionoscloud:objectstorage:ObjectLockConfiguration\n    properties:\n      bucket: ${example.name}\n      objectLockEnabled: Enabled\n      rule:\n        - defaultRetention:\n            - mode: GOVERNANCE\n              days: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIONOS Object Storage Bucket object lock configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e name.\n\n```sh\n$ pulumi import ionoscloud:objectstorage/objectLockConfiguration:ObjectLockConfiguration example example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "objectLockEnabled": {
                    "type": "string",
                    "description": "[Optional] The object lock configuration status of the bucket. Must be `Enabled`.\n"
                },
                "rule": {
                    "$ref": "#/types/ionoscloud:objectstorage/ObjectLockConfigurationRule:ObjectLockConfigurationRule",
                    "description": "[block] A block of rule as defined below.\n"
                }
            },
            "required": [
                "bucket",
                "objectLockEnabled"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "objectLockEnabled": {
                    "type": "string",
                    "description": "[Optional] The object lock configuration status of the bucket. Must be `Enabled`.\n"
                },
                "rule": {
                    "$ref": "#/types/ionoscloud:objectstorage/ObjectLockConfigurationRule:ObjectLockConfigurationRule",
                    "description": "[block] A block of rule as defined below.\n"
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectLockConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "objectLockEnabled": {
                        "type": "string",
                        "description": "[Optional] The object lock configuration status of the bucket. Must be `Enabled`.\n"
                    },
                    "rule": {
                        "$ref": "#/types/ionoscloud:objectstorage/ObjectLockConfigurationRule:ObjectLockConfigurationRule",
                        "description": "[block] A block of rule as defined below.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/publicAccessBlock:PublicAccessBlock": {
            "description": "Manages **public acccess for Buckets** on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.PublicAccessBlock(\"example\", {\n    bucket: exampleIonoscloudS3Bucket.name,\n    ignorePublicAcls: true,\n    restrictPublicBuckets: true,\n    blockPublicPolicy: false,\n    blockPublicAcls: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.PublicAccessBlock(\"example\",\n    bucket=example_ionoscloud_s3_bucket[\"name\"],\n    ignore_public_acls=True,\n    restrict_public_buckets=True,\n    block_public_policy=False,\n    block_public_acls=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.PublicAccessBlock(\"example\", new()\n    {\n        Bucket = exampleIonoscloudS3Bucket.Name,\n        IgnorePublicAcls = true,\n        RestrictPublicBuckets = true,\n        BlockPublicPolicy = false,\n        BlockPublicAcls = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.NewPublicAccessBlock(ctx, \"example\", \u0026objectstorage.PublicAccessBlockArgs{\n\t\t\tBucket:                pulumi.Any(exampleIonoscloudS3Bucket.Name),\n\t\t\tIgnorePublicAcls:      pulumi.Bool(true),\n\t\t\tRestrictPublicBuckets: pulumi.Bool(true),\n\t\t\tBlockPublicPolicy:     pulumi.Bool(false),\n\t\t\tBlockPublicAcls:       pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.PublicAccessBlock;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.PublicAccessBlockArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new PublicAccessBlock(\"example\", PublicAccessBlockArgs.builder()\n            .bucket(exampleIonoscloudS3Bucket.name())\n            .ignorePublicAcls(true)\n            .restrictPublicBuckets(true)\n            .blockPublicPolicy(false)\n            .blockPublicAcls(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:PublicAccessBlock\n    properties:\n      bucket: ${exampleIonoscloudS3Bucket.name}\n      ignorePublicAcls: true\n      restrictPublicBuckets: true\n      blockPublicPolicy: false\n      blockPublicAcls: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResource Bucket access block can be imported using the `bucket name`\n\n```sh\n$ pulumi import ionoscloud:objectstorage/publicAccessBlock:PublicAccessBlock example example\n```\n\n",
            "properties": {
                "blockPublicAcls": {
                    "type": "boolean",
                    "description": "[bool] Indicates that access to the bucket via Access Control Lists (ACLs) that grant public access is blocked. In other words, ACLs that allow public access are not permitted.\n"
                },
                "blockPublicPolicy": {
                    "type": "boolean",
                    "description": "[bool] Blocks public access to the bucket via bucket policies. Bucket policies that grant public access will not be allowed.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "ignorePublicAcls": {
                    "type": "boolean",
                    "description": "[bool] Instructs the system to ignore any ACLs that grant public access. Even if ACLs are set to allow public access, they will be disregarded.\n"
                },
                "restrictPublicBuckets": {
                    "type": "boolean",
                    "description": "[bool] Restricts access to buckets that have public policies. Buckets with policies that grant public access will have their access restricted.\n"
                }
            },
            "required": [
                "blockPublicAcls",
                "blockPublicPolicy",
                "bucket",
                "ignorePublicAcls",
                "restrictPublicBuckets"
            ],
            "inputProperties": {
                "blockPublicAcls": {
                    "type": "boolean",
                    "description": "[bool] Indicates that access to the bucket via Access Control Lists (ACLs) that grant public access is blocked. In other words, ACLs that allow public access are not permitted.\n"
                },
                "blockPublicPolicy": {
                    "type": "boolean",
                    "description": "[bool] Blocks public access to the bucket via bucket policies. Bucket policies that grant public access will not be allowed.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "ignorePublicAcls": {
                    "type": "boolean",
                    "description": "[bool] Instructs the system to ignore any ACLs that grant public access. Even if ACLs are set to allow public access, they will be disregarded.\n"
                },
                "restrictPublicBuckets": {
                    "type": "boolean",
                    "description": "[bool] Restricts access to buckets that have public policies. Buckets with policies that grant public access will have their access restricted.\n"
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PublicAccessBlock resources.\n",
                "properties": {
                    "blockPublicAcls": {
                        "type": "boolean",
                        "description": "[bool] Indicates that access to the bucket via Access Control Lists (ACLs) that grant public access is blocked. In other words, ACLs that allow public access are not permitted.\n"
                    },
                    "blockPublicPolicy": {
                        "type": "boolean",
                        "description": "[bool] Blocks public access to the bucket via bucket policies. Bucket policies that grant public access will not be allowed.\n"
                    },
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "ignorePublicAcls": {
                        "type": "boolean",
                        "description": "[bool] Instructs the system to ignore any ACLs that grant public access. Even if ACLs are set to allow public access, they will be disregarded.\n"
                    },
                    "restrictPublicBuckets": {
                        "type": "boolean",
                        "description": "[bool] Restricts access to buckets that have public policies. Buckets with policies that grant public access will have their access restricted.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/websiteConfiguration:WebsiteConfiguration": {
            "description": "Manages Website Configuration for Buckets on IonosCloud.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstorage.Bucket(\"example\", {name: \"example\"});\nconst exampleWebsiteConfiguration = new ionoscloud.objectstorage.WebsiteConfiguration(\"example\", {\n    bucket: example.name,\n    indexDocument: [{\n        suffix: \"index.html\",\n    }],\n    errorDocument: [{\n        key: \"error.html\",\n    }],\n    routingRules: [{\n        condition: [{\n            keyPrefixEquals: \"docs/\",\n        }],\n        redirect: [{\n            replaceKeyPrefixWith: \"documents/\",\n        }],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.Bucket(\"example\", name=\"example\")\nexample_website_configuration = ionoscloud.objectstorage.WebsiteConfiguration(\"example\",\n    bucket=example.name,\n    index_document=[{\n        \"suffix\": \"index.html\",\n    }],\n    error_document=[{\n        \"key\": \"error.html\",\n    }],\n    routing_rules=[{\n        \"condition\": [{\n            \"keyPrefixEquals\": \"docs/\",\n        }],\n        \"redirect\": [{\n            \"replaceKeyPrefixWith\": \"documents/\",\n        }],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstorage.Bucket(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleWebsiteConfiguration = new Ionoscloud.Objectstorage.WebsiteConfiguration(\"example\", new()\n    {\n        Bucket = example.Name,\n        IndexDocument = new[]\n        {\n            \n            {\n                { \"suffix\", \"index.html\" },\n            },\n        },\n        ErrorDocument = new[]\n        {\n            \n            {\n                { \"key\", \"error.html\" },\n            },\n        },\n        RoutingRules = new[]\n        {\n            new Ionoscloud.Objectstorage.Inputs.WebsiteConfigurationRoutingRuleArgs\n            {\n                Condition = new[]\n                {\n                    \n                    {\n                        { \"keyPrefixEquals\", \"docs/\" },\n                    },\n                },\n                Redirect = new[]\n                {\n                    \n                    {\n                        { \"replaceKeyPrefixWith\", \"documents/\" },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := objectstorage.NewBucket(ctx, \"example\", \u0026objectstorage.BucketArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewWebsiteConfiguration(ctx, \"example\", \u0026objectstorage.WebsiteConfigurationArgs{\n\t\t\tBucket: example.Name,\n\t\t\tIndexDocument: objectstorage.WebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"suffix\": \"index.html\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tErrorDocument: objectstorage.WebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"key\": \"error.html\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tRoutingRules: objectstorage.WebsiteConfigurationRoutingRuleArray{\n\t\t\t\t\u0026objectstorage.WebsiteConfigurationRoutingRuleArgs{\n\t\t\t\t\tCondition: objectstorage.WebsiteConfigurationRoutingRuleConditionArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"keyPrefixEquals\": \"docs/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRedirect: objectstorage.WebsiteConfigurationRoutingRuleRedirectArgs{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"replaceKeyPrefixWith\": \"documents/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.Bucket;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.BucketArgs;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.WebsiteConfiguration;\nimport com.ionoscloud.pulumi.ionoscloud.objectstorage.WebsiteConfigurationArgs;\nimport com.pulumi.ionoscloud.objectstorage.inputs.WebsiteConfigurationRoutingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Bucket(\"example\", BucketArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleWebsiteConfiguration = new WebsiteConfiguration(\"exampleWebsiteConfiguration\", WebsiteConfigurationArgs.builder()\n            .bucket(example.name())\n            .indexDocument(WebsiteConfigurationIndexDocumentArgs.builder()\n                .suffix(\"index.html\")\n                .build())\n            .errorDocument(WebsiteConfigurationErrorDocumentArgs.builder()\n                .key(\"error.html\")\n                .build())\n            .routingRules(WebsiteConfigurationRoutingRuleArgs.builder()\n                .condition(WebsiteConfigurationRoutingRuleConditionArgs.builder()\n                    .keyPrefixEquals(\"docs/\")\n                    .build())\n                .redirect(WebsiteConfigurationRoutingRuleRedirectArgs.builder()\n                    .replaceKeyPrefixWith(\"documents/\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstorage:Bucket\n    properties:\n      name: example\n  exampleWebsiteConfiguration:\n    type: ionoscloud:objectstorage:WebsiteConfiguration\n    name: example\n    properties:\n      bucket: ${example.name}\n      indexDocument:\n        - suffix: index.html\n      errorDocument:\n        - key: error.html\n      routingRules:\n        - condition:\n            - keyPrefixEquals: docs/\n          redirect:\n            - replaceKeyPrefixWith: documents/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIONOS Object Storage Bucket website configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e name.\n\n```sh\n$ pulumi import ionoscloud:objectstorage/websiteConfiguration:WebsiteConfiguration example example\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "errorDocument": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationErrorDocument:WebsiteConfigurationErrorDocument",
                    "description": "The object key name to use when a 4XX class error occurs. Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests\n"
                },
                "indexDocument": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationIndexDocument:WebsiteConfigurationIndexDocument",
                    "description": "Container for the Suffix element.\n"
                },
                "redirectAllRequestsTo": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRedirectAllRequestsTo:WebsiteConfigurationRedirectAllRequestsTo",
                    "description": "Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can can specify a different error code to return.\n"
                },
                "routingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRoutingRule:WebsiteConfigurationRoutingRule"
                    },
                    "description": "A container for describing a condition that must be met for the specified redirect to apply.\n"
                }
            },
            "required": [
                "bucket"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "[string] The name of the bucket where the object will be stored.\n"
                },
                "errorDocument": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationErrorDocument:WebsiteConfigurationErrorDocument",
                    "description": "The object key name to use when a 4XX class error occurs. Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests\n"
                },
                "indexDocument": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationIndexDocument:WebsiteConfigurationIndexDocument",
                    "description": "Container for the Suffix element.\n"
                },
                "redirectAllRequestsTo": {
                    "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRedirectAllRequestsTo:WebsiteConfigurationRedirectAllRequestsTo",
                    "description": "Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can can specify a different error code to return.\n"
                },
                "routingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRoutingRule:WebsiteConfigurationRoutingRule"
                    },
                    "description": "A container for describing a condition that must be met for the specified redirect to apply.\n"
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering WebsiteConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    },
                    "errorDocument": {
                        "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationErrorDocument:WebsiteConfigurationErrorDocument",
                        "description": "The object key name to use when a 4XX class error occurs. Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests\n"
                    },
                    "indexDocument": {
                        "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationIndexDocument:WebsiteConfigurationIndexDocument",
                        "description": "Container for the Suffix element.\n"
                    },
                    "redirectAllRequestsTo": {
                        "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRedirectAllRequestsTo:WebsiteConfigurationRedirectAllRequestsTo",
                        "description": "Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can can specify a different error code to return.\n"
                    },
                    "routingRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:objectstorage/WebsiteConfigurationRoutingRule:WebsiteConfigurationRoutingRule"
                        },
                        "description": "A container for describing a condition that must be met for the specified redirect to apply.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:objectstoragemanagement/accesskey:Accesskey": {
            "description": "Manages an [Object Storage Accesskey](https://docs.ionos.com/cloud/storage-and-backup/ionos-object-storage/concepts/key-management) on IonosCloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.objectstoragemanagement.Accesskey(\"example\", {description: \"my description\"});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstoragemanagement.Accesskey(\"example\", description=\"my description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Objectstoragemanagement.Accesskey(\"example\", new()\n    {\n        Description = \"my description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstoragemanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstoragemanagement.NewAccesskey(ctx, \"example\", \u0026objectstoragemanagement.AccesskeyArgs{\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.objectstoragemanagement.Accesskey;\nimport com.ionoscloud.pulumi.ionoscloud.objectstoragemanagement.AccesskeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Accesskey(\"example\", AccesskeyArgs.builder()\n            .description(\"my description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:objectstoragemanagement:Accesskey\n    properties:\n      description: my description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAn object storage accesskey resource can be imported using its `resource id`, e.g.\n\n```sh\n$ pulumi import ionoscloud:objectstoragemanagement/accesskey:Accesskey demo objectStorageAccesskeyid\n```\n\nThis can be helpful when you want to import Object Storage Accesskeys which you have already created manually or using other means, outside of terraform.\n\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "Access key metadata is a string of 92 characters.\n"
                },
                "canonicalUserId": {
                    "type": "string",
                    "description": "The canonical user ID which is valid for user-owned buckets.\n"
                },
                "contractUserId": {
                    "type": "string",
                    "description": "The contract user ID which is valid for contract-owned buckets\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] Description of the Access key.\n"
                },
                "secretkey": {
                    "type": "string",
                    "description": "The secret key of the Access key.\n"
                },
                "timeouts": {
                    "$ref": "#/types/ionoscloud:objectstoragemanagement/AccesskeyTimeouts:AccesskeyTimeouts",
                    "description": "Timeouts for this resource.\n"
                }
            },
            "required": [
                "accessKey",
                "canonicalUserId",
                "contractUserId",
                "description",
                "secretkey"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "[string] Description of the Access key.\n"
                },
                "timeouts": {
                    "$ref": "#/types/ionoscloud:objectstoragemanagement/AccesskeyTimeouts:AccesskeyTimeouts",
                    "description": "Timeouts for this resource.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Accesskey resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "Access key metadata is a string of 92 characters.\n"
                    },
                    "canonicalUserId": {
                        "type": "string",
                        "description": "The canonical user ID which is valid for user-owned buckets.\n"
                    },
                    "contractUserId": {
                        "type": "string",
                        "description": "The contract user ID which is valid for contract-owned buckets\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "[string] Description of the Access key.\n"
                    },
                    "secretkey": {
                        "type": "string",
                        "description": "The secret key of the Access key.\n"
                    },
                    "timeouts": {
                        "$ref": "#/types/ionoscloud:objectstoragemanagement/AccesskeyTimeouts:AccesskeyTimeouts",
                        "description": "Timeouts for this resource.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:vpn/ipsecGateway:IpsecGateway": {
            "description": "An [IPSec Gateway](https://docs.ionos.com/cloud/network-services/vpn-gateway/overview) resource manages the creation, management, and deletion of VPN IPSec Gateways within the IONOS Cloud\ninfrastructure. This resource facilitates the creation of VPN IPSec Gateways, enabling secure connections between your\nnetwork resources.\n\n## Usage example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst testDatacenter = new ionoscloud.compute.Datacenter(\"test_datacenter\", {\n    name: \"test_vpn_gateway_basic\",\n    location: \"de/fra\",\n});\nconst testLan = new ionoscloud.compute.Lan(\"test_lan\", {\n    name: \"test_lan_basic\",\n    \"public\": false,\n    datacenterId: testDatacenter.id,\n});\nconst testIpblock = new ionoscloud.compute.IPBlock(\"test_ipblock\", {\n    name: \"test_ipblock_basic\",\n    location: \"de/fra\",\n    size: 1,\n});\nconst example = new ionoscloud.vpn.IpsecGateway(\"example\", {\n    name: \"ipsec_gateway_basic\",\n    location: \"de/fra\",\n    gatewayIp: testIpblock.ips[0],\n    version: \"IKEv2\",\n    description: \"This gateway connects site A to VDC X.\",\n    connections: [{\n        datacenterId: testDatacenter.id,\n        lanId: testLan.id,\n        ipv4Cidr: \"192.168.100.10/24\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\ntest_datacenter = ionoscloud.compute.Datacenter(\"test_datacenter\",\n    name=\"test_vpn_gateway_basic\",\n    location=\"de/fra\")\ntest_lan = ionoscloud.compute.Lan(\"test_lan\",\n    name=\"test_lan_basic\",\n    public=False,\n    datacenter_id=test_datacenter.id)\ntest_ipblock = ionoscloud.compute.IPBlock(\"test_ipblock\",\n    name=\"test_ipblock_basic\",\n    location=\"de/fra\",\n    size=1)\nexample = ionoscloud.vpn.IpsecGateway(\"example\",\n    name=\"ipsec_gateway_basic\",\n    location=\"de/fra\",\n    gateway_ip=test_ipblock.ips[0],\n    version=\"IKEv2\",\n    description=\"This gateway connects site A to VDC X.\",\n    connections=[{\n        \"datacenter_id\": test_datacenter.id,\n        \"lan_id\": test_lan.id,\n        \"ipv4_cidr\": \"192.168.100.10/24\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var testDatacenter = new Ionoscloud.Compute.Datacenter(\"test_datacenter\", new()\n    {\n        Name = \"test_vpn_gateway_basic\",\n        Location = \"de/fra\",\n    });\n\n    var testLan = new Ionoscloud.Compute.Lan(\"test_lan\", new()\n    {\n        Name = \"test_lan_basic\",\n        Public = false,\n        DatacenterId = testDatacenter.Id,\n    });\n\n    var testIpblock = new Ionoscloud.Compute.IPBlock(\"test_ipblock\", new()\n    {\n        Name = \"test_ipblock_basic\",\n        Location = \"de/fra\",\n        Size = 1,\n    });\n\n    var example = new Ionoscloud.Vpn.IpsecGateway(\"example\", new()\n    {\n        Name = \"ipsec_gateway_basic\",\n        Location = \"de/fra\",\n        GatewayIp = testIpblock.Ips.Apply(ips =\u003e ips[0]),\n        Version = \"IKEv2\",\n        Description = \"This gateway connects site A to VDC X.\",\n        Connections = new[]\n        {\n            new Ionoscloud.Vpn.Inputs.IpsecGatewayConnectionArgs\n            {\n                DatacenterId = testDatacenter.Id,\n                LanId = testLan.Id,\n                Ipv4Cidr = \"192.168.100.10/24\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\ttestDatacenter, err := compute.NewDatacenter(ctx, \"test_datacenter\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"test_vpn_gateway_basic\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestLan, err := compute.NewLan(ctx, \"test_lan\", \u0026compute.LanArgs{\n\t\t\tName:         pulumi.String(\"test_lan_basic\"),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tDatacenterId: testDatacenter.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestIpblock, err := compute.NewIPBlock(ctx, \"test_ipblock\", \u0026compute.IPBlockArgs{\n\t\t\tName:     pulumi.String(\"test_ipblock_basic\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpn.NewIpsecGateway(ctx, \"example\", \u0026vpn.IpsecGatewayArgs{\n\t\t\tName:     pulumi.String(\"ipsec_gateway_basic\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tGatewayIp: testIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVersion:     pulumi.String(\"IKEv2\"),\n\t\t\tDescription: pulumi.String(\"This gateway connects site A to VDC X.\"),\n\t\t\tConnections: vpn.IpsecGatewayConnectionArray{\n\t\t\t\t\u0026vpn.IpsecGatewayConnectionArgs{\n\t\t\t\t\tDatacenterId: testDatacenter.ID(),\n\t\t\t\t\tLanId:        testLan.ID(),\n\t\t\t\t\tIpv4Cidr:     pulumi.String(\"192.168.100.10/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.IpsecGateway;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.IpsecGatewayArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.IpsecGatewayConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var testDatacenter = new Datacenter(\"testDatacenter\", DatacenterArgs.builder()\n            .name(\"test_vpn_gateway_basic\")\n            .location(\"de/fra\")\n            .build());\n\n        var testLan = new Lan(\"testLan\", LanArgs.builder()\n            .name(\"test_lan_basic\")\n            .public_(false)\n            .datacenterId(testDatacenter.id())\n            .build());\n\n        var testIpblock = new IPBlock(\"testIpblock\", IPBlockArgs.builder()\n            .name(\"test_ipblock_basic\")\n            .location(\"de/fra\")\n            .size(1)\n            .build());\n\n        var example = new IpsecGateway(\"example\", IpsecGatewayArgs.builder()\n            .name(\"ipsec_gateway_basic\")\n            .location(\"de/fra\")\n            .gatewayIp(testIpblock.ips().applyValue(_ips -\u003e _ips[0]))\n            .version(\"IKEv2\")\n            .description(\"This gateway connects site A to VDC X.\")\n            .connections(IpsecGatewayConnectionArgs.builder()\n                .datacenterId(testDatacenter.id())\n                .lanId(testLan.id())\n                .ipv4Cidr(\"192.168.100.10/24\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  testDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: test_datacenter\n    properties:\n      name: test_vpn_gateway_basic\n      location: de/fra\n  testLan:\n    type: ionoscloud:compute:Lan\n    name: test_lan\n    properties:\n      name: test_lan_basic\n      public: false\n      datacenterId: ${testDatacenter.id}\n  testIpblock:\n    type: ionoscloud:compute:IPBlock\n    name: test_ipblock\n    properties:\n      name: test_ipblock_basic\n      location: de/fra\n      size: 1\n  example:\n    type: ionoscloud:vpn:IpsecGateway\n    properties:\n      name: ipsec_gateway_basic\n      location: de/fra\n      gatewayIp: ${testIpblock.ips[0]}\n      version: IKEv2\n      description: This gateway connects site A to VDC X.\n      connections:\n        - datacenterId: ${testDatacenter.id}\n          lanId: ${testLan.id}\n          ipv4Cidr: 192.168.100.10/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gatewayId`\" pulumi-lang-dotnet=\"`GatewayId`\" pulumi-lang-go=\"`gatewayId`\" pulumi-lang-python=\"`gateway_id`\" pulumi-lang-yaml=\"`gatewayId`\" pulumi-lang-java=\"`gatewayId`\"\u003e`gatewayId`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:vpn/ipsecGateway:IpsecGateway example location:gateway_id\n```\n\n",
            "properties": {
                "connections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:vpn/IpsecGatewayConnection:IpsecGatewayConnection"
                    },
                    "description": "[list] The network connection for your gateway. **Note**: all connections must belong to the\nsame datacenter. Minimum items: 1. Maximum items: 10.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] The human-readable description of the IPSec Gateway.\n"
                },
                "gatewayIp": {
                    "type": "string",
                    "description": "[string] Public IP address to be assigned to the gateway. Note: This must be an IP address in\nthe same datacenter as the connections.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the IPSec Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:vpn/IpsecGatewayMaintenanceWindow:IpsecGatewayMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the IPSec Gateway.\n"
                },
                "tier": {
                    "type": "string",
                    "description": "(Computed)[string] Gateway performance options.  See product documentation for full details. Options: STANDARD, STANDARD_HA, ENHANCED, ENHANCED_HA, PREMIUM, PREMIUM_HA.\n"
                },
                "version": {
                    "type": "string",
                    "description": "[string] The IKE version that is permitted for the VPN tunnels. Default: `IKEv2`. Possible\nvalues: `IKEv2`.\n"
                }
            },
            "required": [
                "connections",
                "gatewayIp",
                "maintenanceWindow",
                "name"
            ],
            "inputProperties": {
                "connections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:vpn/IpsecGatewayConnection:IpsecGatewayConnection"
                    },
                    "description": "[list] The network connection for your gateway. **Note**: all connections must belong to the\nsame datacenter. Minimum items: 1. Maximum items: 10.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] The human-readable description of the IPSec Gateway.\n"
                },
                "gatewayIp": {
                    "type": "string",
                    "description": "[string] Public IP address to be assigned to the gateway. Note: This must be an IP address in\nthe same datacenter as the connections.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the IPSec Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:vpn/IpsecGatewayMaintenanceWindow:IpsecGatewayMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the IPSec Gateway.\n"
                },
                "tier": {
                    "type": "string",
                    "description": "(Computed)[string] Gateway performance options.  See product documentation for full details. Options: STANDARD, STANDARD_HA, ENHANCED, ENHANCED_HA, PREMIUM, PREMIUM_HA.\n"
                },
                "version": {
                    "type": "string",
                    "description": "[string] The IKE version that is permitted for the VPN tunnels. Default: `IKEv2`. Possible\nvalues: `IKEv2`.\n"
                }
            },
            "requiredInputs": [
                "connections",
                "gatewayIp"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IpsecGateway resources.\n",
                "properties": {
                    "connections": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/IpsecGatewayConnection:IpsecGatewayConnection"
                        },
                        "description": "[list] The network connection for your gateway. **Note**: all connections must belong to the\nsame datacenter. Minimum items: 1. Maximum items: 10.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "[string] The human-readable description of the IPSec Gateway.\n"
                    },
                    "gatewayIp": {
                        "type": "string",
                        "description": "[string] Public IP address to be assigned to the gateway. Note: This must be an IP address in\nthe same datacenter as the connections.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the IPSec Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:vpn/IpsecGatewayMaintenanceWindow:IpsecGatewayMaintenanceWindow",
                        "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the IPSec Gateway.\n"
                    },
                    "tier": {
                        "type": "string",
                        "description": "(Computed)[string] Gateway performance options.  See product documentation for full details. Options: STANDARD, STANDARD_HA, ENHANCED, ENHANCED_HA, PREMIUM, PREMIUM_HA.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "[string] The IKE version that is permitted for the VPN tunnels. Default: `IKEv2`. Possible\nvalues: `IKEv2`.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:vpn/ipsecTunnel:IpsecTunnel": {
            "description": "An IPSec Gateway Tunnel resource manages the creation, management, and deletion of VPN IPSec Gateway Tunnels within the\nIONOS Cloud infrastructure. This resource facilitates the creation of VPN IPSec Gateway Tunnels, enabling secure\nconnections between your network resources.\n\n## Usage example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\n// Basic example\nconst testDatacenter = new ionoscloud.compute.Datacenter(\"test_datacenter\", {\n    name: \"test_vpn_gateway_basic\",\n    location: \"de/fra\",\n});\nconst testLan = new ionoscloud.compute.Lan(\"test_lan\", {\n    name: \"test_lan_basic\",\n    \"public\": false,\n    datacenterId: testDatacenter.id,\n});\nconst testIpblock = new ionoscloud.compute.IPBlock(\"test_ipblock\", {\n    name: \"test_ipblock_basic\",\n    location: \"de/fra\",\n    size: 1,\n});\nconst example = new ionoscloud.vpn.IpsecGateway(\"example\", {\n    name: \"ipsec_gateway_basic\",\n    location: \"de/fra\",\n    gatewayIp: testIpblock.ips[0],\n    version: \"IKEv2\",\n    description: \"This gateway connects site A to VDC X.\",\n    connections: [{\n        datacenterId: testDatacenter.id,\n        lanId: testLan.id,\n        ipv4Cidr: \"192.168.100.10/24\",\n    }],\n});\nconst exampleIpsecTunnel = new ionoscloud.vpn.IpsecTunnel(\"example\", {\n    location: \"de/fra\",\n    gatewayId: example.id,\n    name: \"example-tunnel\",\n    remoteHost: \"vpn.mycompany.com\",\n    description: \"Allows local subnet X to connect to virtual network Y.\",\n    auth: {\n        method: \"PSK\",\n        pskKey: \"X2wosbaw74M8hQGbK3jCCaEusR6CCFRa\",\n    },\n    ike: {\n        diffieHellmanGroup: \"16-MODP4096\",\n        encryptionAlgorithm: \"AES256\",\n        integrityAlgorithm: \"SHA256\",\n        lifetime: 86400,\n    },\n    esps: [{\n        diffieHellmanGroup: \"16-MODP4096\",\n        encryptionAlgorithm: \"AES256\",\n        integrityAlgorithm: \"SHA256\",\n        lifetime: 3600,\n    }],\n    cloudNetworkCidrs: [\"0.0.0.0/0\"],\n    peerNetworkCidrs: [\"1.2.3.4/32\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\n# Basic example\ntest_datacenter = ionoscloud.compute.Datacenter(\"test_datacenter\",\n    name=\"test_vpn_gateway_basic\",\n    location=\"de/fra\")\ntest_lan = ionoscloud.compute.Lan(\"test_lan\",\n    name=\"test_lan_basic\",\n    public=False,\n    datacenter_id=test_datacenter.id)\ntest_ipblock = ionoscloud.compute.IPBlock(\"test_ipblock\",\n    name=\"test_ipblock_basic\",\n    location=\"de/fra\",\n    size=1)\nexample = ionoscloud.vpn.IpsecGateway(\"example\",\n    name=\"ipsec_gateway_basic\",\n    location=\"de/fra\",\n    gateway_ip=test_ipblock.ips[0],\n    version=\"IKEv2\",\n    description=\"This gateway connects site A to VDC X.\",\n    connections=[{\n        \"datacenter_id\": test_datacenter.id,\n        \"lan_id\": test_lan.id,\n        \"ipv4_cidr\": \"192.168.100.10/24\",\n    }])\nexample_ipsec_tunnel = ionoscloud.vpn.IpsecTunnel(\"example\",\n    location=\"de/fra\",\n    gateway_id=example.id,\n    name=\"example-tunnel\",\n    remote_host=\"vpn.mycompany.com\",\n    description=\"Allows local subnet X to connect to virtual network Y.\",\n    auth={\n        \"method\": \"PSK\",\n        \"psk_key\": \"X2wosbaw74M8hQGbK3jCCaEusR6CCFRa\",\n    },\n    ike={\n        \"diffie_hellman_group\": \"16-MODP4096\",\n        \"encryption_algorithm\": \"AES256\",\n        \"integrity_algorithm\": \"SHA256\",\n        \"lifetime\": 86400,\n    },\n    esps=[{\n        \"diffie_hellman_group\": \"16-MODP4096\",\n        \"encryption_algorithm\": \"AES256\",\n        \"integrity_algorithm\": \"SHA256\",\n        \"lifetime\": 3600,\n    }],\n    cloud_network_cidrs=[\"0.0.0.0/0\"],\n    peer_network_cidrs=[\"1.2.3.4/32\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic example\n    var testDatacenter = new Ionoscloud.Compute.Datacenter(\"test_datacenter\", new()\n    {\n        Name = \"test_vpn_gateway_basic\",\n        Location = \"de/fra\",\n    });\n\n    var testLan = new Ionoscloud.Compute.Lan(\"test_lan\", new()\n    {\n        Name = \"test_lan_basic\",\n        Public = false,\n        DatacenterId = testDatacenter.Id,\n    });\n\n    var testIpblock = new Ionoscloud.Compute.IPBlock(\"test_ipblock\", new()\n    {\n        Name = \"test_ipblock_basic\",\n        Location = \"de/fra\",\n        Size = 1,\n    });\n\n    var example = new Ionoscloud.Vpn.IpsecGateway(\"example\", new()\n    {\n        Name = \"ipsec_gateway_basic\",\n        Location = \"de/fra\",\n        GatewayIp = testIpblock.Ips.Apply(ips =\u003e ips[0]),\n        Version = \"IKEv2\",\n        Description = \"This gateway connects site A to VDC X.\",\n        Connections = new[]\n        {\n            new Ionoscloud.Vpn.Inputs.IpsecGatewayConnectionArgs\n            {\n                DatacenterId = testDatacenter.Id,\n                LanId = testLan.Id,\n                Ipv4Cidr = \"192.168.100.10/24\",\n            },\n        },\n    });\n\n    var exampleIpsecTunnel = new Ionoscloud.Vpn.IpsecTunnel(\"example\", new()\n    {\n        Location = \"de/fra\",\n        GatewayId = example.Id,\n        Name = \"example-tunnel\",\n        RemoteHost = \"vpn.mycompany.com\",\n        Description = \"Allows local subnet X to connect to virtual network Y.\",\n        Auth = new Ionoscloud.Vpn.Inputs.IpsecTunnelAuthArgs\n        {\n            Method = \"PSK\",\n            PskKey = \"X2wosbaw74M8hQGbK3jCCaEusR6CCFRa\",\n        },\n        Ike = new Ionoscloud.Vpn.Inputs.IpsecTunnelIkeArgs\n        {\n            DiffieHellmanGroup = \"16-MODP4096\",\n            EncryptionAlgorithm = \"AES256\",\n            IntegrityAlgorithm = \"SHA256\",\n            Lifetime = 86400,\n        },\n        Esps = new[]\n        {\n            new Ionoscloud.Vpn.Inputs.IpsecTunnelEspArgs\n            {\n                DiffieHellmanGroup = \"16-MODP4096\",\n                EncryptionAlgorithm = \"AES256\",\n                IntegrityAlgorithm = \"SHA256\",\n                Lifetime = 3600,\n            },\n        },\n        CloudNetworkCidrs = new[]\n        {\n            \"0.0.0.0/0\",\n        },\n        PeerNetworkCidrs = new[]\n        {\n            \"1.2.3.4/32\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic example\n\t\ttestDatacenter, err := compute.NewDatacenter(ctx, \"test_datacenter\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"test_vpn_gateway_basic\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestLan, err := compute.NewLan(ctx, \"test_lan\", \u0026compute.LanArgs{\n\t\t\tName:         pulumi.String(\"test_lan_basic\"),\n\t\t\tPublic:       pulumi.Bool(false),\n\t\t\tDatacenterId: testDatacenter.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestIpblock, err := compute.NewIPBlock(ctx, \"test_ipblock\", \u0026compute.IPBlockArgs{\n\t\t\tName:     pulumi.String(\"test_ipblock_basic\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := vpn.NewIpsecGateway(ctx, \"example\", \u0026vpn.IpsecGatewayArgs{\n\t\t\tName:     pulumi.String(\"ipsec_gateway_basic\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tGatewayIp: testIpblock.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVersion:     pulumi.String(\"IKEv2\"),\n\t\t\tDescription: pulumi.String(\"This gateway connects site A to VDC X.\"),\n\t\t\tConnections: vpn.IpsecGatewayConnectionArray{\n\t\t\t\t\u0026vpn.IpsecGatewayConnectionArgs{\n\t\t\t\t\tDatacenterId: testDatacenter.ID(),\n\t\t\t\t\tLanId:        testLan.ID(),\n\t\t\t\t\tIpv4Cidr:     pulumi.String(\"192.168.100.10/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpn.NewIpsecTunnel(ctx, \"example\", \u0026vpn.IpsecTunnelArgs{\n\t\t\tLocation:    pulumi.String(\"de/fra\"),\n\t\t\tGatewayId:   example.ID(),\n\t\t\tName:        pulumi.String(\"example-tunnel\"),\n\t\t\tRemoteHost:  pulumi.String(\"vpn.mycompany.com\"),\n\t\t\tDescription: pulumi.String(\"Allows local subnet X to connect to virtual network Y.\"),\n\t\t\tAuth: \u0026vpn.IpsecTunnelAuthArgs{\n\t\t\t\tMethod: pulumi.String(\"PSK\"),\n\t\t\t\tPskKey: pulumi.String(\"X2wosbaw74M8hQGbK3jCCaEusR6CCFRa\"),\n\t\t\t},\n\t\t\tIke: \u0026vpn.IpsecTunnelIkeArgs{\n\t\t\t\tDiffieHellmanGroup:  pulumi.String(\"16-MODP4096\"),\n\t\t\t\tEncryptionAlgorithm: pulumi.String(\"AES256\"),\n\t\t\t\tIntegrityAlgorithm:  pulumi.String(\"SHA256\"),\n\t\t\t\tLifetime:            pulumi.Int(86400),\n\t\t\t},\n\t\t\tEsps: vpn.IpsecTunnelEspArray{\n\t\t\t\t\u0026vpn.IpsecTunnelEspArgs{\n\t\t\t\t\tDiffieHellmanGroup:  pulumi.String(\"16-MODP4096\"),\n\t\t\t\t\tEncryptionAlgorithm: pulumi.String(\"AES256\"),\n\t\t\t\t\tIntegrityAlgorithm:  pulumi.String(\"SHA256\"),\n\t\t\t\t\tLifetime:            pulumi.Int(3600),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCloudNetworkCidrs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t},\n\t\t\tPeerNetworkCidrs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1.2.3.4/32\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.IpsecGateway;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.IpsecGatewayArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.IpsecGatewayConnectionArgs;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.IpsecTunnel;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.IpsecTunnelArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.IpsecTunnelAuthArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.IpsecTunnelIkeArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.IpsecTunnelEspArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic example\n        var testDatacenter = new Datacenter(\"testDatacenter\", DatacenterArgs.builder()\n            .name(\"test_vpn_gateway_basic\")\n            .location(\"de/fra\")\n            .build());\n\n        var testLan = new Lan(\"testLan\", LanArgs.builder()\n            .name(\"test_lan_basic\")\n            .public_(false)\n            .datacenterId(testDatacenter.id())\n            .build());\n\n        var testIpblock = new IPBlock(\"testIpblock\", IPBlockArgs.builder()\n            .name(\"test_ipblock_basic\")\n            .location(\"de/fra\")\n            .size(1)\n            .build());\n\n        var example = new IpsecGateway(\"example\", IpsecGatewayArgs.builder()\n            .name(\"ipsec_gateway_basic\")\n            .location(\"de/fra\")\n            .gatewayIp(testIpblock.ips().applyValue(_ips -\u003e _ips[0]))\n            .version(\"IKEv2\")\n            .description(\"This gateway connects site A to VDC X.\")\n            .connections(IpsecGatewayConnectionArgs.builder()\n                .datacenterId(testDatacenter.id())\n                .lanId(testLan.id())\n                .ipv4Cidr(\"192.168.100.10/24\")\n                .build())\n            .build());\n\n        var exampleIpsecTunnel = new IpsecTunnel(\"exampleIpsecTunnel\", IpsecTunnelArgs.builder()\n            .location(\"de/fra\")\n            .gatewayId(example.id())\n            .name(\"example-tunnel\")\n            .remoteHost(\"vpn.mycompany.com\")\n            .description(\"Allows local subnet X to connect to virtual network Y.\")\n            .auth(IpsecTunnelAuthArgs.builder()\n                .method(\"PSK\")\n                .pskKey(\"X2wosbaw74M8hQGbK3jCCaEusR6CCFRa\")\n                .build())\n            .ike(IpsecTunnelIkeArgs.builder()\n                .diffieHellmanGroup(\"16-MODP4096\")\n                .encryptionAlgorithm(\"AES256\")\n                .integrityAlgorithm(\"SHA256\")\n                .lifetime(86400)\n                .build())\n            .esps(IpsecTunnelEspArgs.builder()\n                .diffieHellmanGroup(\"16-MODP4096\")\n                .encryptionAlgorithm(\"AES256\")\n                .integrityAlgorithm(\"SHA256\")\n                .lifetime(3600)\n                .build())\n            .cloudNetworkCidrs(\"0.0.0.0/0\")\n            .peerNetworkCidrs(\"1.2.3.4/32\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic example\n  testDatacenter:\n    type: ionoscloud:compute:Datacenter\n    name: test_datacenter\n    properties:\n      name: test_vpn_gateway_basic\n      location: de/fra\n  testLan:\n    type: ionoscloud:compute:Lan\n    name: test_lan\n    properties:\n      name: test_lan_basic\n      public: false\n      datacenterId: ${testDatacenter.id}\n  testIpblock:\n    type: ionoscloud:compute:IPBlock\n    name: test_ipblock\n    properties:\n      name: test_ipblock_basic\n      location: de/fra\n      size: 1\n  example:\n    type: ionoscloud:vpn:IpsecGateway\n    properties:\n      name: ipsec_gateway_basic\n      location: de/fra\n      gatewayIp: ${testIpblock.ips[0]}\n      version: IKEv2\n      description: This gateway connects site A to VDC X.\n      connections:\n        - datacenterId: ${testDatacenter.id}\n          lanId: ${testLan.id}\n          ipv4Cidr: 192.168.100.10/24\n  exampleIpsecTunnel:\n    type: ionoscloud:vpn:IpsecTunnel\n    name: example\n    properties:\n      location: de/fra\n      gatewayId: ${example.id}\n      name: example-tunnel\n      remoteHost: vpn.mycompany.com\n      description: Allows local subnet X to connect to virtual network Y.\n      auth:\n        method: PSK\n        pskKey: X2wosbaw74M8hQGbK3jCCaEusR6CCFRa\n      ike:\n        diffieHellmanGroup: 16-MODP4096\n        encryptionAlgorithm: AES256\n        integrityAlgorithm: SHA256\n        lifetime: 86400\n      esps:\n        - diffieHellmanGroup: 16-MODP4096\n          encryptionAlgorithm: AES256\n          integrityAlgorithm: SHA256\n          lifetime: 3600\n      cloudNetworkCidrs:\n        - 0.0.0.0/0\n      peerNetworkCidrs:\n        - 1.2.3.4/32\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe resource can be imported using the \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gatewayId`\" pulumi-lang-dotnet=\"`GatewayId`\" pulumi-lang-go=\"`gatewayId`\" pulumi-lang-python=\"`gateway_id`\" pulumi-lang-yaml=\"`gatewayId`\" pulumi-lang-java=\"`gatewayId`\"\u003e`gatewayId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tunnelId`\" pulumi-lang-dotnet=\"`TunnelId`\" pulumi-lang-go=\"`tunnelId`\" pulumi-lang-python=\"`tunnel_id`\" pulumi-lang-yaml=\"`tunnelId`\" pulumi-lang-java=\"`tunnelId`\"\u003e`tunnelId`\u003c/span\u003e, for example:\n\n```sh\n$ pulumi import ionoscloud:vpn/ipsecTunnel:IpsecTunnel example location:gateway_id:tunnel_id\n```\n\n",
            "properties": {
                "auth": {
                    "$ref": "#/types/ionoscloud:vpn/IpsecTunnelAuth:IpsecTunnelAuth",
                    "description": "[string] Properties with all data needed to define IPSec Authentication. Minimum items: 1. Maximum\nitems: 1.\n"
                },
                "cloudNetworkCidrs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] The network CIDRs on the \"Left\" side that are allowed to connect to the IPSec\ntunnel, i.e. the CIDRs within your IONOS Cloud LAN. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses. Minimum items: 1.\nMaximum items: 20.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] The human-readable description of your IPSec Gateway Tunnel.\n"
                },
                "esps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:vpn/IpsecTunnelEsp:IpsecTunnelEsp"
                    },
                    "description": "[list] Settings for the IPSec SA (ESP) phase. Minimum items: 1. Maximum items: 1.\n"
                },
                "gatewayId": {
                    "type": "string",
                    "description": "[string] The ID of the IPSec Gateway that the tunnel belongs to.\n"
                },
                "ike": {
                    "$ref": "#/types/ionoscloud:vpn/IpsecTunnelIke:IpsecTunnelIke",
                    "description": "[list] Settings for the initial security exchange phase. Minimum items: 1. Maximum items: 1.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the IPSec Gateway Tunnel. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the IPSec Gateway Tunnel.\n"
                },
                "peerNetworkCidrs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] The network CIDRs on the \"Right\" side that are allowed to connect to the IPSec\ntunnel. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses. Minimum items: 1. Maximum items: 20.\n"
                },
                "remoteHost": {
                    "type": "string",
                    "description": "[string] The remote peer host fully qualified domain name or public IPV4 IP to connect to.\n"
                }
            },
            "required": [
                "auth",
                "cloudNetworkCidrs",
                "esps",
                "gatewayId",
                "ike",
                "name",
                "peerNetworkCidrs",
                "remoteHost"
            ],
            "inputProperties": {
                "auth": {
                    "$ref": "#/types/ionoscloud:vpn/IpsecTunnelAuth:IpsecTunnelAuth",
                    "description": "[string] Properties with all data needed to define IPSec Authentication. Minimum items: 1. Maximum\nitems: 1.\n"
                },
                "cloudNetworkCidrs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] The network CIDRs on the \"Left\" side that are allowed to connect to the IPSec\ntunnel, i.e. the CIDRs within your IONOS Cloud LAN. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses. Minimum items: 1.\nMaximum items: 20.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] The human-readable description of your IPSec Gateway Tunnel.\n"
                },
                "esps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:vpn/IpsecTunnelEsp:IpsecTunnelEsp"
                    },
                    "description": "[list] Settings for the IPSec SA (ESP) phase. Minimum items: 1. Maximum items: 1.\n"
                },
                "gatewayId": {
                    "type": "string",
                    "description": "[string] The ID of the IPSec Gateway that the tunnel belongs to.\n"
                },
                "ike": {
                    "$ref": "#/types/ionoscloud:vpn/IpsecTunnelIke:IpsecTunnelIke",
                    "description": "[list] Settings for the initial security exchange phase. Minimum items: 1. Maximum items: 1.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the IPSec Gateway Tunnel. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The name of the IPSec Gateway Tunnel.\n"
                },
                "peerNetworkCidrs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list] The network CIDRs on the \"Right\" side that are allowed to connect to the IPSec\ntunnel. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses. Minimum items: 1. Maximum items: 20.\n"
                },
                "remoteHost": {
                    "type": "string",
                    "description": "[string] The remote peer host fully qualified domain name or public IPV4 IP to connect to.\n"
                }
            },
            "requiredInputs": [
                "auth",
                "cloudNetworkCidrs",
                "esps",
                "gatewayId",
                "ike",
                "peerNetworkCidrs",
                "remoteHost"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IpsecTunnel resources.\n",
                "properties": {
                    "auth": {
                        "$ref": "#/types/ionoscloud:vpn/IpsecTunnelAuth:IpsecTunnelAuth",
                        "description": "[string] Properties with all data needed to define IPSec Authentication. Minimum items: 1. Maximum\nitems: 1.\n"
                    },
                    "cloudNetworkCidrs": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] The network CIDRs on the \"Left\" side that are allowed to connect to the IPSec\ntunnel, i.e. the CIDRs within your IONOS Cloud LAN. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses. Minimum items: 1.\nMaximum items: 20.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "[string] The human-readable description of your IPSec Gateway Tunnel.\n"
                    },
                    "esps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/IpsecTunnelEsp:IpsecTunnelEsp"
                        },
                        "description": "[list] Settings for the IPSec SA (ESP) phase. Minimum items: 1. Maximum items: 1.\n"
                    },
                    "gatewayId": {
                        "type": "string",
                        "description": "[string] The ID of the IPSec Gateway that the tunnel belongs to.\n"
                    },
                    "ike": {
                        "$ref": "#/types/ionoscloud:vpn/IpsecTunnelIke:IpsecTunnelIke",
                        "description": "[list] Settings for the initial security exchange phase. Minimum items: 1. Maximum items: 1.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the IPSec Gateway Tunnel. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the IPSec Gateway Tunnel.\n"
                    },
                    "peerNetworkCidrs": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list] The network CIDRs on the \"Right\" side that are allowed to connect to the IPSec\ntunnel. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses. Minimum items: 1. Maximum items: 20.\n"
                    },
                    "remoteHost": {
                        "type": "string",
                        "description": "[string] The remote peer host fully qualified domain name or public IPV4 IP to connect to.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:vpn/wireguardGateway:WireguardGateway": {
            "description": "## Overview\n\nThe \u003cspan pulumi-lang-nodejs=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-dotnet=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-go=\"`vpn.WireguardGateway`\" pulumi-lang-python=\"`vpn.WireguardGateway`\" pulumi-lang-yaml=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-java=\"`ionoscloud.vpn.WireguardGateway`\"\u003e`ionoscloud.vpn.WireguardGateway`\u003c/span\u003e resource manages a WireGuard Gateway within the IONOS Cloud infrastructure. \nThis resource facilitates the creation, management, and deletion of WireGuard VPN Gateways, enabling secure connections between your network resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst datacenterExample = new ionoscloud.compute.Datacenter(\"datacenter_example\", {\n    name: \"datacenter_example\",\n    location: \"de/fra\",\n});\nconst ipblockExample = new ionoscloud.compute.IPBlock(\"ipblock_example\", {\n    location: \"de/fra\",\n    size: 1,\n    name: \"ipblock_example\",\n});\nconst lanExample = new ionoscloud.compute.Lan(\"lan_example\", {\n    name: \"lan_example\",\n    datacenterId: datacenterExample.id,\n});\nconst gateway = new ionoscloud.vpn.WireguardGateway(\"gateway\", {\n    location: \"de/fra\",\n    name: \"gateway_example\",\n    description: \"description\",\n    privateKey: \"private\",\n    gatewayIp: ipblockExample.ips[0],\n    interfaceIpv4Cidr: \"192.168.1.100/24\",\n    connections: [{\n        datacenterId: datacenterExample.id,\n        lanId: lanExample.id,\n        ipv4Cidr: \"192.168.1.108/24\",\n    }],\n    maintenanceWindow: {\n        dayOfTheWeek: \"Monday\",\n        time: \"09:00:00\",\n    },\n    tier: \"STANDARD\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\ndatacenter_example = ionoscloud.compute.Datacenter(\"datacenter_example\",\n    name=\"datacenter_example\",\n    location=\"de/fra\")\nipblock_example = ionoscloud.compute.IPBlock(\"ipblock_example\",\n    location=\"de/fra\",\n    size=1,\n    name=\"ipblock_example\")\nlan_example = ionoscloud.compute.Lan(\"lan_example\",\n    name=\"lan_example\",\n    datacenter_id=datacenter_example.id)\ngateway = ionoscloud.vpn.WireguardGateway(\"gateway\",\n    location=\"de/fra\",\n    name=\"gateway_example\",\n    description=\"description\",\n    private_key=\"private\",\n    gateway_ip=ipblock_example.ips[0],\n    interface_ipv4_cidr=\"192.168.1.100/24\",\n    connections=[{\n        \"datacenter_id\": datacenter_example.id,\n        \"lan_id\": lan_example.id,\n        \"ipv4_cidr\": \"192.168.1.108/24\",\n    }],\n    maintenance_window={\n        \"day_of_the_week\": \"Monday\",\n        \"time\": \"09:00:00\",\n    },\n    tier=\"STANDARD\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var datacenterExample = new Ionoscloud.Compute.Datacenter(\"datacenter_example\", new()\n    {\n        Name = \"datacenter_example\",\n        Location = \"de/fra\",\n    });\n\n    var ipblockExample = new Ionoscloud.Compute.IPBlock(\"ipblock_example\", new()\n    {\n        Location = \"de/fra\",\n        Size = 1,\n        Name = \"ipblock_example\",\n    });\n\n    var lanExample = new Ionoscloud.Compute.Lan(\"lan_example\", new()\n    {\n        Name = \"lan_example\",\n        DatacenterId = datacenterExample.Id,\n    });\n\n    var gateway = new Ionoscloud.Vpn.WireguardGateway(\"gateway\", new()\n    {\n        Location = \"de/fra\",\n        Name = \"gateway_example\",\n        Description = \"description\",\n        PrivateKey = \"private\",\n        GatewayIp = ipblockExample.Ips.Apply(ips =\u003e ips[0]),\n        InterfaceIpv4Cidr = \"192.168.1.100/24\",\n        Connections = new[]\n        {\n            new Ionoscloud.Vpn.Inputs.WireguardGatewayConnectionArgs\n            {\n                DatacenterId = datacenterExample.Id,\n                LanId = lanExample.Id,\n                Ipv4Cidr = \"192.168.1.108/24\",\n            },\n        },\n        MaintenanceWindow = new Ionoscloud.Vpn.Inputs.WireguardGatewayMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Monday\",\n            Time = \"09:00:00\",\n        },\n        Tier = \"STANDARD\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatacenterExample, err := compute.NewDatacenter(ctx, \"datacenter_example\", \u0026compute.DatacenterArgs{\n\t\t\tName:     pulumi.String(\"datacenter_example\"),\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tipblockExample, err := compute.NewIPBlock(ctx, \"ipblock_example\", \u0026compute.IPBlockArgs{\n\t\t\tLocation: pulumi.String(\"de/fra\"),\n\t\t\tSize:     pulumi.Int(1),\n\t\t\tName:     pulumi.String(\"ipblock_example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlanExample, err := compute.NewLan(ctx, \"lan_example\", \u0026compute.LanArgs{\n\t\t\tName:         pulumi.String(\"lan_example\"),\n\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vpn.NewWireguardGateway(ctx, \"gateway\", \u0026vpn.WireguardGatewayArgs{\n\t\t\tLocation:    pulumi.String(\"de/fra\"),\n\t\t\tName:        pulumi.String(\"gateway_example\"),\n\t\t\tDescription: pulumi.String(\"description\"),\n\t\t\tPrivateKey:  pulumi.String(\"private\"),\n\t\t\tGatewayIp: ipblockExample.Ips.ApplyT(func(ips []string) (string, error) {\n\t\t\t\treturn ips[0], nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tInterfaceIpv4Cidr: pulumi.String(\"192.168.1.100/24\"),\n\t\t\tConnections: vpn.WireguardGatewayConnectionArray{\n\t\t\t\t\u0026vpn.WireguardGatewayConnectionArgs{\n\t\t\t\t\tDatacenterId: datacenterExample.ID(),\n\t\t\t\t\tLanId:        lanExample.ID(),\n\t\t\t\t\tIpv4Cidr:     pulumi.String(\"192.168.1.108/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026vpn.WireguardGatewayMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Monday\"),\n\t\t\t\tTime:         pulumi.String(\"09:00:00\"),\n\t\t\t},\n\t\t\tTier: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Datacenter;\nimport com.ionoscloud.pulumi.ionoscloud.compute.DatacenterArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlock;\nimport com.ionoscloud.pulumi.ionoscloud.compute.IPBlockArgs;\nimport com.ionoscloud.pulumi.ionoscloud.compute.Lan;\nimport com.ionoscloud.pulumi.ionoscloud.compute.LanArgs;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.WireguardGateway;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.WireguardGatewayArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.WireguardGatewayConnectionArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.WireguardGatewayMaintenanceWindowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var datacenterExample = new Datacenter(\"datacenterExample\", DatacenterArgs.builder()\n            .name(\"datacenter_example\")\n            .location(\"de/fra\")\n            .build());\n\n        var ipblockExample = new IPBlock(\"ipblockExample\", IPBlockArgs.builder()\n            .location(\"de/fra\")\n            .size(1)\n            .name(\"ipblock_example\")\n            .build());\n\n        var lanExample = new Lan(\"lanExample\", LanArgs.builder()\n            .name(\"lan_example\")\n            .datacenterId(datacenterExample.id())\n            .build());\n\n        var gateway = new WireguardGateway(\"gateway\", WireguardGatewayArgs.builder()\n            .location(\"de/fra\")\n            .name(\"gateway_example\")\n            .description(\"description\")\n            .privateKey(\"private\")\n            .gatewayIp(ipblockExample.ips().applyValue(_ips -\u003e _ips[0]))\n            .interfaceIpv4Cidr(\"192.168.1.100/24\")\n            .connections(WireguardGatewayConnectionArgs.builder()\n                .datacenterId(datacenterExample.id())\n                .lanId(lanExample.id())\n                .ipv4Cidr(\"192.168.1.108/24\")\n                .build())\n            .maintenanceWindow(WireguardGatewayMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Monday\")\n                .time(\"09:00:00\")\n                .build())\n            .tier(\"STANDARD\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  datacenterExample:\n    type: ionoscloud:compute:Datacenter\n    name: datacenter_example\n    properties:\n      name: datacenter_example\n      location: de/fra\n  ipblockExample:\n    type: ionoscloud:compute:IPBlock\n    name: ipblock_example\n    properties:\n      location: de/fra\n      size: 1\n      name: ipblock_example\n  lanExample:\n    type: ionoscloud:compute:Lan\n    name: lan_example\n    properties:\n      name: lan_example\n      datacenterId: ${datacenterExample.id}\n  gateway:\n    type: ionoscloud:vpn:WireguardGateway\n    properties:\n      location: de/fra\n      name: gateway_example\n      description: description\n      privateKey: private\n      gatewayIp: ${ipblockExample.ips[0]}\n      interfaceIpv4Cidr: 192.168.1.100/24\n      connections:\n        - datacenterId: ${datacenterExample.id}\n          lanId: ${lanExample.id}\n          ipv4Cidr: 192.168.1.108/24\n      maintenanceWindow:\n        dayOfTheWeek: Monday\n        time: 09:00:00\n      tier: STANDARD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWireGuard Gateways can be imported using their ID:\n\n```sh\n$ pulumi import ionoscloud:vpn/wireguardGateway:WireguardGateway example_gateway location:id\n```\n\n",
            "properties": {
                "connections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:vpn/WireguardGatewayConnection:WireguardGatewayConnection"
                    },
                    "description": "[Block] The connection configuration for the WireGuard Gateway. This block supports fields documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[String] A description of the WireGuard Gateway.\n"
                },
                "gatewayIp": {
                    "type": "string",
                    "description": "[String] The IP address of the WireGuard Gateway.\n"
                },
                "interfaceIpv4Cidr": {
                    "type": "string",
                    "description": "[String] The IPv4 CIDR for the WireGuard Gateway interface.\n"
                },
                "interfaceIpv6Cidr": {
                    "type": "string",
                    "description": "[String] The IPv6 CIDR for the WireGuard Gateway interface.\n"
                },
                "listenPort": {
                    "type": "integer"
                },
                "location": {
                    "type": "string",
                    "description": "[String] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:vpn/WireguardGatewayMaintenanceWindow:WireguardGatewayMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[String] The name of the WireGuard Gateway.\n"
                },
                "privateKey": {
                    "type": "string",
                    "description": "[String] The private key for the WireGuard Gateway. To be created with the wg utility.\n",
                    "secret": true
                },
                "publicKey": {
                    "type": "string",
                    "description": "(Computed)[String] The public key for the WireGuard Gateway.\n-\n\u003e **⚠ NOTE:** `IONOS_API_URL_VPN` can be used to set a custom API URL for the resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                },
                "status": {
                    "type": "string",
                    "description": "(Computed)[String] The current status of the WireGuard Gateway.\n"
                },
                "tier": {
                    "type": "string",
                    "description": "(Computed)[string] Gateway performance options.  See product documentation for full details. Options: STANDARD, STANDARD_HA, ENHANCED, ENHANCED_HA, PREMIUM, PREMIUM_HA.\n"
                }
            },
            "required": [
                "connections",
                "gatewayIp",
                "maintenanceWindow",
                "name",
                "privateKey",
                "publicKey",
                "status"
            ],
            "inputProperties": {
                "connections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/ionoscloud:vpn/WireguardGatewayConnection:WireguardGatewayConnection"
                    },
                    "description": "[Block] The connection configuration for the WireGuard Gateway. This block supports fields documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[String] A description of the WireGuard Gateway.\n"
                },
                "gatewayIp": {
                    "type": "string",
                    "description": "[String] The IP address of the WireGuard Gateway.\n"
                },
                "interfaceIpv4Cidr": {
                    "type": "string",
                    "description": "[String] The IPv4 CIDR for the WireGuard Gateway interface.\n"
                },
                "interfaceIpv6Cidr": {
                    "type": "string",
                    "description": "[String] The IPv6 CIDR for the WireGuard Gateway interface.\n"
                },
                "listenPort": {
                    "type": "integer"
                },
                "location": {
                    "type": "string",
                    "description": "[String] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceWindow": {
                    "$ref": "#/types/ionoscloud:vpn/WireguardGatewayMaintenanceWindow:WireguardGatewayMaintenanceWindow",
                    "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[String] The name of the WireGuard Gateway.\n"
                },
                "privateKey": {
                    "type": "string",
                    "description": "[String] The private key for the WireGuard Gateway. To be created with the wg utility.\n",
                    "secret": true
                },
                "tier": {
                    "type": "string",
                    "description": "(Computed)[string] Gateway performance options.  See product documentation for full details. Options: STANDARD, STANDARD_HA, ENHANCED, ENHANCED_HA, PREMIUM, PREMIUM_HA.\n"
                }
            },
            "requiredInputs": [
                "connections",
                "gatewayIp",
                "privateKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering WireguardGateway resources.\n",
                "properties": {
                    "connections": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/WireguardGatewayConnection:WireguardGatewayConnection"
                        },
                        "description": "[Block] The connection configuration for the WireGuard Gateway. This block supports fields documented below.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "[String] A description of the WireGuard Gateway.\n"
                    },
                    "gatewayIp": {
                        "type": "string",
                        "description": "[String] The IP address of the WireGuard Gateway.\n"
                    },
                    "interfaceIpv4Cidr": {
                        "type": "string",
                        "description": "[String] The IPv4 CIDR for the WireGuard Gateway interface.\n"
                    },
                    "interfaceIpv6Cidr": {
                        "type": "string",
                        "description": "[String] The IPv6 CIDR for the WireGuard Gateway interface.\n"
                    },
                    "listenPort": {
                        "type": "integer"
                    },
                    "location": {
                        "type": "string",
                        "description": "[String] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                        "willReplaceOnChanges": true
                    },
                    "maintenanceWindow": {
                        "$ref": "#/types/ionoscloud:vpn/WireguardGatewayMaintenanceWindow:WireguardGatewayMaintenanceWindow",
                        "description": "(Computed) A weekly 4 hour-long window, during which maintenance might occur.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[String] The name of the WireGuard Gateway.\n"
                    },
                    "privateKey": {
                        "type": "string",
                        "description": "[String] The private key for the WireGuard Gateway. To be created with the wg utility.\n",
                        "secret": true
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "(Computed)[String] The public key for the WireGuard Gateway.\n-\n\u003e **⚠ NOTE:** `IONOS_API_URL_VPN` can be used to set a custom API URL for the resource. \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e field needs to be empty, otherwise it will override the custom API URL. Setting \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e or `IONOS_API_URL` does not have any effect.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "(Computed)[String] The current status of the WireGuard Gateway.\n"
                    },
                    "tier": {
                        "type": "string",
                        "description": "(Computed)[string] Gateway performance options.  See product documentation for full details. Options: STANDARD, STANDARD_HA, ENHANCED, ENHANCED_HA, PREMIUM, PREMIUM_HA.\n"
                    }
                },
                "type": "object"
            }
        },
        "ionoscloud:vpn/wireguardPeer:WireguardPeer": {
            "description": "This page provides an overview of the \u003cspan pulumi-lang-nodejs=\"`ionoscloud.vpn.WireguardPeer`\" pulumi-lang-dotnet=\"`ionoscloud.vpn.WireguardPeer`\" pulumi-lang-go=\"`vpn.WireguardPeer`\" pulumi-lang-python=\"`vpn.WireguardPeer`\" pulumi-lang-yaml=\"`ionoscloud.vpn.WireguardPeer`\" pulumi-lang-java=\"`ionoscloud.vpn.WireguardPeer`\"\u003e`ionoscloud.vpn.WireguardPeer`\u003c/span\u003e resource, which allows you to manage a WireGuard Peer in your cloud infrastructure. \nThis resource enables the creation, management, and deletion of a WireGuard VPN Peer, facilitating secure connections between your network resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = new ionoscloud.vpn.WireguardPeer(\"example\", {\n    location: \"de/fra\",\n    gatewayId: \"your gateway id here\",\n    name: \"example-gateway\",\n    description: \"An example WireGuard peer\",\n    endpoint: {\n        host: \"1.2.3.4\",\n        port: 51820,\n    },\n    allowedIps: [\n        \"10.0.0.0/8\",\n        \"192.168.1.0/24\",\n    ],\n    publicKey: \"examplePublicKey==\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.vpn.WireguardPeer(\"example\",\n    location=\"de/fra\",\n    gateway_id=\"your gateway id here\",\n    name=\"example-gateway\",\n    description=\"An example WireGuard peer\",\n    endpoint={\n        \"host\": \"1.2.3.4\",\n        \"port\": 51820,\n    },\n    allowed_ips=[\n        \"10.0.0.0/8\",\n        \"192.168.1.0/24\",\n    ],\n    public_key=\"examplePublicKey==\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Ionoscloud.Vpn.WireguardPeer(\"example\", new()\n    {\n        Location = \"de/fra\",\n        GatewayId = \"your gateway id here\",\n        Name = \"example-gateway\",\n        Description = \"An example WireGuard peer\",\n        Endpoint = new Ionoscloud.Vpn.Inputs.WireguardPeerEndpointArgs\n        {\n            Host = \"1.2.3.4\",\n            Port = 51820,\n        },\n        AllowedIps = new[]\n        {\n            \"10.0.0.0/8\",\n            \"192.168.1.0/24\",\n        },\n        PublicKey = \"examplePublicKey==\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpn.NewWireguardPeer(ctx, \"example\", \u0026vpn.WireguardPeerArgs{\n\t\t\tLocation:    pulumi.String(\"de/fra\"),\n\t\t\tGatewayId:   pulumi.String(\"your gateway id here\"),\n\t\t\tName:        pulumi.String(\"example-gateway\"),\n\t\t\tDescription: pulumi.String(\"An example WireGuard peer\"),\n\t\t\tEndpoint: \u0026vpn.WireguardPeerEndpointArgs{\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tPort: pulumi.Int(51820),\n\t\t\t},\n\t\t\tAllowedIps: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tPublicKey: pulumi.String(\"examplePublicKey==\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.WireguardPeer;\nimport com.ionoscloud.pulumi.ionoscloud.vpn.WireguardPeerArgs;\nimport com.pulumi.ionoscloud.vpn.inputs.WireguardPeerEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new WireguardPeer(\"example\", WireguardPeerArgs.builder()\n            .location(\"de/fra\")\n            .gatewayId(\"your gateway id here\")\n            .name(\"example-gateway\")\n            .description(\"An example WireGuard peer\")\n            .endpoint(WireguardPeerEndpointArgs.builder()\n                .host(\"1.2.3.4\")\n                .port(51820)\n                .build())\n            .allowedIps(            \n                \"10.0.0.0/8\",\n                \"192.168.1.0/24\")\n            .publicKey(\"examplePublicKey==\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: ionoscloud:vpn:WireguardPeer\n    properties:\n      location: de/fra\n      gatewayId: your gateway id here\n      name: example-gateway\n      description: An example WireGuard peer\n      endpoint:\n        host: 1.2.3.4\n        port: 51820\n      allowedIps:\n        - 10.0.0.0/8\n        - 192.168.1.0/24\n      publicKey: examplePublicKey==\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWireGuard Peers can be imported using the \u003cspan pulumi-lang-nodejs=\"`gatewayId`\" pulumi-lang-dotnet=\"`GatewayId`\" pulumi-lang-go=\"`gatewayId`\" pulumi-lang-python=\"`gateway_id`\" pulumi-lang-yaml=\"`gatewayId`\" pulumi-lang-java=\"`gatewayId`\"\u003e`gatewayId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import ionoscloud:vpn/wireguardPeer:WireguardPeer example gateway_id:peer_id\n```\n\n",
            "properties": {
                "allowedIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list, string] A list of subnet CIDRs that are allowed to connect to the WireGuard Gateway.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] A description of the WireGuard Gateway.\n"
                },
                "endpoint": {
                    "$ref": "#/types/ionoscloud:vpn/WireguardPeerEndpoint:WireguardPeerEndpoint",
                    "description": "[block] An endpoint configuration block for the WireGuard Gateway. The structure of this block is as follows:\n"
                },
                "gatewayId": {
                    "type": "string",
                    "description": "[string] The ID of the WireGuard Gateway that the Peer will connect to.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                },
                "name": {
                    "type": "string",
                    "description": "[string] The human-readable name of the WireGuard Gateway.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "[string] The public key for the WireGuard Gateway.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the WireGuard Gateway Peer.\n"
                }
            },
            "required": [
                "allowedIps",
                "gatewayId",
                "name",
                "publicKey",
                "status"
            ],
            "inputProperties": {
                "allowedIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "[list, string] A list of subnet CIDRs that are allowed to connect to the WireGuard Gateway.\n"
                },
                "description": {
                    "type": "string",
                    "description": "[string] A description of the WireGuard Gateway.\n"
                },
                "endpoint": {
                    "$ref": "#/types/ionoscloud:vpn/WireguardPeerEndpoint:WireguardPeerEndpoint",
                    "description": "[block] An endpoint configuration block for the WireGuard Gateway. The structure of this block is as follows:\n"
                },
                "gatewayId": {
                    "type": "string",
                    "description": "[string] The ID of the WireGuard Gateway that the Peer will connect to.\n"
                },
                "location": {
                    "type": "string",
                    "description": "[string] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "[string] The human-readable name of the WireGuard Gateway.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "[string] The public key for the WireGuard Gateway.\n"
                }
            },
            "requiredInputs": [
                "allowedIps",
                "gatewayId",
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering WireguardPeer resources.\n",
                "properties": {
                    "allowedIps": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list, string] A list of subnet CIDRs that are allowed to connect to the WireGuard Gateway.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "[string] A description of the WireGuard Gateway.\n"
                    },
                    "endpoint": {
                        "$ref": "#/types/ionoscloud:vpn/WireguardPeerEndpoint:WireguardPeerEndpoint",
                        "description": "[block] An endpoint configuration block for the WireGuard Gateway. The structure of this block is as follows:\n"
                    },
                    "gatewayId": {
                        "type": "string",
                        "description": "[string] The ID of the WireGuard Gateway that the Peer will connect to.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The human-readable name of the WireGuard Gateway.\n"
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "[string] The public key for the WireGuard Gateway.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the WireGuard Gateway Peer.\n"
                    }
                },
                "type": "object"
            }
        }
    },
    "functions": {
        "ionoscloud:alb/getBalancer:getBalancer": {
            "description": "The **Application Load Balancer data source** can be used to search for and return an existing Application Load Balancer.\nYou can provide a string for the name parameter which will be compared with provisioned Application Load Balancers.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n## Example Usage\n\n### By Id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.alb.getBalancer({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    id: \"alb_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.alb.get_balancer(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    id=\"alb_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Alb.GetBalancer.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Id = \"alb_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alb.LookupBalancer(ctx, \u0026alb.LookupBalancerArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tId:           pulumi.StringRef(\"alb_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.alb.AlbFunctions;\nimport com.pulumi.ionoscloud.alb.inputs.GetBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AlbFunctions.getBalancer(GetBalancerArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .id(\"alb_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:alb:getBalancer\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        id: alb_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.alb.getBalancer({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"ALB name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.alb.get_balancer(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"ALB name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Alb.GetBalancer.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"ALB name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alb.LookupBalancer(ctx, \u0026alb.LookupBalancerArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tName:         pulumi.StringRef(\"ALB name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.alb.AlbFunctions;\nimport com.pulumi.ionoscloud.alb.inputs.GetBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AlbFunctions.getBalancer(GetBalancerArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"ALB name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:alb:getBalancer\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        name: ALB name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name with Partial Match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.alb.getBalancer({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"name\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.alb.get_balancer(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"name\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Alb.GetBalancer.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"name\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alb.LookupBalancer(ctx, \u0026alb.LookupBalancerArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tName:         pulumi.StringRef(\"name\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.alb.AlbFunctions;\nimport com.pulumi.ionoscloud.alb.inputs.GetBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AlbFunctions.getBalancer(GetBalancerArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"name\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:alb:getBalancer\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        name: name\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBalancer.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the application load balancer you want to search for.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing application load balancer that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using name argument. Default value is false.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBalancer.\n",
                "properties": {
                    "centralLogging": {
                        "description": "Turn logging on and off for this product. Default value is 'false'.\n",
                        "type": "boolean"
                    },
                    "datacenterId": {
                        "type": "string"
                    },
                    "flowlogs": {
                        "description": "Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:alb/getBalancerFlowlog:getBalancerFlowlog"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "Id of the application load balancer.\n",
                        "type": "string"
                    },
                    "ips": {
                        "description": "Collection of the Application Load Balancer IP addresses. (Inbound and outbound) IPs of the listenerLan are customer-reserved public IPs for the public Load Balancers, and private IPs for the private Load Balancers.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "lbPrivateIps": {
                        "description": "Collection of private IP addresses with the subnet mask of the Application Load Balancer. IPs must contain valid a subnet mask. If no IP is provided, the system will generate an IP with /24 subnet.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "listenerLan": {
                        "description": "ID of the listening (inbound) LAN.\n",
                        "type": "integer"
                    },
                    "location": {
                        "type": "string"
                    },
                    "loggingFormat": {
                        "type": "string"
                    },
                    "name": {
                        "description": "Specifies the name of the flow log.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "targetLan": {
                        "description": "ID of the balanced private target LAN (outbound).\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "centralLogging",
                    "datacenterId",
                    "flowlogs",
                    "id",
                    "ips",
                    "lbPrivateIps",
                    "listenerLan",
                    "loggingFormat",
                    "name",
                    "targetLan"
                ],
                "type": "object"
            }
        },
        "ionoscloud:alb/getForwardingRule:getForwardingRule": {
            "description": "The Application Load Balancer Forwarding Rule data source can be used to search for and return an existing Application Load Balancer Forwarding Rules.\nYou can provide a string for the name parameter which will be compared with provisioned Application Load Balancers Forwarding Rules.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n## Example Usage\n\n### By Id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.alb.getForwardingRule({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    applicationLoadbalancerId: exampleIonoscloudApplicationLoadbalancer.id,\n    id: \"alb_fwr_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.alb.get_forwarding_rule(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    application_loadbalancer_id=example_ionoscloud_application_loadbalancer[\"id\"],\n    id=\"alb_fwr_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Alb.GetForwardingRule.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ApplicationLoadbalancerId = exampleIonoscloudApplicationLoadbalancer.Id,\n        Id = \"alb_fwr_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alb.LookupForwardingRule(ctx, \u0026alb.LookupForwardingRuleArgs{\n\t\t\tDatacenterId:              exampleIonoscloudDatacenter.Id,\n\t\t\tApplicationLoadbalancerId: exampleIonoscloudApplicationLoadbalancer.Id,\n\t\t\tId:                        pulumi.StringRef(\"alb_fwr_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.alb.AlbFunctions;\nimport com.pulumi.ionoscloud.alb.inputs.GetForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AlbFunctions.getForwardingRule(GetForwardingRuleArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .applicationLoadbalancerId(exampleIonoscloudApplicationLoadbalancer.id())\n            .id(\"alb_fwr_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:alb:getForwardingRule\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        applicationLoadbalancerId: ${exampleIonoscloudApplicationLoadbalancer.id}\n        id: alb_fwr_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.alb.getForwardingRule({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    applicationLoadbalancerId: exampleIonoscloudApplicationLoadbalancer.id,\n    name: \"ALB FR Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.alb.get_forwarding_rule(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    application_loadbalancer_id=example_ionoscloud_application_loadbalancer[\"id\"],\n    name=\"ALB FR Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Alb.GetForwardingRule.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ApplicationLoadbalancerId = exampleIonoscloudApplicationLoadbalancer.Id,\n        Name = \"ALB FR Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alb.LookupForwardingRule(ctx, \u0026alb.LookupForwardingRuleArgs{\n\t\t\tDatacenterId:              exampleIonoscloudDatacenter.Id,\n\t\t\tApplicationLoadbalancerId: exampleIonoscloudApplicationLoadbalancer.Id,\n\t\t\tName:                      pulumi.StringRef(\"ALB FR Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.alb.AlbFunctions;\nimport com.pulumi.ionoscloud.alb.inputs.GetForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AlbFunctions.getForwardingRule(GetForwardingRuleArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .applicationLoadbalancerId(exampleIonoscloudApplicationLoadbalancer.id())\n            .name(\"ALB FR Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:alb:getForwardingRule\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        applicationLoadbalancerId: ${exampleIonoscloudApplicationLoadbalancer.id}\n        name: ALB FR Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name with Partial Match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.alb.getForwardingRule({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    applicationLoadbalancerId: exampleIonoscloudApplicationLoadbalancer.id,\n    name: \"Example\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.alb.get_forwarding_rule(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    application_loadbalancer_id=example_ionoscloud_application_loadbalancer[\"id\"],\n    name=\"Example\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Alb.GetForwardingRule.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        ApplicationLoadbalancerId = exampleIonoscloudApplicationLoadbalancer.Id,\n        Name = \"Example\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/alb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alb.LookupForwardingRule(ctx, \u0026alb.LookupForwardingRuleArgs{\n\t\t\tDatacenterId:              exampleIonoscloudDatacenter.Id,\n\t\t\tApplicationLoadbalancerId: exampleIonoscloudApplicationLoadbalancer.Id,\n\t\t\tName:                      pulumi.StringRef(\"Example\"),\n\t\t\tPartialMatch:              pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.alb.AlbFunctions;\nimport com.pulumi.ionoscloud.alb.inputs.GetForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AlbFunctions.getForwardingRule(GetForwardingRuleArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .applicationLoadbalancerId(exampleIonoscloudApplicationLoadbalancer.id())\n            .name(\"Example\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:alb:getForwardingRule\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        applicationLoadbalancerId: ${exampleIonoscloudApplicationLoadbalancer.id}\n        name: Example\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getForwardingRule.\n",
                "properties": {
                    "applicationLoadbalancerId": {
                        "type": "string",
                        "description": "Application Load Balancer's UUID.\n"
                    },
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the application load balancer you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location for redirecting; mandatory and valid only for REDIRECT actions.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing application load balancer that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using name argument. Default value is false.\n\nBoth \u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`applicationLoadbalancerId`\" pulumi-lang-dotnet=\"`ApplicationLoadbalancerId`\" pulumi-lang-go=\"`applicationLoadbalancerId`\" pulumi-lang-python=\"`application_loadbalancer_id`\" pulumi-lang-yaml=\"`applicationLoadbalancerId`\" pulumi-lang-java=\"`applicationLoadbalancerId`\"\u003e`applicationLoadbalancerId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object",
                "required": [
                    "applicationLoadbalancerId",
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getForwardingRule.\n",
                "properties": {
                    "applicationLoadbalancerId": {
                        "type": "string"
                    },
                    "clientTimeout": {
                        "description": "The maximum time in milliseconds to wait for the client to acknowledge or send data; default is 50,000 (50 seconds).\n- `server certificates` - Array of items in that collection.\n",
                        "type": "integer"
                    },
                    "datacenterId": {
                        "type": "string"
                    },
                    "httpRules": {
                        "description": "Array of items in that collection\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:alb/getForwardingRuleHttpRule:getForwardingRuleHttpRule"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "Id of Application Load Balancer Forwarding Rule\n",
                        "type": "string"
                    },
                    "listenerIp": {
                        "description": "Listening (inbound) IP.\n",
                        "type": "string"
                    },
                    "listenerPort": {
                        "description": "Listening (inbound) port number; valid range is 1 to 65535.\n",
                        "type": "integer"
                    },
                    "location": {
                        "description": "The location for redirecting; mandatory and valid only for REDIRECT actions.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The unique name of the Application Load Balancer HTTP rule.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "protocol": {
                        "description": "Balancing protocol.\n",
                        "type": "string"
                    },
                    "serverCertificates": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "applicationLoadbalancerId",
                    "clientTimeout",
                    "datacenterId",
                    "httpRules",
                    "id",
                    "listenerIp",
                    "listenerPort",
                    "name",
                    "protocol",
                    "serverCertificates"
                ],
                "type": "object"
            }
        },
        "ionoscloud:autoscaling/getGroup:getGroup": {
            "description": "The autoscaling group data source can be used to search for and return an existing Autoscaling Group. You can provide a string for the name or id parameters which will be compared with provisioned Autoscaling Groups. If a single match is found, it will be returned.\n\n## Example Usage\n\n### By Id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst autoscalingGroup = ionoscloud.autoscaling.getGroup({\n    id: \"autoscaling_group_uuid\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nautoscaling_group = ionoscloud.autoscaling.get_group(id=\"autoscaling_group_uuid\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var autoscalingGroup = Ionoscloud.Autoscaling.GetGroup.Invoke(new()\n    {\n        Id = \"autoscaling_group_uuid\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/autoscaling\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := autoscaling.LookupGroup(ctx, \u0026autoscaling.LookupGroupArgs{\n\t\t\tId: pulumi.StringRef(\"autoscaling_group_uuid\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.autoscaling.AutoscalingFunctions;\nimport com.pulumi.ionoscloud.autoscaling.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var autoscalingGroup = AutoscalingFunctions.getGroup(GetGroupArgs.builder()\n            .id(\"autoscaling_group_uuid\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  autoscalingGroup:\n    fn::invoke:\n      function: ionoscloud:autoscaling:getGroup\n      arguments:\n        id: autoscaling_group_uuid\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst autoscalingGroup = ionoscloud.autoscaling.getGroup({\n    name: \"test_ds\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nautoscaling_group = ionoscloud.autoscaling.get_group(name=\"test_ds\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var autoscalingGroup = Ionoscloud.Autoscaling.GetGroup.Invoke(new()\n    {\n        Name = \"test_ds\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/autoscaling\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := autoscaling.LookupGroup(ctx, \u0026autoscaling.LookupGroupArgs{\n\t\t\tName: pulumi.StringRef(\"test_ds\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.autoscaling.AutoscalingFunctions;\nimport com.pulumi.ionoscloud.autoscaling.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var autoscalingGroup = AutoscalingFunctions.getGroup(GetGroupArgs.builder()\n            .name(\"test_ds\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  autoscalingGroup:\n    fn::invoke:\n      function: ionoscloud:autoscaling:getGroup\n      arguments:\n        name: test_ds\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGroup.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Id of an existing Autoscaling Group that you want to search for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing Autoscaling Group that you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGroup.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "Unique identifier for the resource\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "Location of the datacenter. This location is the same as the one from the selected template.\n",
                        "type": "string"
                    },
                    "maxReplicaCount": {
                        "description": "Maximum replica count value for `targetReplicaCount`. Will be enforced for both automatic and manual changes.\n",
                        "type": "integer"
                    },
                    "minReplicaCount": {
                        "description": "Minimum replica count value for `targetReplicaCount`. Will be enforced for both automatic and manual changes.\n",
                        "type": "integer"
                    },
                    "name": {
                        "description": "The name of the Autoscaling Group.\n",
                        "type": "string"
                    },
                    "policies": {
                        "description": "Specifies the behavior of this Autoscaling Group. A policy consists of Triggers and Actions, whereby an Action is some kind of automated behavior, and a Trigger is defined by the circumstances under which the Action is triggered. Currently, two separate Actions, namely Scaling In and Out are supported, triggered through Thresholds defined on a given Metric.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:autoscaling/getGroupPolicy:getGroupPolicy"
                        },
                        "type": "array"
                    },
                    "replicaConfigurations": {
                        "items": {
                            "$ref": "#/types/ionoscloud:autoscaling/getGroupReplicaConfiguration:getGroupReplicaConfiguration"
                        },
                        "type": "array"
                    },
                    "targetReplicaCount": {
                        "type": "integer"
                    }
                },
                "required": [
                    "datacenterId",
                    "id",
                    "location",
                    "maxReplicaCount",
                    "minReplicaCount",
                    "name",
                    "policies",
                    "replicaConfigurations",
                    "targetReplicaCount"
                ],
                "type": "object"
            }
        },
        "ionoscloud:autoscaling/getServers:getServers": {
            "description": "The autoscaling group servers data source can be used to search for and return existing servers that are part of a specific autoscaling group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst autoscalingGroupServers = ionoscloud.autoscaling.getServers({\n    groupId: \"autoscaling_group_uuid\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nautoscaling_group_servers = ionoscloud.autoscaling.get_servers(group_id=\"autoscaling_group_uuid\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var autoscalingGroupServers = Ionoscloud.Autoscaling.GetServers.Invoke(new()\n    {\n        GroupId = \"autoscaling_group_uuid\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/autoscaling\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := autoscaling.GetServers(ctx, \u0026autoscaling.GetServersArgs{\n\t\t\tGroupId: \"autoscaling_group_uuid\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.autoscaling.AutoscalingFunctions;\nimport com.pulumi.ionoscloud.autoscaling.inputs.GetServersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var autoscalingGroupServers = AutoscalingFunctions.getServers(GetServersArgs.builder()\n            .groupId(\"autoscaling_group_uuid\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  autoscalingGroupServers:\n    fn::invoke:\n      function: ionoscloud:autoscaling:getServers\n      arguments:\n        groupId: autoscaling_group_uuid\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getServers.\n",
                "properties": {
                    "groupId": {
                        "type": "string",
                        "description": "The unique ID of the autoscaling group.\n\n\u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`groupId`\u003c/span\u003e must be provided. If it is not provided, the datasource will return an error.\n"
                    }
                },
                "type": "object",
                "required": [
                    "groupId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getServers.\n",
                "properties": {
                    "groupId": {
                        "description": "Id of the autoscaling group.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "servers": {
                        "description": "List of servers.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:autoscaling/getServersServer:getServersServer"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "groupId",
                    "servers",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:cdn/getDistribution:getDistribution": {
            "description": "The Distribution data source can be used to search for and return an existing Distributions.\nYou can provide a string for the domain parameter which will be compared with provisioned Distributions.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique domains.\n\n## Example Usage\n\n### By Id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cdn.getDistribution({\n    id: \"distr_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cdn.get_distribution(id=\"distr_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cdn.GetDistribution.Invoke(new()\n    {\n        Id = \"distr_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cdn.LookupDistribution(ctx, \u0026cdn.LookupDistributionArgs{\n\t\t\tId: pulumi.StringRef(\"distr_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cdn.CdnFunctions;\nimport com.pulumi.ionoscloud.cdn.inputs.GetDistributionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CdnFunctions.getDistribution(GetDistributionArgs.builder()\n            .id(\"distr_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cdn:getDistribution\n      arguments:\n        id: distr_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Domain\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cdn.getDistribution({\n    domain: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cdn.get_distribution(domain=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cdn.GetDistribution.Invoke(new()\n    {\n        Domain = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cdn.LookupDistribution(ctx, \u0026cdn.LookupDistributionArgs{\n\t\t\tDomain: pulumi.StringRef(\"example.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cdn.CdnFunctions;\nimport com.pulumi.ionoscloud.cdn.inputs.GetDistributionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CdnFunctions.getDistribution(GetDistributionArgs.builder()\n            .domain(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cdn:getDistribution\n      arguments:\n        domain: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Domain with Partial Match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cdn.getDistribution({\n    domain: \"example\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cdn.get_distribution(domain=\"example\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cdn.GetDistribution.Invoke(new()\n    {\n        Domain = \"example\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cdn.LookupDistribution(ctx, \u0026cdn.LookupDistributionArgs{\n\t\t\tDomain:       pulumi.StringRef(\"example\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cdn.CdnFunctions;\nimport com.pulumi.ionoscloud.cdn.inputs.GetDistributionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CdnFunctions.getDistribution(GetDistributionArgs.builder()\n            .domain(\"example\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cdn:getDistribution\n      arguments:\n        domain: example\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDistribution.\n",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "Domain of an existing distribution that you want to search for. Search by domain is case-insensitive. The whole resource domain is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the distribution you want to search for.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using domain argument. Default value is false.\n\nEither \u003cspan pulumi-lang-nodejs=\"`domain`\" pulumi-lang-dotnet=\"`Domain`\" pulumi-lang-go=\"`domain`\" pulumi-lang-python=\"`domain`\" pulumi-lang-yaml=\"`domain`\" pulumi-lang-java=\"`domain`\"\u003e`domain`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`domain`\" pulumi-lang-dotnet=\"`Domain`\" pulumi-lang-go=\"`domain`\" pulumi-lang-python=\"`domain`\" pulumi-lang-yaml=\"`domain`\" pulumi-lang-java=\"`domain`\"\u003e`domain`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDistribution.\n",
                "properties": {
                    "certificateId": {
                        "description": "The ID of the certificate to use for the distribution. You can create certificates with the certificate resource.\n",
                        "type": "string"
                    },
                    "domain": {
                        "description": "The domain of the distribution.\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "publicEndpointV4": {
                        "description": "IP of the distribution, it has to be included on the domain DNS Zone as A record.\n",
                        "type": "string"
                    },
                    "publicEndpointV6": {
                        "description": "IP of the distribution, it has to be included on the domain DNS Zone as AAAA record.\n",
                        "type": "string"
                    },
                    "resourceUrn": {
                        "description": "Unique resource identifier.\n",
                        "type": "string"
                    },
                    "routingRules": {
                        "description": "The routing rules for the distribution.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:cdn/getDistributionRoutingRule:getDistributionRoutingRule"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "certificateId",
                    "id",
                    "publicEndpointV4",
                    "publicEndpointV6",
                    "resourceUrn",
                    "routingRules"
                ],
                "type": "object"
            }
        },
        "ionoscloud:cert/getAutoCertificate:getAutoCertificate": {
            "description": "The **CM AutoCertificate data source** can be used to search for and return an existing auto-certificate.\nYou can provide a string for either id or name parameters which will be compared with provisioned auto-certificates.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cert.getAutoCertificate({\n    id: \"auto_certificate_id\",\n    location: \"auto_certificate_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.get_auto_certificate(id=\"auto_certificate_id\",\n    location=\"auto_certificate_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cert.GetAutoCertificate.Invoke(new()\n    {\n        Id = \"auto_certificate_id\",\n        Location = \"auto_certificate_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cert.LookupAutoCertificate(ctx, \u0026cert.LookupAutoCertificateArgs{\n\t\t\tId:       pulumi.StringRef(\"auto_certificate_id\"),\n\t\t\tLocation: \"auto_certificate_location\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cert.CertFunctions;\nimport com.pulumi.ionoscloud.cert.inputs.GetAutoCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CertFunctions.getAutoCertificate(GetAutoCertificateArgs.builder()\n            .id(\"auto_certificate_id\")\n            .location(\"auto_certificate_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cert:getAutoCertificate\n      arguments:\n        id: auto_certificate_id\n        location: auto_certificate_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cert.getAutoCertificate({\n    name: \"AutoCertificate Name Example\",\n    location: \"auto_certificate_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.get_auto_certificate(name=\"AutoCertificate Name Example\",\n    location=\"auto_certificate_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cert.GetAutoCertificate.Invoke(new()\n    {\n        Name = \"AutoCertificate Name Example\",\n        Location = \"auto_certificate_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cert.LookupAutoCertificate(ctx, \u0026cert.LookupAutoCertificateArgs{\n\t\t\tName:     pulumi.StringRef(\"AutoCertificate Name Example\"),\n\t\t\tLocation: \"auto_certificate_location\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cert.CertFunctions;\nimport com.pulumi.ionoscloud.cert.inputs.GetAutoCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CertFunctions.getAutoCertificate(GetAutoCertificateArgs.builder()\n            .name(\"AutoCertificate Name Example\")\n            .location(\"auto_certificate_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cert:getAutoCertificate\n      arguments:\n        name: AutoCertificate Name Example\n        location: auto_certificate_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getAutoCertificate.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "[string] ID of the auto-certificate you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the auto-certificate. Available locations: `de/fra`, `de/fra/2`.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] Name of an existing auto-certificate that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "location"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getAutoCertificate.\n",
                "properties": {
                    "commonName": {
                        "description": "[string] The common name (DNS) of the certificate to issue. The common name needs to be part of a zone in IONOS Cloud DNS.\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "keyAlgorithm": {
                        "description": "[string] The key algorithm used to generate the certificate.\n",
                        "type": "string"
                    },
                    "lastIssuedCertificateId": {
                        "description": "[string] The ID of the last certificate that was issued.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "providerId": {
                        "type": "string"
                    },
                    "subjectAlternativeNames": {
                        "description": "[list][string] Optional additional names to be added to the issued certificate. The additional names needs to be part of a zone in IONOS Cloud DNS.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "commonName",
                    "id",
                    "keyAlgorithm",
                    "lastIssuedCertificateId",
                    "location",
                    "name",
                    "providerId",
                    "subjectAlternativeNames"
                ],
                "type": "object"
            }
        },
        "ionoscloud:cert/getAutoCertificateProvider:getAutoCertificateProvider": {
            "description": "The **CM Provider data source** can be used to search for and return an existing certificate manager provider.\nYou can provide a string for either id or name parameters which will be compared with provisioned providers.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cert.getAutoCertificateProvider({\n    id: \"provider_id\",\n    location: \"provider_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.get_auto_certificate_provider(id=\"provider_id\",\n    location=\"provider_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cert.GetAutoCertificateProvider.Invoke(new()\n    {\n        Id = \"provider_id\",\n        Location = \"provider_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cert.LookupAutoCertificateProvider(ctx, \u0026cert.LookupAutoCertificateProviderArgs{\n\t\t\tId:       pulumi.StringRef(\"provider_id\"),\n\t\t\tLocation: pulumi.StringRef(\"provider_location\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cert.CertFunctions;\nimport com.pulumi.ionoscloud.cert.inputs.GetAutoCertificateProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CertFunctions.getAutoCertificateProvider(GetAutoCertificateProviderArgs.builder()\n            .id(\"provider_id\")\n            .location(\"provider_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cert:getAutoCertificateProvider\n      arguments:\n        id: provider_id\n        location: provider_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cert.getAutoCertificateProvider({\n    name: \"Provider Name Example\",\n    location: \"provider_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.get_auto_certificate_provider(name=\"Provider Name Example\",\n    location=\"provider_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cert.GetAutoCertificateProvider.Invoke(new()\n    {\n        Name = \"Provider Name Example\",\n        Location = \"provider_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cert.LookupAutoCertificateProvider(ctx, \u0026cert.LookupAutoCertificateProviderArgs{\n\t\t\tName:     pulumi.StringRef(\"Provider Name Example\"),\n\t\t\tLocation: pulumi.StringRef(\"provider_location\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cert.CertFunctions;\nimport com.pulumi.ionoscloud.cert.inputs.GetAutoCertificateProviderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CertFunctions.getAutoCertificateProvider(GetAutoCertificateProviderArgs.builder()\n            .name(\"Provider Name Example\")\n            .location(\"provider_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cert:getAutoCertificateProvider\n      arguments:\n        name: Provider Name Example\n        location: provider_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getAutoCertificateProvider.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "[string] ID of the provider you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the provider. Available locations: `de/fra`, `de/fra/2`\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] Name of an existing provider that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getAutoCertificateProvider.\n",
                "properties": {
                    "email": {
                        "description": "[string] The email address of the certificate requester.\n",
                        "type": "string"
                    },
                    "externalAccountBindings": {
                        "description": "[list]\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:cert/getAutoCertificateProviderExternalAccountBinding:getAutoCertificateProviderExternalAccountBinding"
                        },
                        "type": "array"
                    },
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "server": {
                        "description": "[string] The URL of the certificate provider.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "email",
                    "externalAccountBindings",
                    "id",
                    "name",
                    "server"
                ],
                "type": "object"
            }
        },
        "ionoscloud:cert/getCertificate:getCertificate": {
            "description": "The **Certificate data source** can be used to search for and return an existing certificate.\nYou can provide a string for either id or name parameters which will be compared with provisioned certificates.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cert.getCertificate({\n    id: \"certificate_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.get_certificate(id=\"certificate_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cert.GetCertificate.Invoke(new()\n    {\n        Id = \"certificate_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cert.LookupCertificate(ctx, \u0026cert.LookupCertificateArgs{\n\t\t\tId: pulumi.StringRef(\"certificate_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cert.CertFunctions;\nimport com.pulumi.ionoscloud.cert.inputs.GetCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CertFunctions.getCertificate(GetCertificateArgs.builder()\n            .id(\"certificate_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cert:getCertificate\n      arguments:\n        id: certificate_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.cert.getCertificate({\n    name: \"Certificate Name Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.cert.get_certificate(name=\"Certificate Name Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Cert.GetCertificate.Invoke(new()\n    {\n        Name = \"Certificate Name Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/cert\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cert.LookupCertificate(ctx, \u0026cert.LookupCertificateArgs{\n\t\t\tName: pulumi.StringRef(\"Certificate Name Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.cert.CertFunctions;\nimport com.pulumi.ionoscloud.cert.inputs.GetCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CertFunctions.getCertificate(GetCertificateArgs.builder()\n            .name(\"Certificate Name Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:cert:getCertificate\n      arguments:\n        name: Certificate Name Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getCertificate.\n",
                "properties": {
                    "certificate": {
                        "type": "string",
                        "description": "Certificate body.\n"
                    },
                    "certificateChain": {
                        "type": "string",
                        "description": "Certificate chain.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the certificate you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided, or both. If none are provided, the datasource will return an error.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing certificate that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getCertificate.\n",
                "properties": {
                    "certificate": {
                        "description": "Certificate body.\n",
                        "type": "string"
                    },
                    "certificateChain": {
                        "description": "Certificate chain.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the certificate.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the certificate.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "certificate",
                    "certificateChain",
                    "id",
                    "name"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getBackupUnit:getBackupUnit": {
            "description": "The **Backup Unit data source** can be used to search for and return an existing Backup Unit.\nYou can provide a string for either id or name parameters which will be compared with provisioned Backup Units. \nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned. \nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getBackupUnit({\n    id: \"backup_unit_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_backup_unit(id=\"backup_unit_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetBackupUnit.Invoke(new()\n    {\n        Id = \"backup_unit_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupBackupUnit(ctx, \u0026compute.LookupBackupUnitArgs{\n\t\t\tId: pulumi.StringRef(\"backup_unit_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetBackupUnitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getBackupUnit(GetBackupUnitArgs.builder()\n            .id(\"backup_unit_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getBackupUnit\n      arguments:\n        id: backup_unit_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getBackupUnit({\n    name: \"Backup Unit Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_backup_unit(name=\"Backup Unit Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetBackupUnit.Invoke(new()\n    {\n        Name = \"Backup Unit Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupBackupUnit(ctx, \u0026compute.LookupBackupUnitArgs{\n\t\t\tName: pulumi.StringRef(\"Backup Unit Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetBackupUnitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getBackupUnit(GetBackupUnitArgs.builder()\n            .name(\"Backup Unit Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getBackupUnit\n      arguments:\n        name: Backup Unit Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBackupUnit.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the backup unit you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing backup unit that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getBackupUnit.\n",
                "properties": {
                    "email": {
                        "description": "The e-mail address you want assigned to the backup unit.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the Backup Unit.\n",
                        "type": "string"
                    },
                    "login": {
                        "description": "The login associated with the backup unit. Derived from the contract number.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Backup Unit.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "email",
                    "id",
                    "login",
                    "name"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getCrossconnect:getCrossconnect": {
            "description": "The **Cross Connect data source** can be used to search for and return existing cross connects.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getCrossconnect({\n    id: \"private_crossconnect_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_crossconnect(id=\"private_crossconnect_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetCrossconnect.Invoke(new()\n    {\n        Id = \"private_crossconnect_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupCrossconnect(ctx, \u0026compute.LookupCrossconnectArgs{\n\t\t\tId: pulumi.StringRef(\"private_crossconnect_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetCrossconnectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getCrossconnect(GetCrossconnectArgs.builder()\n            .id(\"private_crossconnect_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getCrossconnect\n      arguments:\n        id: private_crossconnect_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getCrossconnect({\n    name: \"Cross Connect Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_crossconnect(name=\"Cross Connect Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetCrossconnect.Invoke(new()\n    {\n        Name = \"Cross Connect Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupCrossconnect(ctx, \u0026compute.LookupCrossconnectArgs{\n\t\t\tName: pulumi.StringRef(\"Cross Connect Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetCrossconnectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getCrossconnect(GetCrossconnectArgs.builder()\n            .name(\"Cross Connect Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getCrossconnect\n      arguments:\n        name: Cross Connect Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getCrossconnect.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Description of cross connect\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the cross connect you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The physical location of the connectable datacenter\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing cross connect that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getCrossconnect.\n",
                "properties": {
                    "connectableDatacenters": {
                        "description": "Lists datacenters that can be joined to this cross connect\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getCrossconnectConnectableDatacenter:getCrossconnectConnectableDatacenter"
                        },
                        "type": "array"
                    },
                    "description": {
                        "description": "Description of cross connect\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The UUID of the connectable datacenter\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "The physical location of the connectable datacenter\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the connectable datacenter\n",
                        "type": "string"
                    },
                    "peers": {
                        "description": "Lists LAN's joined to this cross connect\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getCrossconnectPeer:getCrossconnectPeer"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "connectableDatacenters",
                    "description",
                    "id",
                    "name",
                    "peers"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getCubeServer:getCubeServer": {
            "description": "The [Cube Server data source](https://docs.ionos.com/cloud/compute-services/cubes/overview) can be used to search for and return existing servers. \nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getCubeServer({\n    datacenterId: \"datacenter_id\",\n    id: \"server_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_cube_server(datacenter_id=\"datacenter_id\",\n    id=\"server_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetCubeServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"server_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupCubeServer(ctx, \u0026compute.LookupCubeServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"server_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetCubeServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getCubeServer(GetCubeServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"server_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getCubeServer\n      arguments:\n        datacenterId: datacenter_id\n        id: server_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getCubeServer({\n    datacenterId: \"datacenter_id\",\n    name: \"Server Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_cube_server(datacenter_id=\"datacenter_id\",\n    name=\"Server Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetCubeServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"Server Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupCubeServer(ctx, \u0026compute.LookupCubeServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"Server Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetCubeServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getCubeServer(GetCubeServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"Server Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getCubeServer\n      arguments:\n        datacenterId: datacenter_id\n        name: Server Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getCubeServer.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Location of that image/snapshot\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing server that you want to search for.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getCubeServer.\n",
                "properties": {
                    "availabilityZone": {
                        "description": "The availability zone in which the volume should exist\n",
                        "type": "string"
                    },
                    "bootCdrom": {
                        "type": "string"
                    },
                    "bootImage": {
                        "type": "string"
                    },
                    "bootVolume": {
                        "type": "string"
                    },
                    "cdroms": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getCubeServerCdrom:getCubeServerCdrom"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "type": "integer"
                    },
                    "cpuFamily": {
                        "type": "string"
                    },
                    "datacenterId": {
                        "description": "The id of the datacenter\n",
                        "type": "string"
                    },
                    "hostname": {
                        "description": "The hostname of the server\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "Id of the firewall rule\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "Location of that image/snapshot\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the firewall rule\n",
                        "type": "string"
                    },
                    "nics": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getCubeServerNic:getCubeServerNic"
                        },
                        "type": "array"
                    },
                    "ram": {
                        "type": "integer"
                    },
                    "securityGroupsIds": {
                        "description": "The list of Security Group IDs for the resource.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "templateUuid": {
                        "description": "The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n",
                        "type": "string"
                    },
                    "token": {
                        "type": "string"
                    },
                    "vmState": {
                        "description": "Status of the virtual Machine\n",
                        "type": "string"
                    },
                    "volumes": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getCubeServerVolume:getCubeServerVolume"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "availabilityZone",
                    "bootCdrom",
                    "bootImage",
                    "bootVolume",
                    "cdroms",
                    "cores",
                    "cpuFamily",
                    "datacenterId",
                    "hostname",
                    "id",
                    "name",
                    "nics",
                    "ram",
                    "securityGroupsIds",
                    "token",
                    "vmState",
                    "volumes"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getDatacenter:getDatacenter": {
            "description": "The **Datacenter data source** can be used to search for and return an existing Virtual Data Center.\nYou can provide a string for the name and location parameters which will be compared with provisioned Virtual Data Centers.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getDatacenter({\n    id: \"datacenter_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_datacenter(id=\"datacenter_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetDatacenter.Invoke(new()\n    {\n        Id = \"datacenter_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupDatacenter(ctx, \u0026compute.LookupDatacenterArgs{\n\t\t\tId: pulumi.StringRef(\"datacenter_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetDatacenterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getDatacenter(GetDatacenterArgs.builder()\n            .id(\"datacenter_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getDatacenter\n      arguments:\n        id: datacenter_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name \u0026 Location\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getDatacenter({\n    name: \"Datacenter Example\",\n    location: \"us/las\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_datacenter(name=\"Datacenter Example\",\n    location=\"us/las\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetDatacenter.Invoke(new()\n    {\n        Name = \"Datacenter Example\",\n        Location = \"us/las\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupDatacenter(ctx, \u0026compute.LookupDatacenterArgs{\n\t\t\tName:     pulumi.StringRef(\"Datacenter Example\"),\n\t\t\tLocation: pulumi.StringRef(\"us/las\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetDatacenterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getDatacenter(GetDatacenterArgs.builder()\n            .name(\"Datacenter Example\")\n            .location(\"us/las\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getDatacenter\n      arguments:\n        name: Datacenter Example\n        location: us/las\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDatacenter.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Id of an existing Virtual Data Center that you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Id of the existing Virtual Data Center's location. Available locations: `de/fra`, `us/las`, `us/ewr`, `de/txl`, `gb/lhr`, `gb/bhx`, `es/vit`, `fr/par`, `us/mci`, `de/fra/2`\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, the datasource will return an error.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing Virtual Data Center that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDatacenter.\n",
                "properties": {
                    "cpuArchitectures": {
                        "description": "Array of features and CPU families available in a location\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getDatacenterCpuArchitecture:getDatacenterCpuArchitecture"
                        },
                        "type": "array"
                    },
                    "description": {
                        "description": "Description for the Virtual Data Center\n",
                        "type": "string"
                    },
                    "features": {
                        "description": "List of features supported by the location this data center is part of\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "UUID of the Virtual Data Center\n",
                        "type": "string"
                    },
                    "ipv6CidrBlock": {
                        "type": "string"
                    },
                    "location": {
                        "description": "The regional location where the Virtual Data Center is created\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Virtual Data Center\n",
                        "type": "string"
                    },
                    "secAuthProtection": {
                        "description": "Boolean value representing if the data center requires extra protection e.g. two factor protection\n",
                        "type": "boolean"
                    },
                    "version": {
                        "description": "The version of that Data Center. Gets incremented with every change\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "cpuArchitectures",
                    "description",
                    "features",
                    "id",
                    "ipv6CidrBlock",
                    "name",
                    "secAuthProtection",
                    "version"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getFirewall:getFirewall": {
            "description": "The **Firewall data source** can be used to search for and return an existing FirewallRules. \nYou can provide a string for either id or name parameters which will be compared with provisioned Firewall Rules.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned. \nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getFirewall({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n    nicId: \"nic_id\",\n    id: \"firewall_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_firewall(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\",\n    nic_id=\"nic_id\",\n    id=\"firewall_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetFirewall.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n        NicId = \"nic_id\",\n        Id = \"firewall_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupFirewall(ctx, \u0026compute.LookupFirewallArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tNicId:        \"nic_id\",\n\t\t\tId:           pulumi.StringRef(\"firewall_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getFirewall(GetFirewallArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .nicId(\"nic_id\")\n            .id(\"firewall_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getFirewall\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n        nicId: nic_id\n        id: firewall_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getFirewall({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n    nicId: \"nic_id\",\n    name: \"test_ds_firewall_rule\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_firewall(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\",\n    nic_id=\"nic_id\",\n    name=\"test_ds_firewall_rule\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetFirewall.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n        NicId = \"nic_id\",\n        Name = \"test_ds_firewall_rule\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupFirewall(ctx, \u0026compute.LookupFirewallArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tNicId:        \"nic_id\",\n\t\t\tName:         pulumi.StringRef(\"test_ds_firewall_rule\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getFirewall(GetFirewallArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .nicId(\"nic_id\")\n            .name(\"test_ds_firewall_rule\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getFirewall\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n        nicId: nic_id\n        name: test_ds_firewall_rule\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFirewall.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "The Virtual Data Center ID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the firewall rule you want to search for.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing firewall rule that you want to search for.\n"
                    },
                    "nicId": {
                        "type": "string",
                        "description": "The NIC ID.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or   \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The Server ID.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "nicId",
                    "serverId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFirewall.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "icmpCode": {
                        "description": "Defines the allowed code (from 0 to 254) if protocol ICMP is chosen.\n",
                        "type": "string"
                    },
                    "icmpType": {
                        "description": "Defines the allowed type (from 0 to 254) if the protocol ICMP is chosen.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the firewall rule.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the firewall rule.\n",
                        "type": "string"
                    },
                    "nicId": {
                        "type": "string"
                    },
                    "portRangeEnd": {
                        "description": "Defines the end range of the allowed port (from 1 to 65534) if the protocol TCP or UDP is chosen.\n",
                        "type": "integer"
                    },
                    "portRangeStart": {
                        "description": "Defines the start range of the allowed port (from 1 to 65534) if protocol TCP or UDP is chosen.\n",
                        "type": "integer"
                    },
                    "protocol": {
                        "description": "The protocol for the rule: TCP, UDP, ICMP, ANY. This property is immutable.\n",
                        "type": "string"
                    },
                    "serverId": {
                        "type": "string"
                    },
                    "sourceIp": {
                        "description": "Only traffic originating from the respective IPv4 address is allowed.\n",
                        "type": "string"
                    },
                    "sourceMac": {
                        "description": "Only traffic originating from the respective MAC address is allowed.\n",
                        "type": "string"
                    },
                    "targetIp": {
                        "description": "Only traffic directed to the respective IP address of the NIC is allowed.\n",
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "icmpCode",
                    "icmpType",
                    "id",
                    "name",
                    "nicId",
                    "portRangeEnd",
                    "portRangeStart",
                    "protocol",
                    "serverId",
                    "sourceIp",
                    "sourceMac",
                    "targetIp",
                    "type"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getGPUServer:getGPUServer": {
            "description": "The [GPU Server data source](https://docs.ionos.com/cloud/compute-services/compute-engine/cloud-gpu-vm) can be used to search for and return existing GPU servers. \nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGPUServer({\n    datacenterId: \"datacenter_id\",\n    id: \"server_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu_server(datacenter_id=\"datacenter_id\",\n    id=\"server_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGPUServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"server_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupGPUServer(ctx, \u0026compute.LookupGPUServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"server_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGPUServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGPUServer(GetGPUServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"server_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGPUServer\n      arguments:\n        datacenterId: datacenter_id\n        id: server_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGPUServer({\n    datacenterId: \"datacenter_id\",\n    name: \"GPU Server Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu_server(datacenter_id=\"datacenter_id\",\n    name=\"GPU Server Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGPUServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"GPU Server Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupGPUServer(ctx, \u0026compute.LookupGPUServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"GPU Server Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGPUServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGPUServer(GetGPUServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"GPU Server Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGPUServer\n      arguments:\n        datacenterId: datacenter_id\n        name: GPU Server Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGPUServer.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Location of that image/snapshot\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing server that you want to search for.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "The UUID of the template for creating a GPU server; the available templates for GPU servers can be found on the templates resource\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGPUServer.\n",
                "properties": {
                    "availabilityZone": {
                        "description": "The availability zone in which the volume should exist\n",
                        "type": "string"
                    },
                    "bootCdrom": {
                        "type": "string"
                    },
                    "bootImage": {
                        "type": "string"
                    },
                    "bootVolume": {
                        "type": "string"
                    },
                    "cdroms": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getGPUServerCdrom:getGPUServerCdrom"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "type": "integer"
                    },
                    "cpuFamily": {
                        "type": "string"
                    },
                    "datacenterId": {
                        "description": "The id of the datacenter\n",
                        "type": "string"
                    },
                    "hostname": {
                        "description": "The hostname of the server\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "Id of the attached volume\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "Location of that image/snapshot\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the attached volume\n",
                        "type": "string"
                    },
                    "nics": {
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getGPUServerNic:getGPUServerNic"
                        },
                        "type": "array"
                    },
                    "ram": {
                        "type": "integer"
                    },
                    "securityGroupsIds": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "templateUuid": {
                        "description": "The UUID of the template for creating a GPU server; the available templates for GPU servers can be found on the templates resource\n",
                        "type": "string"
                    },
                    "token": {
                        "type": "string"
                    },
                    "vmState": {
                        "description": "Status of the virtual Machine\n",
                        "type": "string"
                    },
                    "volumes": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getGPUServerVolume:getGPUServerVolume"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "availabilityZone",
                    "bootCdrom",
                    "bootImage",
                    "bootVolume",
                    "cdroms",
                    "cores",
                    "cpuFamily",
                    "datacenterId",
                    "hostname",
                    "id",
                    "name",
                    "nics",
                    "ram",
                    "securityGroupsIds",
                    "token",
                    "vmState",
                    "volumes"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getGpu:getGpu": {
            "description": "The **GPU data source** can be used to search for and return an existing GPU by either its ID or name.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGpu({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n    id: \"gpu_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\",\n    id=\"gpu_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGpu.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n        Id = \"gpu_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetGpu(ctx, \u0026compute.GetGpuArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tId:           pulumi.StringRef(\"gpu_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGpuArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGpu(GetGpuArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .id(\"gpu_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGpu\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n        id: gpu_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGpu({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n    name: \"GPU Name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\",\n    name=\"GPU Name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGpu.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n        Name = \"GPU Name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetGpu(ctx, \u0026compute.GetGpuArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tName:         pulumi.StringRef(\"GPU Name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGpuArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGpu(GetGpuArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .name(\"GPU Name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGpu\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n        name: GPU Name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGpu.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "The ID of the datacenter.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the GPU.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`serverId`\u003c/span\u003e are required. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If both \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the GPU.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "serverId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGpu.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the GPU.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "model": {
                        "description": "The model of the GPU.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the GPU.\n",
                        "type": "string"
                    },
                    "serverId": {
                        "type": "string"
                    },
                    "type": {
                        "description": "The type of the GPU.\n",
                        "type": "string"
                    },
                    "vendor": {
                        "description": "The vendor of the GPU.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "id",
                    "model",
                    "name",
                    "serverId",
                    "type",
                    "vendor"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getGpus:getGpus": {
            "description": "The **GPUs data source** can be used to retrieve a list of all GPUs attached to a specific server within a datacenter.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGpus({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpus(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGpus.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetGpus(ctx, \u0026compute.GetGpusArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGpusArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGpus(GetGpusArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGpus\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGpus.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "The ID of the datacenter.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "serverId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGpus.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "gpuses": {
                        "description": "A list of GPUs. Each GPU has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getGpusGpus:getGpusGpus"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "serverId": {
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "gpuses",
                    "serverId",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getGroup:getGroup": {
            "description": "The **Group data source** can be used to search for and return existing groups.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned. \nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGroup({\n    id: \"group_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_group(id=\"group_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGroup.Invoke(new()\n    {\n        Id = \"group_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupGroup(ctx, \u0026compute.LookupGroupArgs{\n\t\t\tId: pulumi.StringRef(\"group_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGroup(GetGroupArgs.builder()\n            .id(\"group_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGroup\n      arguments:\n        id: group_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGroup({\n    name: \"Group Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_group(name=\"Group Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGroup.Invoke(new()\n    {\n        Name = \"Group Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupGroup(ctx, \u0026compute.LookupGroupArgs{\n\t\t\tName: pulumi.StringRef(\"Group Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGroup(GetGroupArgs.builder()\n            .name(\"Group Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGroup\n      arguments:\n        name: Group Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGroup.\n",
                "properties": {
                    "getUsersData": {
                        "type": "boolean",
                        "description": "[Boolean] When set to true, information about users will be stored in state under \u003cspan pulumi-lang-nodejs=\"`users`\" pulumi-lang-dotnet=\"`Users`\" pulumi-lang-go=\"`users`\" pulumi-lang-python=\"`users`\" pulumi-lang-yaml=\"`users`\" pulumi-lang-java=\"`users`\"\u003e`users`\u003c/span\u003e attribute, default value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the group you want to search for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing group that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGroup.\n",
                "properties": {
                    "accessActivityLog": {
                        "description": "The group will be allowed to access the activity log.\n",
                        "type": "boolean"
                    },
                    "accessAndManageAiModelHub": {
                        "description": "The group will be allowed to access and manage ai model hub.\n",
                        "type": "boolean"
                    },
                    "accessAndManageApiGateway": {
                        "description": "The group will be allowed to access and manage api gateway.\n",
                        "type": "boolean"
                    },
                    "accessAndManageCdn": {
                        "description": "The group will be allowed to access and manage cdn.\n",
                        "type": "boolean"
                    },
                    "accessAndManageCertificates": {
                        "description": "The group will be allowed to access and manage certificates.\n",
                        "type": "boolean"
                    },
                    "accessAndManageDns": {
                        "description": "The group will be allowed to access and manage dns records.\n",
                        "type": "boolean"
                    },
                    "accessAndManageIamResources": {
                        "description": "The group will be allowed to access and manage iam resources.\n",
                        "type": "boolean"
                    },
                    "accessAndManageKaas": {
                        "description": "The group will be allowed to access and manage kaas.\n",
                        "type": "boolean"
                    },
                    "accessAndManageLogging": {
                        "description": "The group will be allowed to access and manage logging.\n",
                        "type": "boolean"
                    },
                    "accessAndManageMonitoring": {
                        "description": "The group will be allowed to access and manage monitoring.\n",
                        "type": "boolean"
                    },
                    "accessAndManageNetworkFileStorage": {
                        "description": "The group will be allowed to access and manage network file storage.\n",
                        "type": "boolean"
                    },
                    "accessAndManageVpn": {
                        "description": "The group will be allowed to access and manage vpn.\n",
                        "type": "boolean"
                    },
                    "createBackupUnit": {
                        "description": "The group will be allowed to create backup unit privilege.\n",
                        "type": "boolean"
                    },
                    "createDatacenter": {
                        "description": "The group will be allowed to create virtual data centers.\n",
                        "type": "boolean"
                    },
                    "createFlowLog": {
                        "description": "The group will be allowed to create flow log.\n",
                        "type": "boolean"
                    },
                    "createInternetAccess": {
                        "description": "The group will be allowed to create internet access privilege.\n",
                        "type": "boolean"
                    },
                    "createK8sCluster": {
                        "description": "The group will be allowed to create kubernetes cluster privilege.\n",
                        "type": "boolean"
                    },
                    "createNetworkSecurityGroups": {
                        "description": "The group will be allowed to create network security groups.\n",
                        "type": "boolean"
                    },
                    "createPcc": {
                        "description": "The group will be allowed to create Cross Connects privilege.\n",
                        "type": "boolean"
                    },
                    "createSnapshot": {
                        "description": "The group will be allowed to create snapshots.\n",
                        "type": "boolean"
                    },
                    "getUsersData": {
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The id of the group.\n",
                        "type": "string"
                    },
                    "manageDataplatform": {
                        "description": "The group will be allowed to access and manage the Data Platform.\n",
                        "type": "boolean"
                    },
                    "manageDbaas": {
                        "description": "Privilege for a group to manage DBaaS related functionality.\n",
                        "type": "boolean"
                    },
                    "manageRegistry": {
                        "description": "The group will be allowed to access container registry related functionality.\n",
                        "type": "boolean"
                    },
                    "name": {
                        "description": "A name for the group.\n",
                        "type": "string"
                    },
                    "reserveIp": {
                        "description": "The group will be allowed to reserve IP addresses.\n",
                        "type": "boolean"
                    },
                    "s3Privilege": {
                        "description": "The group will have S3 privilege.\n",
                        "type": "boolean"
                    },
                    "users": {
                        "description": "List of users in group.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getGroupUser:getGroupUser"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "accessActivityLog",
                    "accessAndManageAiModelHub",
                    "accessAndManageApiGateway",
                    "accessAndManageCdn",
                    "accessAndManageCertificates",
                    "accessAndManageDns",
                    "accessAndManageIamResources",
                    "accessAndManageKaas",
                    "accessAndManageLogging",
                    "accessAndManageMonitoring",
                    "accessAndManageNetworkFileStorage",
                    "accessAndManageVpn",
                    "createBackupUnit",
                    "createDatacenter",
                    "createFlowLog",
                    "createInternetAccess",
                    "createK8sCluster",
                    "createNetworkSecurityGroups",
                    "createPcc",
                    "createSnapshot",
                    "id",
                    "manageDataplatform",
                    "manageDbaas",
                    "manageRegistry",
                    "name",
                    "reserveIp",
                    "s3Privilege",
                    "users"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getIPBlock:getIPBlock": {
            "description": "The **IP Block data source** can be used to search for and return an existing Ip Block.\nYou can provide a string for the id, the name or the location parameters which will be compared with the provisioned Ip Blocks.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getIPBlock({\n    id: \"ipblock_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_ip_block(id=\"ipblock_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetIPBlock.Invoke(new()\n    {\n        Id = \"ipblock_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupIPBlock(ctx, \u0026compute.LookupIPBlockArgs{\n\t\t\tId: pulumi.StringRef(\"ipblock_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetIPBlockArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getIPBlock(GetIPBlockArgs.builder()\n            .id(\"ipblock_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getIPBlock\n      arguments:\n        id: ipblock_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getIPBlock({\n    name: \"IP Block Name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_ip_block(name=\"IP Block Name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetIPBlock.Invoke(new()\n    {\n        Name = \"IP Block Name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupIPBlock(ctx, \u0026compute.LookupIPBlockArgs{\n\t\t\tName: pulumi.StringRef(\"IP Block Name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetIPBlockArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getIPBlock(GetIPBlockArgs.builder()\n            .name(\"IP Block Name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getIPBlock\n      arguments:\n        name: IP Block Name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Location\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getIPBlock({\n    location: \"us/las\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_ip_block(location=\"us/las\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetIPBlock.Invoke(new()\n    {\n        Location = \"us/las\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupIPBlock(ctx, \u0026compute.LookupIPBlockArgs{\n\t\t\tLocation: pulumi.StringRef(\"us/las\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetIPBlockArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getIPBlock(GetIPBlockArgs.builder()\n            .location(\"us/las\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getIPBlock\n      arguments:\n        location: us/las\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name \u0026 Location\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getIPBlock({\n    name: \"IP Block Name\",\n    location: \"us/las\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_ip_block(name=\"IP Block Name\",\n    location=\"us/las\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetIPBlock.Invoke(new()\n    {\n        Name = \"IP Block Name\",\n        Location = \"us/las\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupIPBlock(ctx, \u0026compute.LookupIPBlockArgs{\n\t\t\tName:     pulumi.StringRef(\"IP Block Name\"),\n\t\t\tLocation: pulumi.StringRef(\"us/las\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetIPBlockArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getIPBlock(GetIPBlockArgs.builder()\n            .name(\"IP Block Name\")\n            .location(\"us/las\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getIPBlock\n      arguments:\n        name: IP Block Name\n        location: us/las\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getIPBlock.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of an existing Ip Block that you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The regional location for this IP Block: us/las, us/ewr, de/fra, de/fkb.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing Ip Block that you want to search for.\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The number of IP addresses to reserve for this block.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getIPBlock.\n",
                "properties": {
                    "id": {
                        "description": "The id of Ip Block\n",
                        "type": "string"
                    },
                    "ipConsumers": {
                        "description": "Read-Only attribute. Lists consumption detail of an individual ip\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getIPBlockIpConsumer:getIPBlockIpConsumer"
                        },
                        "type": "array"
                    },
                    "ips": {
                        "description": "The list of IP addresses associated with this block.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "location": {
                        "description": "The regional location for this IP Block: us/las, us/ewr, de/fra, de/fkb.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of Ip Block\n",
                        "type": "string"
                    },
                    "size": {
                        "description": "The number of IP addresses to reserve for this block.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "id",
                    "ipConsumers",
                    "ips",
                    "location",
                    "name",
                    "size"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getIPFailover:getIPFailover": {
            "description": "The **IP Failover data source** can be used to search for and return an existing IP Failover object.\nYou need to provide the\u003cspan pulumi-lang-nodejs=\" datacenterId \" pulumi-lang-dotnet=\" DatacenterId \" pulumi-lang-go=\" datacenterId \" pulumi-lang-python=\" datacenter_id \" pulumi-lang-yaml=\" datacenterId \" pulumi-lang-java=\" datacenterId \"\u003e datacenterId \u003c/span\u003eand the id of the lan to get the ip failover object for the provided datacenter.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getIPFailover({\n    datacenterId: \"datacenter_id\",\n    lanId: \"lan_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_ip_failover(datacenter_id=\"datacenter_id\",\n    lan_id=\"lan_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetIPFailover.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        LanId = \"lan_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupIPFailover(ctx, \u0026compute.LookupIPFailoverArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tLanId:        \"lan_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetIPFailoverArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getIPFailover(GetIPFailoverArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .lanId(\"lan_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getIPFailover\n      arguments:\n        datacenterId: datacenter_id\n        lanId: lan_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getIPFailover.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "The ID of the datacenter containing the ip failover datasource\n"
                    },
                    "ip": {
                        "type": "string",
                        "description": "The reserved IP address to be used in the IP failover group.\n"
                    },
                    "lanId": {
                        "type": "string",
                        "description": "The id of the lan of which the IP failover belongs\n"
                    },
                    "location": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "ip",
                    "lanId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getIPFailover.\n",
                "properties": {
                    "datacenterId": {
                        "description": "The ID of a Data Center.\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "ip": {
                        "description": "The reserved IP address to be used in the IP failover group.\n",
                        "type": "string"
                    },
                    "lanId": {
                        "description": "The ID of a LAN.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "nicuuid": {
                        "description": "The ID of a NIC.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "id",
                    "ip",
                    "lanId",
                    "nicuuid"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getImage:getImage": {
            "description": "The **Image data source** can be used to search for and return an existing image which can then be used to provision a server.  \nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned. \nWhen this happens, please refine your search string so that it is specific enough to return only one result. In case multiple matches are found, enable debug(`TF_LOG=debug`) to show the name and location of the images.\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst cdrom = ionoscloud.compute.getImage({\n    imageAlias: \"ubuntu:latest_iso\",\n    type: \"CDROM\",\n    location: \"de/txl\",\n    cloudInit: \"NONE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\ncdrom = ionoscloud.compute.get_image(image_alias=\"ubuntu:latest_iso\",\n    type=\"CDROM\",\n    location=\"de/txl\",\n    cloud_init=\"NONE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cdrom = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        ImageAlias = \"ubuntu:latest_iso\",\n        Type = \"CDROM\",\n        Location = \"de/txl\",\n        CloudInit = \"NONE\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest_iso\"),\n\t\t\tType:       pulumi.StringRef(\"CDROM\"),\n\t\t\tLocation:   pulumi.StringRef(\"de/txl\"),\n\t\t\tCloudInit:  pulumi.StringRef(\"NONE\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var cdrom = ComputeFunctions.getImage(GetImageArgs.builder()\n            .imageAlias(\"ubuntu:latest_iso\")\n            .type(\"CDROM\")\n            .location(\"de/txl\")\n            .cloudInit(\"NONE\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  cdrom:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        imageAlias: ubuntu:latest_iso\n        type: CDROM\n        location: de/txl\n        cloudInit: NONE\n```\n\u003c!--End PulumiCodeChooser --\u003e\nFinds an image with alias `ubuntu:latest_iso`, in location `de/txl`, that does not support \u003cspan pulumi-lang-nodejs=\"`cloudInit`\" pulumi-lang-dotnet=\"`CloudInit`\" pulumi-lang-go=\"`cloudInit`\" pulumi-lang-python=\"`cloud_init`\" pulumi-lang-yaml=\"`cloudInit`\" pulumi-lang-java=\"`cloudInit`\"\u003e`cloudInit`\u003c/span\u003e and is of type `CDROM`.\n\n### Additional Examples\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getImage({\n    imageAlias: \"ubuntu:latest\",\n    location: \"de/txl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_image(image_alias=\"ubuntu:latest\",\n    location=\"de/txl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        ImageAlias = \"ubuntu:latest\",\n        Location = \"de/txl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest\"),\n\t\t\tLocation:   pulumi.StringRef(\"de/txl\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .imageAlias(\"ubuntu:latest\")\n            .location(\"de/txl\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        imageAlias: ubuntu:latest\n        location: de/txl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFinds an image with alias `ubuntu:latest` in location `de/txl`. Uses exact matching on both fields.\n\n### Additional Examples\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getImage({\n    type: \"HDD\",\n    cloudInit: \"V1\",\n    imageAlias: \"ubuntu:latest\",\n    location: \"us/ewr\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_image(type=\"HDD\",\n    cloud_init=\"V1\",\n    image_alias=\"ubuntu:latest\",\n    location=\"us/ewr\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetImage.Invoke(new()\n    {\n        Type = \"HDD\",\n        CloudInit = \"V1\",\n        ImageAlias = \"ubuntu:latest\",\n        Location = \"us/ewr\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetImage(ctx, \u0026compute.GetImageArgs{\n\t\t\tType:       pulumi.StringRef(\"HDD\"),\n\t\t\tCloudInit:  pulumi.StringRef(\"V1\"),\n\t\t\tImageAlias: pulumi.StringRef(\"ubuntu:latest\"),\n\t\t\tLocation:   pulumi.StringRef(\"us/ewr\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getImage(GetImageArgs.builder()\n            .type(\"HDD\")\n            .cloudInit(\"V1\")\n            .imageAlias(\"ubuntu:latest\")\n            .location(\"us/ewr\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getImage\n      arguments:\n        type: HDD\n        cloudInit: V1\n        imageAlias: ubuntu:latest\n        location: us/ewr\n```\n\u003c!--End PulumiCodeChooser --\u003e\nFinds an image named `ubuntu-20.04.6` in location `de/txl`. Uses exact matching.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getImage.\n",
                "properties": {
                    "cloudInit": {
                        "type": "string",
                        "description": "Cloud init compatibility (\"NONE\" or \"V1\"). Exact match.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "description of the image\n"
                    },
                    "imageAlias": {
                        "type": "string",
                        "description": "Image alias of the image you are searching for. Exact match. E.g. =`centos:latest`, `ubuntu:latest`\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Id of the existing image's location. Exact match. Possible values: `de/fra`, `de/txl`, `gb/lhr`, `es/vit`, `us/ewr`, `us/las`\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing image that you want to search for. It will return an exact match if one exists, otherwise it will retrieve partial matches.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The image type, HDD or CD-ROM. Exact match.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "The version of the image that you want to search for.\n\nIf both \"name\" and \"version\" are provided the plugin will concatenate the two strings in this format [name]-[version].\nThe resulting string will be used to search for an exact match. An error will be thrown if one is not found.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getImage.\n",
                "properties": {
                    "cloudInit": {
                        "description": "Cloud init compatibility\n",
                        "type": "string"
                    },
                    "cpuHotPlug": {
                        "description": "Is capable of CPU hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "cpuHotUnplug": {
                        "description": "Is capable of CPU hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "description": {
                        "description": "description of the image\n",
                        "type": "string"
                    },
                    "discScsiHotPlug": {
                        "description": "Is capable of SCSI drive hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "discScsiHotUnplug": {
                        "description": "Is capable of SCSI drive hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "discVirtioHotPlug": {
                        "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "discVirtioHotUnplug": {
                        "description": "Is capable of Virt-IO drive hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "exposeSerial": {
                        "description": "Indicates if the serial ID of the disk attached to the server will be exposed or not.\n",
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "imageAlias": {
                        "type": "string"
                    },
                    "imageAliases": {
                        "description": "List of image aliases mapped for this Image\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "licenceType": {
                        "description": "OS type of this Image\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "Location of that image/snapshot.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "name of the image\n",
                        "type": "string"
                    },
                    "nicHotPlug": {
                        "description": "Is capable of nic hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "nicHotUnplug": {
                        "description": "Is capable of nic hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "public": {
                        "description": "Indicates if the image is part of the public repository or not\n",
                        "type": "boolean"
                    },
                    "ramHotPlug": {
                        "description": "Is capable of memory hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "ramHotUnplug": {
                        "description": "Is capable of memory hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "requireLegacyBios": {
                        "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n",
                        "type": "boolean"
                    },
                    "size": {
                        "description": "The size of the image in GB\n",
                        "type": "number"
                    },
                    "type": {
                        "description": "This indicates the type of image\n",
                        "type": "string"
                    },
                    "version": {
                        "type": "string"
                    }
                },
                "required": [
                    "cloudInit",
                    "cpuHotPlug",
                    "cpuHotUnplug",
                    "description",
                    "discScsiHotPlug",
                    "discScsiHotUnplug",
                    "discVirtioHotPlug",
                    "discVirtioHotUnplug",
                    "exposeSerial",
                    "imageAlias",
                    "imageAliases",
                    "licenceType",
                    "location",
                    "name",
                    "nicHotPlug",
                    "nicHotUnplug",
                    "public",
                    "ramHotPlug",
                    "ramHotUnplug",
                    "requireLegacyBios",
                    "size",
                    "type",
                    "version",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getLan:getLan": {
            "description": "The **LAN data source** can be used to search for and return existing lans.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getLan({\n    datacenterId: \"datacenter_id\",\n    id: \"lan_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_lan(datacenter_id=\"datacenter_id\",\n    id=\"lan_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetLan.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"lan_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupLan(ctx, \u0026compute.LookupLanArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"lan_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetLanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getLan(GetLanArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"lan_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getLan\n      arguments:\n        datacenterId: datacenter_id\n        id: lan_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getLan({\n    datacenterId: \"datacenter_id\",\n    name: \"Lan Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_lan(datacenter_id=\"datacenter_id\",\n    name=\"Lan Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetLan.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"Lan Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupLan(ctx, \u0026compute.LookupLanArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"Lan Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetLanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getLan(GetLanArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"Lan Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getLan\n      arguments:\n        datacenterId: datacenter_id\n        name: Lan Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getLan.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the lan you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing lan that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getLan.\n",
                "properties": {
                    "datacenterId": {
                        "description": "The ID of lan's Virtual Data Center.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the LAN.\n",
                        "type": "string"
                    },
                    "ipFailovers": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getLanIpFailover:getLanIpFailover"
                        },
                        "type": "array"
                    },
                    "ipv4CidrBlock": {
                        "description": "For public LANs this property is null, for private LANs it contains the private IPv4 CIDR range.\n",
                        "type": "string"
                    },
                    "ipv6CidrBlock": {
                        "description": "Contains the LAN's /64 IPv6 CIDR block if this LAN is IPv6 enabled.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the LAN.\n",
                        "type": "string"
                    },
                    "pcc": {
                        "description": "The unique id of a \u003cspan pulumi-lang-nodejs=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-dotnet=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-go=\"`compute.Crossconnect`\" pulumi-lang-python=\"`compute.Crossconnect`\" pulumi-lang-yaml=\"`ionoscloud.compute.Crossconnect`\" pulumi-lang-java=\"`ionoscloud.compute.Crossconnect`\"\u003e`ionoscloud.compute.Crossconnect`\u003c/span\u003e resource, in order.\n",
                        "type": "string"
                    },
                    "public": {
                        "description": "Indicates if the LAN faces the public Internet (true) or not (false).\n",
                        "type": "boolean"
                    }
                },
                "required": [
                    "datacenterId",
                    "id",
                    "ipFailovers",
                    "ipv4CidrBlock",
                    "ipv6CidrBlock",
                    "name",
                    "pcc",
                    "public"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getLocation:getLocation": {
            "description": "The **Location data source** can be used to search for and return an existing location which can then be used elsewhere in the configuration.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getLocation({\n    name: \"karlsruhe\",\n    feature: \"SSD\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_location(name=\"karlsruhe\",\n    feature=\"SSD\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetLocation.Invoke(new()\n    {\n        Name = \"karlsruhe\",\n        Feature = \"SSD\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetLocation(ctx, \u0026compute.GetLocationArgs{\n\t\t\tName:    pulumi.StringRef(\"karlsruhe\"),\n\t\t\tFeature: pulumi.StringRef(\"SSD\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getLocation(GetLocationArgs.builder()\n            .name(\"karlsruhe\")\n            .feature(\"SSD\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getLocation\n      arguments:\n        name: karlsruhe\n        feature: SSD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getLocation.\n",
                "properties": {
                    "feature": {
                        "type": "string",
                        "description": "A desired feature that the location must be able to provide.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the location to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getLocation.\n",
                "properties": {
                    "cpuArchitectures": {
                        "description": "Array of features and CPU families available in a location\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getLocationCpuArchitecture:getLocationCpuArchitecture"
                        },
                        "type": "array"
                    },
                    "feature": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "imageAliases": {
                        "description": "List of image aliases available for the location\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    }
                },
                "required": [
                    "cpuArchitectures",
                    "feature",
                    "imageAliases",
                    "name",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getNatGateway:getNatGateway": {
            "description": "The **NAT gateway data source** can be used to search for and return existing NAT Gateways.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getNatGateway({\n    datacenterId: \"datacenter_id\",\n    id: \"nat_gateway_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_nat_gateway(datacenter_id=\"datacenter_id\",\n    id=\"nat_gateway_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetNatGateway.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"nat_gateway_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupNatGateway(ctx, \u0026compute.LookupNatGatewayArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"nat_gateway_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetNatGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getNatGateway(GetNatGatewayArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"nat_gateway_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getNatGateway\n      arguments:\n        datacenterId: datacenter_id\n        id: nat_gateway_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getNatGateway({\n    datacenterId: \"datacenter_id\",\n    name: \"NAT Gateway Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_nat_gateway(datacenter_id=\"datacenter_id\",\n    name=\"NAT Gateway Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetNatGateway.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"NAT Gateway Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupNatGateway(ctx, \u0026compute.LookupNatGatewayArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"NAT Gateway Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetNatGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getNatGateway(GetNatGatewayArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"NAT Gateway Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getNatGateway\n      arguments:\n        datacenterId: datacenter_id\n        name: NAT Gateway Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNatGateway.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the network load balancer forwarding rule you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing network load balancer forwarding rule that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNatGateway.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "Id for the LAN connected to the NAT gateway\n",
                        "type": "string"
                    },
                    "lans": {
                        "description": "Collection of LANs connected to the NAT gateway. IPs must contain valid subnet mask. If user will not provide any IP then system will generate an IP with /24 subnet.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getNatGatewayLan:getNatGatewayLan"
                        },
                        "type": "array"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of that natgateway\n",
                        "type": "string"
                    },
                    "publicIps": {
                        "description": "Collection of public IP addresses of the NAT gateway. Should be customer reserved IP addresses in that location\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "datacenterId",
                    "id",
                    "lans",
                    "name",
                    "publicIps"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getNatGatewayRule:getNatGatewayRule": {
            "description": "The **NAT Gateway Rule data source** can be used to search for and return existing NAT Gateway Rules.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getNatGatewayRule({\n    datacenterId: \"datacenter_id\",\n    natgatewayId: \"natgateway_id\",\n    id: \"natgateway_rule_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_nat_gateway_rule(datacenter_id=\"datacenter_id\",\n    natgateway_id=\"natgateway_id\",\n    id=\"natgateway_rule_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetNatGatewayRule.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        NatgatewayId = \"natgateway_id\",\n        Id = \"natgateway_rule_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupNatGatewayRule(ctx, \u0026compute.LookupNatGatewayRuleArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tNatgatewayId: \"natgateway_id\",\n\t\t\tId:           pulumi.StringRef(\"natgateway_rule_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetNatGatewayRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getNatGatewayRule(GetNatGatewayRuleArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .natgatewayId(\"natgateway_id\")\n            .id(\"natgateway_rule_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getNatGatewayRule\n      arguments:\n        datacenterId: datacenter_id\n        natgatewayId: natgateway_id\n        id: natgateway_rule_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getNatGatewayRule({\n    datacenterId: \"datacenter_id\",\n    natgatewayId: \"natgateway_id\",\n    name: \"NAT Gateway Rule Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_nat_gateway_rule(datacenter_id=\"datacenter_id\",\n    natgateway_id=\"natgateway_id\",\n    name=\"NAT Gateway Rule Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetNatGatewayRule.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        NatgatewayId = \"natgateway_id\",\n        Name = \"NAT Gateway Rule Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupNatGatewayRule(ctx, \u0026compute.LookupNatGatewayRuleArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tNatgatewayId: \"natgateway_id\",\n\t\t\tName:         pulumi.StringRef(\"NAT Gateway Rule Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetNatGatewayRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getNatGatewayRule(GetNatGatewayRuleArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .natgatewayId(\"natgateway_id\")\n            .name(\"NAT Gateway Rule Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getNatGatewayRule\n      arguments:\n        datacenterId: datacenter_id\n        natgatewayId: natgateway_id\n        name: NAT Gateway Rule Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNatGatewayRule.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the NAT gateway rule you want to search for.\n\nBoth \u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`natgatewayId`\" pulumi-lang-dotnet=\"`NatgatewayId`\" pulumi-lang-go=\"`natgatewayId`\" pulumi-lang-python=\"`natgateway_id`\" pulumi-lang-yaml=\"`natgatewayId`\" pulumi-lang-java=\"`natgatewayId`\"\u003e`natgatewayId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing NAT gateway rule that you want to search for.\n"
                    },
                    "natgatewayId": {
                        "type": "string",
                        "description": "Nat Gateway's UUID.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "natgatewayId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNatGatewayRule.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "Id of the NAT gateway rule\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the NAT gateway rule\n",
                        "type": "string"
                    },
                    "natgatewayId": {
                        "type": "string"
                    },
                    "protocol": {
                        "description": "Protocol of the NAT gateway rule. Defaults to ALL. If protocol is 'ICMP' then targetPortRange start and end cannot be set.\n",
                        "type": "string"
                    },
                    "publicIp": {
                        "description": "Public IP address of the NAT gateway rule. Specifies the address used for masking outgoing packets source address field. Should be one of the customer reserved IP address already configured on the NAT gateway resource\n",
                        "type": "string"
                    },
                    "sourceSubnet": {
                        "description": "Source subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets source IP address.\n",
                        "type": "string"
                    },
                    "targetPortRanges": {
                        "description": "Target port range of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on destination port. If none is provided, rule will match any port\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getNatGatewayRuleTargetPortRange:getNatGatewayRuleTargetPortRange"
                        },
                        "type": "array"
                    },
                    "targetSubnet": {
                        "description": "Target or destination subnet of the NAT gateway rule. For SNAT rules it specifies which packets this translation rule applies to based on the packets destination IP address. If none is provided, rule will match any address.\n",
                        "type": "string"
                    },
                    "type": {
                        "description": "ype of the NAT gateway rule.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "id",
                    "name",
                    "natgatewayId",
                    "protocol",
                    "publicIp",
                    "sourceSubnet",
                    "targetPortRanges",
                    "targetSubnet",
                    "type"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getNic:getNic": {
            "description": "The **Nic data source** can be used to search for and return existing nics.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getNic({\n    datacenterId: \"datancenter_id\",\n    serverId: \"server_id\",\n    id: \"nic_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_nic(datacenter_id=\"datancenter_id\",\n    server_id=\"server_id\",\n    id=\"nic_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetNic.Invoke(new()\n    {\n        DatacenterId = \"datancenter_id\",\n        ServerId = \"server_id\",\n        Id = \"nic_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupNic(ctx, \u0026compute.LookupNicArgs{\n\t\t\tDatacenterId: \"datancenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tId:           pulumi.StringRef(\"nic_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetNicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getNic(GetNicArgs.builder()\n            .datacenterId(\"datancenter_id\")\n            .serverId(\"server_id\")\n            .id(\"nic_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getNic\n      arguments:\n        datacenterId: datancenter_id\n        serverId: server_id\n        id: nic_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getNic({\n    datacenterId: \"datancenter_id\",\n    serverId: \"server_id\",\n    name: \"Nic Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_nic(datacenter_id=\"datancenter_id\",\n    server_id=\"server_id\",\n    name=\"Nic Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetNic.Invoke(new()\n    {\n        DatacenterId = \"datancenter_id\",\n        ServerId = \"server_id\",\n        Name = \"Nic Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupNic(ctx, \u0026compute.LookupNicArgs{\n\t\t\tDatacenterId: \"datancenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tName:         pulumi.StringRef(\"Nic Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetNicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getNic(GetNicArgs.builder()\n            .datacenterId(\"datancenter_id\")\n            .serverId(\"server_id\")\n            .name(\"Nic Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getNic\n      arguments:\n        datacenterId: datancenter_id\n        serverId: server_id\n        name: Nic Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNic.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "[string] The ID of a Virtual Data Center.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the nic you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided.\nIf none, are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the LAN.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "[string] The ID of a server.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "serverId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNic.\n",
                "properties": {
                    "datacenterId": {
                        "description": "The ID of a Virtual Data Center.\n",
                        "type": "string"
                    },
                    "deviceNumber": {
                        "description": "The Logical Unit Number (LUN) of the storage volume. Null if this NIC was created from CloudAPI and no DCD changes were done on the Datacenter.\n",
                        "type": "integer"
                    },
                    "dhcp": {
                        "description": "Indicates if the NIC should get an IP address using DHCP (true) or not (false).\n",
                        "type": "boolean"
                    },
                    "dhcpv6": {
                        "type": "boolean"
                    },
                    "firewallActive": {
                        "description": "If this resource is set to true and is nested under a server resource firewall, with open SSH port, resource must be nested under the NIC.\n",
                        "type": "boolean"
                    },
                    "firewallType": {
                        "description": "The type of firewall rules that will be allowed on the NIC. If it is not specified it will take the default value INGRESS\n",
                        "type": "string"
                    },
                    "flowlogs": {
                        "description": "Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getNicFlowlog:getNicFlowlog"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The id of the NIC.\n",
                        "type": "string"
                    },
                    "ips": {
                        "description": "Collection of IP addresses assigned to a nic. Explicitly assigned public IPs need to come from reserved IP blocks, Passing value null or empty array will assign an IP address automatically.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "ipv6CidrBlock": {
                        "type": "string"
                    },
                    "ipv6Ips": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "lan": {
                        "description": "The LAN ID the NIC will sit on.\n",
                        "type": "integer"
                    },
                    "location": {
                        "type": "string"
                    },
                    "mac": {
                        "description": "The MAC address of the NIC.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Specifies the name of the flow log.\n",
                        "type": "string"
                    },
                    "pciSlot": {
                        "description": "The PCI slot number of the Nic.\n",
                        "type": "integer"
                    },
                    "securityGroupsIds": {
                        "description": "The list of Security Group IDs for the resource.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "serverId": {
                        "description": "The ID of a server.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "deviceNumber",
                    "dhcp",
                    "dhcpv6",
                    "firewallActive",
                    "firewallType",
                    "flowlogs",
                    "id",
                    "ips",
                    "ipv6CidrBlock",
                    "ipv6Ips",
                    "lan",
                    "mac",
                    "name",
                    "pciSlot",
                    "securityGroupsIds",
                    "serverId"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getResource:getResource": {
            "description": "The **Resource data source** can be used to search for and return any existing IonosCloud resource and optionally their group associations.\nYou can provide a string for the resource type (datacenter,image,snapshot,ipblock) and/or resource id parameters which will be queries against available resources.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getResource({\n    resourceId: \"resource_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_resource(resource_id=\"resource_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetResource.Invoke(new()\n    {\n        ResourceId = \"resource_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetResource(ctx, \u0026compute.GetResourceArgs{\n\t\t\tResourceId: pulumi.StringRef(\"resource_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getResource(GetResourceArgs.builder()\n            .resourceId(\"resource_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getResource\n      arguments:\n        resourceId: resource_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Type\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getResource({\n    resourceType: \"datacenter\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_resource(resource_type=\"datacenter\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetResource.Invoke(new()\n    {\n        ResourceType = \"datacenter\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetResource(ctx, \u0026compute.GetResourceArgs{\n\t\t\tResourceType: pulumi.StringRef(\"datacenter\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getResource(GetResourceArgs.builder()\n            .resourceType(\"datacenter\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getResource\n      arguments:\n        resourceType: datacenter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By ID \u0026 Type\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getResource({\n    resourceType: \"datacenter\",\n    resourceId: \"resource_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_resource(resource_type=\"datacenter\",\n    resource_id=\"resource_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetResource.Invoke(new()\n    {\n        ResourceType = \"datacenter\",\n        ResourceId = \"resource_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetResource(ctx, \u0026compute.GetResourceArgs{\n\t\t\tResourceType: pulumi.StringRef(\"datacenter\"),\n\t\t\tResourceId:   pulumi.StringRef(\"resource_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getResource(GetResourceArgs.builder()\n            .resourceType(\"datacenter\")\n            .resourceId(\"resource_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getResource\n      arguments:\n        resourceType: datacenter\n        resourceId: resource_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getResource.\n",
                "properties": {
                    "resourceId": {
                        "type": "string",
                        "description": "The ID of the specific resource to retrieve information about.\n"
                    },
                    "resourceType": {
                        "type": "string",
                        "description": "The specific type of resources to retrieve information about.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getResource.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "resourceId": {
                        "type": "string"
                    },
                    "resourceType": {
                        "type": "string"
                    }
                },
                "required": [
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getS3Key:getS3Key": {
            "description": "The **IONOS Object Storage key data source** can be used to search for and return an existing IONOS Object Storage key.\nYou can provide a string id which will be compared with provisioned IONOS Object Storage keys.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getS3Key({\n    id: \"key_id\",\n    userId: \"user-uuid\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_s3_key(id=\"key_id\",\n    user_id=\"user-uuid\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetS3Key.Invoke(new()\n    {\n        Id = \"key_id\",\n        UserId = \"user-uuid\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupS3Key(ctx, \u0026compute.LookupS3KeyArgs{\n\t\t\tId:     pulumi.StringRef(\"key_id\"),\n\t\t\tUserId: \"user-uuid\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetS3KeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getS3Key(GetS3KeyArgs.builder()\n            .id(\"key_id\")\n            .userId(\"user-uuid\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getS3Key\n      arguments:\n        id: key_id\n        userId: user-uuid\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getS3Key.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the IONOS Object Storage key you want to search for.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "[string] The UUID of the user owning the IONOS Object Storage Key.\n"
                    }
                },
                "type": "object",
                "required": [
                    "userId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getS3Key.\n",
                "properties": {
                    "active": {
                        "description": "The state of the IONOS Object Storage key\n",
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The id of the IONOS Object Storage key\n",
                        "type": "string"
                    },
                    "secretKey": {
                        "description": "(Computed)The IONOS Object Storage Secret key.\n",
                        "type": "string"
                    },
                    "userId": {
                        "description": "The ID of the user that owns the key\n",
                        "type": "string"
                    }
                },
                "required": [
                    "active",
                    "id",
                    "secretKey",
                    "userId"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getServer:getServer": {
            "description": "The **Server data source** can be used to search for and return existing servers. \nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getServer({\n    datacenterId: \"datacenter_id\",\n    id: \"server_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_server(datacenter_id=\"datacenter_id\",\n    id=\"server_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"server_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupServer(ctx, \u0026compute.LookupServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"server_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getServer(GetServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"server_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getServer\n      arguments:\n        datacenterId: datacenter_id\n        id: server_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getServer({\n    datacenterId: \"datacenter_id\",\n    name: \"Server Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_server(datacenter_id=\"datacenter_id\",\n    name=\"Server Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"Server Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupServer(ctx, \u0026compute.LookupServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"Server Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getServer(GetServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"Server Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getServer\n      arguments:\n        datacenterId: datacenter_id\n        name: Server Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getServer.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Location of that image/snapshot\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing server that you want to search for.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of firewall rule\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getServer.\n",
                "properties": {
                    "availabilityZone": {
                        "description": "The availability zone in which the volume should exist\n",
                        "type": "string"
                    },
                    "bootCdrom": {
                        "type": "string"
                    },
                    "bootImage": {
                        "type": "string"
                    },
                    "bootVolume": {
                        "type": "string"
                    },
                    "cdroms": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getServerCdrom:getServerCdrom"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "description": "The total number of cores for the server\n",
                        "type": "integer"
                    },
                    "cpuFamily": {
                        "description": "CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource.\n",
                        "type": "string"
                    },
                    "datacenterId": {
                        "description": "The id of the datacenter\n",
                        "type": "string"
                    },
                    "hostname": {
                        "description": "The hostname of the resource.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The Id of the label\n",
                        "type": "string"
                    },
                    "labels": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getServerLabel:getServerLabel"
                        },
                        "type": "array"
                    },
                    "location": {
                        "description": "Location of that image/snapshot\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the firewall rule\n",
                        "type": "string"
                    },
                    "nicMultiQueue": {
                        "description": "Specifies whether the \u003cspan pulumi-lang-nodejs=\"`nicMultiQueue`\" pulumi-lang-dotnet=\"`NicMultiQueue`\" pulumi-lang-go=\"`nicMultiQueue`\" pulumi-lang-python=\"`nic_multi_queue`\" pulumi-lang-yaml=\"`nicMultiQueue`\" pulumi-lang-java=\"`nicMultiQueue`\"\u003e`nicMultiQueue`\u003c/span\u003e feature is enabled or not.\n",
                        "type": "boolean"
                    },
                    "nics": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getServerNic:getServerNic"
                        },
                        "type": "array"
                    },
                    "ram": {
                        "description": "The amount of memory for the server in MB\n",
                        "type": "integer"
                    },
                    "securityGroupsIds": {
                        "description": "The list of Security Group IDs for the resource.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "templateUuid": {
                        "description": "The UUID of the template for creating a CUBE server; the available templates for CUBE servers can be found on the templates resource\n",
                        "type": "string"
                    },
                    "token": {
                        "type": "string"
                    },
                    "type": {
                        "description": "The type of firewall rule\n",
                        "type": "string"
                    },
                    "vmState": {
                        "description": "Status of the virtual Machine\n",
                        "type": "string"
                    },
                    "volumes": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getServerVolume:getServerVolume"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "availabilityZone",
                    "bootCdrom",
                    "bootImage",
                    "bootVolume",
                    "cdroms",
                    "cores",
                    "cpuFamily",
                    "datacenterId",
                    "hostname",
                    "id",
                    "labels",
                    "name",
                    "nicMultiQueue",
                    "nics",
                    "ram",
                    "securityGroupsIds",
                    "token",
                    "type",
                    "vmState",
                    "volumes"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getServers:getServers": {
            "description": "The **Servers data source** can be used to search for and return existing servers based on filters used.\n\n## Example Usage\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getServers({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    filters: [{\n        name: \"name\",\n        value: \"server_name_to_look_here\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_servers(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    filters=[{\n        \"name\": \"name\",\n        \"value\": \"server_name_to_look_here\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetServers.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Filters = new[]\n        {\n            new Ionoscloud.Compute.Inputs.GetServersFilterInputArgs\n            {\n                Name = \"name\",\n                Value = \"server_name_to_look_here\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetServers(ctx, \u0026compute.GetServersArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tFilters: []compute.GetServersFilter{\n\t\t\t\t{\n\t\t\t\t\tName:  \"name\",\n\t\t\t\t\tValue: \"server_name_to_look_here\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetServersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getServers(GetServersArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .filters(GetServersFilterArgs.builder()\n                .name(\"name\")\n                .value(\"server_name_to_look_here\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getServers\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        filters:\n          - name: name\n            value: server_name_to_look_here\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By CPU Family\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getServers({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    filters: [{\n        name: \"cpu_family\",\n        value: \"INTEL_XEON\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_servers(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    filters=[{\n        \"name\": \"cpu_family\",\n        \"value\": \"INTEL_XEON\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetServers.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Filters = new[]\n        {\n            new Ionoscloud.Compute.Inputs.GetServersFilterInputArgs\n            {\n                Name = \"cpu_family\",\n                Value = \"INTEL_XEON\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetServers(ctx, \u0026compute.GetServersArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tFilters: []compute.GetServersFilter{\n\t\t\t\t{\n\t\t\t\t\tName:  \"cpu_family\",\n\t\t\t\t\tValue: \"INTEL_XEON\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetServersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getServers(GetServersArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .filters(GetServersFilterArgs.builder()\n                .name(\"cpu_family\")\n                .value(\"INTEL_XEON\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getServers\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        filters:\n          - name: cpu_family\n            value: INTEL_XEON\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### By Name and Cores\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getServers({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    filters: [\n        {\n            name: \"name\",\n            value: \"test\",\n        },\n        {\n            name: \"cores\",\n            value: \"1\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_servers(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    filters=[\n        {\n            \"name\": \"name\",\n            \"value\": \"test\",\n        },\n        {\n            \"name\": \"cores\",\n            \"value\": \"1\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetServers.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Filters = new[]\n        {\n            new Ionoscloud.Compute.Inputs.GetServersFilterInputArgs\n            {\n                Name = \"name\",\n                Value = \"test\",\n            },\n            new Ionoscloud.Compute.Inputs.GetServersFilterInputArgs\n            {\n                Name = \"cores\",\n                Value = \"1\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetServers(ctx, \u0026compute.GetServersArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tFilters: []compute.GetServersFilter{\n\t\t\t\t{\n\t\t\t\t\tName:  \"name\",\n\t\t\t\t\tValue: \"test\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"cores\",\n\t\t\t\t\tValue: \"1\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetServersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getServers(GetServersArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .filters(            \n                GetServersFilterArgs.builder()\n                    .name(\"name\")\n                    .value(\"test\")\n                    .build(),\n                GetServersFilterArgs.builder()\n                    .name(\"cores\")\n                    .value(\"1\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getServers\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        filters:\n          - name: name\n            value: test\n          - name: cores\n            value: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getServers.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Name of an existing datacenter that the servers are a part of\n"
                    },
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getServersFilter:getServersFilter"
                        },
                        "description": "One or more name/value pairs to filter off of. You can use most base fields in the server resource. These do **NOT** include nested fields in nics or volume nested fields.\n\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e must be provided. If \u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e is missing , the datasource will return an error.\n\n**NOTE:** Lookup by filter is partial. Searching for a server using filter name and value \u003cspan pulumi-lang-nodejs=\"`test`\" pulumi-lang-dotnet=\"`Test`\" pulumi-lang-go=\"`test`\" pulumi-lang-python=\"`test`\" pulumi-lang-yaml=\"`test`\" pulumi-lang-java=\"`test`\"\u003e`test`\u003c/span\u003e, will find all servers that have \u003cspan pulumi-lang-nodejs=\"`test`\" pulumi-lang-dotnet=\"`Test`\" pulumi-lang-go=\"`test`\" pulumi-lang-python=\"`test`\" pulumi-lang-yaml=\"`test`\" pulumi-lang-java=\"`test`\"\u003e`test`\u003c/span\u003e in the name.\nFor example, it will find servers named \u003cspan pulumi-lang-nodejs=\"`test`\" pulumi-lang-dotnet=\"`Test`\" pulumi-lang-go=\"`test`\" pulumi-lang-python=\"`test`\" pulumi-lang-yaml=\"`test`\" pulumi-lang-java=\"`test`\"\u003e`test`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`test1`\" pulumi-lang-dotnet=\"`Test1`\" pulumi-lang-go=\"`test1`\" pulumi-lang-python=\"`test1`\" pulumi-lang-yaml=\"`test1`\" pulumi-lang-java=\"`test1`\"\u003e`test1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`testsomething`\" pulumi-lang-dotnet=\"`Testsomething`\" pulumi-lang-go=\"`testsomething`\" pulumi-lang-python=\"`testsomething`\" pulumi-lang-yaml=\"`testsomething`\" pulumi-lang-java=\"`testsomething`\"\u003e`testsomething`\u003c/span\u003e.\n\n**NOTE:** You cannot search by \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`imageName`\u003c/span\u003e by providing an alias like \u003cspan pulumi-lang-nodejs=\"`ubuntu`\" pulumi-lang-dotnet=\"`Ubuntu`\" pulumi-lang-go=\"`ubuntu`\" pulumi-lang-python=\"`ubuntu`\" pulumi-lang-yaml=\"`ubuntu`\" pulumi-lang-java=\"`ubuntu`\"\u003e`ubuntu`\u003c/span\u003e.\n"
                    },
                    "location": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getServers.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getServersFilter:getServersFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "servers": {
                        "description": "list of servers that matches the filters provided.\nFor a full reference of all attributes returned, check out documentation\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getServersServer:getServersServer"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "datacenterId",
                    "servers",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getShare:getShare": {
            "description": "The **Share data source** can be used to search for and return an existing share object.\nYou need to provide the\u003cspan pulumi-lang-nodejs=\" groupId \" pulumi-lang-dotnet=\" GroupId \" pulumi-lang-go=\" groupId \" pulumi-lang-python=\" group_id \" pulumi-lang-yaml=\" groupId \" pulumi-lang-java=\" groupId \"\u003e groupId \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" resourceId \" pulumi-lang-dotnet=\" ResourceId \" pulumi-lang-go=\" resourceId \" pulumi-lang-python=\" resource_id \" pulumi-lang-yaml=\" resourceId \" pulumi-lang-java=\" resourceId \"\u003e resourceId \u003c/span\u003eto get the group resources for the shared resource.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getShare({\n    groupId: \"group_id\",\n    resourceId: \"resource_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_share(group_id=\"group_id\",\n    resource_id=\"resource_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetShare.Invoke(new()\n    {\n        GroupId = \"group_id\",\n        ResourceId = \"resource_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupShare(ctx, \u0026compute.LookupShareArgs{\n\t\t\tGroupId:    \"group_id\",\n\t\t\tResourceId: \"resource_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetShareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getShare(GetShareArgs.builder()\n            .groupId(\"group_id\")\n            .resourceId(\"resource_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getShare\n      arguments:\n        groupId: group_id\n        resourceId: resource_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getShare.\n",
                "properties": {
                    "groupId": {
                        "type": "string",
                        "description": "The ID of the specific group containing the resource to update.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The ID of the specific resource to update.\n\n\u003cspan pulumi-lang-nodejs=\"`resourceId`\" pulumi-lang-dotnet=\"`ResourceId`\" pulumi-lang-go=\"`resourceId`\" pulumi-lang-python=\"`resource_id`\" pulumi-lang-yaml=\"`resourceId`\" pulumi-lang-java=\"`resourceId`\"\u003e`resourceId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`groupId`\u003c/span\u003e must be provided. If any of them are missing, the datasource will return an error.\n"
                    }
                },
                "type": "object",
                "required": [
                    "groupId",
                    "resourceId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getShare.\n",
                "properties": {
                    "editPrivilege": {
                        "description": "The flag that specifies if the group has permission to edit privileges on this resource.\n",
                        "type": "boolean"
                    },
                    "groupId": {
                        "description": "The ID of the specific group containing the resource to update.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the share resource.\n",
                        "type": "string"
                    },
                    "resourceId": {
                        "description": "The ID of the specific resource to update.\n",
                        "type": "string"
                    },
                    "sharePrivilege": {
                        "description": "The group has permission to share this resource.\n",
                        "type": "boolean"
                    }
                },
                "required": [
                    "editPrivilege",
                    "groupId",
                    "id",
                    "resourceId",
                    "sharePrivilege"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getSnapshot:getSnapshot": {
            "description": "The **Snapshot data source** can be used to search for and return an existing snapshot which can then be used to provision a server. If a single match is found, it will be returned. If your search results in multiple matches, an error will be returned. When this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getSnapshot({\n    id: \"snapshot_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_snapshot(id=\"snapshot_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetSnapshot.Invoke(new()\n    {\n        Id = \"snapshot_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupSnapshot(ctx, \u0026compute.LookupSnapshotArgs{\n\t\t\tId: pulumi.StringRef(\"snapshot_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getSnapshot(GetSnapshotArgs.builder()\n            .id(\"snapshot_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getSnapshot\n      arguments:\n        id: snapshot_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name \u0026 Size \u0026 Location\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getSnapshot({\n    name: \"Snapshot Example\",\n    size: 2,\n    location: \"us/las\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_snapshot(name=\"Snapshot Example\",\n    size=2,\n    location=\"us/las\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetSnapshot.Invoke(new()\n    {\n        Name = \"Snapshot Example\",\n        Size = 2,\n        Location = \"us/las\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupSnapshot(ctx, \u0026compute.LookupSnapshotArgs{\n\t\t\tName:     pulumi.StringRef(\"Snapshot Example\"),\n\t\t\tSize:     pulumi.IntRef(2),\n\t\t\tLocation: pulumi.StringRef(\"us/las\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getSnapshot(GetSnapshotArgs.builder()\n            .name(\"Snapshot Example\")\n            .size(2)\n            .location(\"us/las\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getSnapshot\n      arguments:\n        name: Snapshot Example\n        size: '2'\n        location: us/las\n```\n\u003c!--End PulumiCodeChooser --\u003e\nNote: The size argument is in GB\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSnapshot.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "UUID of an existing snapshot that you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Existing snapshot's location.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing snapshot that you want to search for.\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the snapshot to look for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\nAdditionally, you can add \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e along with the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e argument for a more refined search.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getSnapshot.\n",
                "properties": {
                    "cpuHotPlug": {
                        "description": "Is capable of CPU hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "cpuHotUnplug": {
                        "description": "Is capable of CPU hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "description": {
                        "description": "Human readable description\n",
                        "type": "string"
                    },
                    "discScsiHotPlug": {
                        "description": "Is capable of SCSI drive hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "discScsiHotUnplug": {
                        "description": "Is capable of SCSI drive hot unplug (no reboot required). This works only for non-Windows virtual Machines.\n",
                        "type": "boolean"
                    },
                    "discVirtioHotPlug": {
                        "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "discVirtioHotUnplug": {
                        "description": "Is capable of Virt-IO drive hot unplug (no reboot required). This works only for non-Windows virtual Machines.\n",
                        "type": "boolean"
                    },
                    "id": {
                        "description": "UUID of the snapshot\n",
                        "type": "string"
                    },
                    "licenceType": {
                        "description": "OS type of this Snapshot\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "Location of that image/snapshot\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the snapshot.\n",
                        "type": "string"
                    },
                    "nicHotPlug": {
                        "description": "Is capable of nic hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "nicHotUnplug": {
                        "description": "Is capable of nic hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "ramHotPlug": {
                        "description": "Is capable of memory hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "ramHotUnplug": {
                        "description": "Is capable of memory hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "requireLegacyBios": {
                        "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n",
                        "type": "boolean"
                    },
                    "secAuthProtection": {
                        "description": "Boolean value representing if the snapshot requires extra protection e.g. two factor protection\n",
                        "type": "boolean"
                    },
                    "size": {
                        "description": "The size of the image in GB\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "cpuHotPlug",
                    "cpuHotUnplug",
                    "description",
                    "discScsiHotPlug",
                    "discScsiHotUnplug",
                    "discVirtioHotPlug",
                    "discVirtioHotUnplug",
                    "id",
                    "licenceType",
                    "location",
                    "name",
                    "nicHotPlug",
                    "nicHotUnplug",
                    "ramHotPlug",
                    "ramHotUnplug",
                    "requireLegacyBios",
                    "secAuthProtection",
                    "size"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getTargetGroup:getTargetGroup": {
            "description": "The **Target Group** data source can be used to search for and return an existing Application Load Balancer Target Group.\nYou can provide a string for the name parameter which will be compared with provisioned Application Load Balancer Target Groups.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n## Example Usage\n\n### By Id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getTargetGroup({\n    id: \"target_group_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_target_group(id=\"target_group_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTargetGroup.Invoke(new()\n    {\n        Id = \"target_group_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupTargetGroup(ctx, \u0026compute.LookupTargetGroupArgs{\n\t\t\tId: pulumi.StringRef(\"target_group_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTargetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTargetGroup(GetTargetGroupArgs.builder()\n            .id(\"target_group_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTargetGroup\n      arguments:\n        id: target_group_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getTargetGroup({\n    name: \"Target Group Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_target_group(name=\"Target Group Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTargetGroup.Invoke(new()\n    {\n        Name = \"Target Group Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupTargetGroup(ctx, \u0026compute.LookupTargetGroupArgs{\n\t\t\tName: pulumi.StringRef(\"Target Group Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTargetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTargetGroup(GetTargetGroupArgs.builder()\n            .name(\"Target Group Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTargetGroup\n      arguments:\n        name: Target Group Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name with Partial Match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getTargetGroup({\n    name: \"Example\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_target_group(name=\"Example\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTargetGroup.Invoke(new()\n    {\n        Name = \"Example\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupTargetGroup(ctx, \u0026compute.LookupTargetGroupArgs{\n\t\t\tName:         pulumi.StringRef(\"Example\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTargetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTargetGroup(GetTargetGroupArgs.builder()\n            .name(\"Example\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTargetGroup\n      arguments:\n        name: Example\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getTargetGroup.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the target group you want to search for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing target group that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using name argument. Default value is false.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getTargetGroup.\n",
                "properties": {
                    "algorithm": {
                        "description": "Balancing algorithm.\n",
                        "type": "string"
                    },
                    "healthChecks": {
                        "description": "Health check attributes for Target Group.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getTargetGroupHealthCheck:getTargetGroupHealthCheck"
                        },
                        "type": "array"
                    },
                    "httpHealthChecks": {
                        "description": "Http health check attributes for Target Group\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getTargetGroupHttpHealthCheck:getTargetGroupHttpHealthCheck"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The Id of that Target group\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of that Target Group.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "protocol": {
                        "description": "Balancing protocol.\n",
                        "type": "string"
                    },
                    "protocolVersion": {
                        "description": "The forwarding protocol version. Value is ignored when protocol is not 'HTTP'.\n",
                        "type": "string"
                    },
                    "targets": {
                        "description": "Array of items in the collection\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getTargetGroupTarget:getTargetGroupTarget"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "algorithm",
                    "healthChecks",
                    "httpHealthChecks",
                    "id",
                    "name",
                    "protocol",
                    "protocolVersion",
                    "targets"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getTemplate:getTemplate": {
            "description": "The **Template data source** can be used to search for and return existing templates by providing any of template properties (name, cores, ram, storage_size).\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getTemplate({\n    name: \"CUBES S\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_template(name=\"CUBES S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTemplate.Invoke(new()\n    {\n        Name = \"CUBES S\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetTemplate(ctx, \u0026compute.GetTemplateArgs{\n\t\t\tName: pulumi.StringRef(\"CUBES S\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()\n            .name(\"CUBES S\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTemplate\n      arguments:\n        name: CUBES S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Cores\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getTemplate({\n    cores: 6,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_template(cores=6)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTemplate.Invoke(new()\n    {\n        Cores = 6,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetTemplate(ctx, \u0026compute.GetTemplateArgs{\n\t\t\tCores: pulumi.Float64Ref(6),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()\n            .cores(6)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTemplate\n      arguments:\n        cores: 6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Ram\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getTemplate({\n    ram: 49152,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_template(ram=49152)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTemplate.Invoke(new()\n    {\n        Ram = 49152,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetTemplate(ctx, \u0026compute.GetTemplateArgs{\n\t\t\tRam: pulumi.Float64Ref(49152),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()\n            .ram(49152)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTemplate\n      arguments:\n        ram: 49152\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Storage Size\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getTemplate({\n    storageSize: 80,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_template(storage_size=80)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetTemplate.Invoke(new()\n    {\n        StorageSize = 80,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetTemplate(ctx, \u0026compute.GetTemplateArgs{\n\t\t\tStorageSize: pulumi.Float64Ref(80),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getTemplate(GetTemplateArgs.builder()\n            .storageSize(80)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getTemplate\n      arguments:\n        storageSize: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getTemplate.\n",
                "properties": {
                    "category": {
                        "type": "string",
                        "description": "The category of the template.\n\nAny of the arguments ca be provided. If none, the datasource will return an error.\n"
                    },
                    "cores": {
                        "type": "number",
                        "description": "The CPU cores count.\n"
                    },
                    "gpuses": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getTemplateGpus:getTemplateGpus"
                        },
                        "description": "List of GPUs in the template\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name of that resource.\n"
                    },
                    "ram": {
                        "type": "number",
                        "description": "The RAM size in MB.\n"
                    },
                    "storageSize": {
                        "type": "number",
                        "description": "The storage size in GB.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getTemplate.\n",
                "properties": {
                    "category": {
                        "description": "The category of the template\n",
                        "type": "string"
                    },
                    "cores": {
                        "description": "The CPU cores count\n",
                        "type": "number"
                    },
                    "gpuses": {
                        "description": "List of GPUs in the template\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getTemplateGpus:getTemplateGpus"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "Id of template\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of template\n",
                        "type": "string"
                    },
                    "ram": {
                        "description": "The RAM size in MB\n",
                        "type": "number"
                    },
                    "storageSize": {
                        "description": "The storage size in GB\n",
                        "type": "number"
                    }
                },
                "required": [
                    "category",
                    "cores",
                    "gpuses",
                    "id",
                    "name",
                    "ram",
                    "storageSize"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getUser:getUser": {
            "description": "The **User data source** can be used to search for and return existing users.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getUser({\n    id: \"user_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_user(id=\"user_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetUser.Invoke(new()\n    {\n        Id = \"user_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupUser(ctx, \u0026compute.LookupUserArgs{\n\t\t\tId: pulumi.StringRef(\"user_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getUser(GetUserArgs.builder()\n            .id(\"user_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getUser\n      arguments:\n        id: user_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Email\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getUser({\n    email: \"example@email.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_user(email=\"example@email.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetUser.Invoke(new()\n    {\n        Email = \"example@email.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupUser(ctx, \u0026compute.LookupUserArgs{\n\t\t\tEmail: pulumi.StringRef(\"example@email.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getUser(GetUserArgs.builder()\n            .email(\"example@email.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getUser\n      arguments:\n        email: example@email.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Email from Env Variables - Current User\ndata \u003cspan pulumi-lang-nodejs=\"\"ionoscloud.compute.User\"\" pulumi-lang-dotnet=\"\"ionoscloud.compute.User\"\" pulumi-lang-go=\"\"compute.User\"\" pulumi-lang-python=\"\"compute.User\"\" pulumi-lang-yaml=\"\"ionoscloud.compute.User\"\" pulumi-lang-java=\"\"ionoscloud.compute.User\"\"\u003e\"ionoscloud.compute.User\"\u003c/span\u003e \"example\" {\n}\n",
            "inputs": {
                "description": "A collection of arguments for invoking getUser.\n",
                "properties": {
                    "email": {
                        "type": "string",
                        "description": "Email of an existing user that you want to search for.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the user you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e can be provided. If no argument is set, the provider will search for the **email that was provided for the configuration**. If none is found, the provider will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getUser.\n",
                "properties": {
                    "active": {
                        "description": "Indicates if the user is active\n",
                        "type": "boolean"
                    },
                    "administrator": {
                        "description": "Indicates if the user has administrative rights. Administrators do not need to be managed in groups, as they automatically have access to all resources associated with the contract.\n",
                        "type": "boolean"
                    },
                    "email": {
                        "description": "The e-mail address for the user.\n",
                        "type": "string"
                    },
                    "firstName": {
                        "description": "The first name for the user.\n",
                        "type": "string"
                    },
                    "forceSecAuth": {
                        "description": "Indicates if secure (two-factor) authentication should be forced for the user (true) or not (false).\n",
                        "type": "boolean"
                    },
                    "groups": {
                        "description": "Shows the id and name of the groups that the user is a member of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getUserGroup:getUserGroup"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The id of the user.\n",
                        "type": "string"
                    },
                    "lastName": {
                        "description": "The last name for the user.\n",
                        "type": "string"
                    },
                    "s3CanonicalUserId": {
                        "description": "Canonical (S3) id of the user for a given identity\n",
                        "type": "string"
                    },
                    "secAuthActive": {
                        "description": "Indicates if secure authentication is active for the user or not\n",
                        "type": "boolean"
                    }
                },
                "required": [
                    "active",
                    "administrator",
                    "firstName",
                    "forceSecAuth",
                    "groups",
                    "id",
                    "lastName",
                    "s3CanonicalUserId",
                    "secAuthActive"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getVCPUServer:getVCPUServer": {
            "description": "The [VCPU Server data source](https://docs.ionos.com/cloud/compute-services/compute-engine/vcpu-server) can be used to search for and return existing VCPU servers. \nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getVCPUServer({\n    datacenterId: \"datacenter_id\",\n    id: \"server_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_vcpu_server(datacenter_id=\"datacenter_id\",\n    id=\"server_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetVCPUServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"server_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupVCPUServer(ctx, \u0026compute.LookupVCPUServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"server_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetVCPUServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getVCPUServer(GetVCPUServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"server_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getVCPUServer\n      arguments:\n        datacenterId: datacenter_id\n        id: server_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getVCPUServer({\n    datacenterId: \"datacenter_id\",\n    name: \"VCPU Server Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_vcpu_server(datacenter_id=\"datacenter_id\",\n    name=\"VCPU Server Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetVCPUServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"VCPU Server Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupVCPUServer(ctx, \u0026compute.LookupVCPUServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"VCPU Server Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetVCPUServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getVCPUServer(GetVCPUServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"VCPU Server Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getVCPUServer\n      arguments:\n        datacenterId: datacenter_id\n        name: VCPU Server Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVCPUServer.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Location of that image/snapshot\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing server that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getVCPUServer.\n",
                "properties": {
                    "availabilityZone": {
                        "description": "The availability zone in which the volume should exist\n",
                        "type": "string"
                    },
                    "bootCdrom": {
                        "type": "string"
                    },
                    "bootImage": {
                        "type": "string"
                    },
                    "bootVolume": {
                        "type": "string"
                    },
                    "cdroms": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getVCPUServerCdrom:getVCPUServerCdrom"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "description": "The total number of cores for the server\n",
                        "type": "integer"
                    },
                    "cpuFamily": {
                        "description": "CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource.\n",
                        "type": "string"
                    },
                    "datacenterId": {
                        "description": "The id of the datacenter\n",
                        "type": "string"
                    },
                    "hostname": {
                        "description": "The hostname of the server\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The Id of the label\n",
                        "type": "string"
                    },
                    "labels": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getVCPUServerLabel:getVCPUServerLabel"
                        },
                        "type": "array"
                    },
                    "location": {
                        "description": "Location of that image/snapshot\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the firewall rule\n",
                        "type": "string"
                    },
                    "nicMultiQueue": {
                        "description": "Specifies whether the \u003cspan pulumi-lang-nodejs=\"`nicMultiQueue`\" pulumi-lang-dotnet=\"`NicMultiQueue`\" pulumi-lang-go=\"`nicMultiQueue`\" pulumi-lang-python=\"`nic_multi_queue`\" pulumi-lang-yaml=\"`nicMultiQueue`\" pulumi-lang-java=\"`nicMultiQueue`\"\u003e`nicMultiQueue`\u003c/span\u003e feature is enabled or not.\n",
                        "type": "boolean"
                    },
                    "nics": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getVCPUServerNic:getVCPUServerNic"
                        },
                        "type": "array"
                    },
                    "ram": {
                        "description": "The amount of memory for the server in MB\n",
                        "type": "integer"
                    },
                    "securityGroupsIds": {
                        "description": "The list of Security Group IDs for the resource.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "token": {
                        "type": "string"
                    },
                    "type": {
                        "description": "The type of firewall rule\n",
                        "type": "string"
                    },
                    "vmState": {
                        "description": "Status of the virtual Machine\n",
                        "type": "string"
                    },
                    "volumes": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:compute/getVCPUServerVolume:getVCPUServerVolume"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "availabilityZone",
                    "bootCdrom",
                    "bootImage",
                    "bootVolume",
                    "cdroms",
                    "cores",
                    "cpuFamily",
                    "datacenterId",
                    "hostname",
                    "id",
                    "labels",
                    "name",
                    "nicMultiQueue",
                    "nics",
                    "ram",
                    "securityGroupsIds",
                    "token",
                    "type",
                    "vmState",
                    "volumes"
                ],
                "type": "object"
            }
        },
        "ionoscloud:compute/getVolume:getVolume": {
            "description": "The volume data source can be used to search for and return existing volumes.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getVolume({\n    datacenterId: \"datacenter_id\",\n    id: \"volume_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_volume(datacenter_id=\"datacenter_id\",\n    id=\"volume_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetVolume.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"volume_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupVolume(ctx, \u0026compute.LookupVolumeArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"volume_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getVolume(GetVolumeArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"volume_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getVolume\n      arguments:\n        datacenterId: datacenter_id\n        id: volume_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getVolume({\n    datacenterId: \"datacenter_id\",\n    name: \"Volume Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_volume(datacenter_id=\"datacenter_id\",\n    name=\"Volume Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetVolume.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"Volume Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupVolume(ctx, \u0026compute.LookupVolumeArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"Volume Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getVolume(GetVolumeArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"Volume Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getVolume\n      arguments:\n        datacenterId: datacenter_id\n        name: Volume Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVolume.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the volume you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\"\u003e`volume`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing volume that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getVolume.\n",
                "properties": {
                    "availabilityZone": {
                        "description": "The storage availability zone assigned to the volume: AUTO, ZONE_1, ZONE_2, or ZONE_3. This property is immutable.\n",
                        "type": "string"
                    },
                    "backupUnitId": {
                        "description": "The uuid of the Backup Unit that user has access to. The property is immutable and is only allowed to be set on a new volume creation. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.\n",
                        "type": "string"
                    },
                    "bootServer": {
                        "description": "The UUID of the attached server.\n",
                        "type": "string"
                    },
                    "bus": {
                        "description": "The bus type of the volume: VIRTIO or IDE.\n",
                        "type": "string"
                    },
                    "cpuHotPlug": {
                        "description": "Is capable of CPU hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "datacenterId": {
                        "type": "string"
                    },
                    "deviceNumber": {
                        "description": "The LUN ID of the storage volume. Null for volumes not mounted to any VM\n",
                        "type": "integer"
                    },
                    "discVirtioHotPlug": {
                        "description": "Is capable of Virt-IO drive hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "discVirtioHotUnplug": {
                        "description": "Is capable of Virt-IO drive hot unplug (no reboot required). This works only for non-Windows virtual Machines.\n",
                        "type": "boolean"
                    },
                    "diskType": {
                        "description": "The volume type: HDD or SSD.\n",
                        "type": "string"
                    },
                    "exposeSerial": {
                        "description": "If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will expose the serial id of the disk attached to the server. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will not expose the serial id. Some operating systems or software solutions require the serial id to be exposed to work properly. Exposing the serial can influence licensed software (e.g. Windows) behavior\n",
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The id of the volume.\n",
                        "type": "string"
                    },
                    "image": {
                        "description": "The image or snapshot UUID.\n",
                        "type": "string"
                    },
                    "imagePassword": {
                        "description": "Required if \u003cspan pulumi-lang-nodejs=\"`sshkeyPath`\" pulumi-lang-dotnet=\"`SshkeyPath`\" pulumi-lang-go=\"`sshkeyPath`\" pulumi-lang-python=\"`sshkey_path`\" pulumi-lang-yaml=\"`sshkeyPath`\" pulumi-lang-java=\"`sshkeyPath`\"\u003e`sshkeyPath`\u003c/span\u003e is not provided.\n",
                        "type": "string"
                    },
                    "licenceType": {
                        "description": "The type of the licence.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the volume.\n",
                        "type": "string"
                    },
                    "nicHotPlug": {
                        "description": "Is capable of nic hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "nicHotUnplug": {
                        "description": "Is capable of nic hot unplug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "ramHotPlug": {
                        "description": "Is capable of memory hot plug (no reboot required)\n",
                        "type": "boolean"
                    },
                    "requireLegacyBios": {
                        "description": "Indicates if the image requires the legacy BIOS for compatibility or specific needs.\n",
                        "type": "boolean"
                    },
                    "size": {
                        "description": "The size of the volume in GB.\n",
                        "type": "integer"
                    },
                    "sshkey": {
                        "description": "The associated public SSH key.\n",
                        "type": "string"
                    },
                    "userData": {
                        "description": "The cloud-init configuration for the volume as base64 encoded string. The property is immutable and is only allowed to be set on a new volume creation. This option will work only with cloud-init compatible images.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "availabilityZone",
                    "backupUnitId",
                    "bootServer",
                    "bus",
                    "cpuHotPlug",
                    "datacenterId",
                    "deviceNumber",
                    "discVirtioHotPlug",
                    "discVirtioHotUnplug",
                    "diskType",
                    "exposeSerial",
                    "id",
                    "image",
                    "imagePassword",
                    "licenceType",
                    "name",
                    "nicHotPlug",
                    "nicHotUnplug",
                    "ramHotPlug",
                    "requireLegacyBios",
                    "size",
                    "sshkey",
                    "userData"
                ],
                "type": "object"
            }
        },
        "ionoscloud:creg/getRegistry:getRegistry": {
            "description": "The **Container Registry data source** can be used to search for and return an existing Container Registry.\nYou can provide a string for the name parameter which will be compared with provisioned Container Registry.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n## Example Usage\n\n### By Id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.creg.getRegistry({\n    id: \"registry_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.get_registry(id=\"registry_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Creg.GetRegistry.Invoke(new()\n    {\n        Id = \"registry_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.LookupRegistry(ctx, \u0026creg.LookupRegistryArgs{\n\t\t\tId: pulumi.StringRef(\"registry_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.creg.CregFunctions;\nimport com.pulumi.ionoscloud.creg.inputs.GetRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CregFunctions.getRegistry(GetRegistryArgs.builder()\n            .id(\"registry_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:creg:getRegistry\n      arguments:\n        id: registry_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.creg.getRegistry({\n    name: \"container-registry-example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.get_registry(name=\"container-registry-example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Creg.GetRegistry.Invoke(new()\n    {\n        Name = \"container-registry-example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.LookupRegistry(ctx, \u0026creg.LookupRegistryArgs{\n\t\t\tName: pulumi.StringRef(\"container-registry-example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.creg.CregFunctions;\nimport com.pulumi.ionoscloud.creg.inputs.GetRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CregFunctions.getRegistry(GetRegistryArgs.builder()\n            .name(\"container-registry-example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:creg:getRegistry\n      arguments:\n        name: container-registry-example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name with Partial Match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.creg.getRegistry({\n    name: \"-example\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.get_registry(name=\"-example\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Creg.GetRegistry.Invoke(new()\n    {\n        Name = \"-example\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.LookupRegistry(ctx, \u0026creg.LookupRegistryArgs{\n\t\t\tName:         pulumi.StringRef(\"-example\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.creg.CregFunctions;\nimport com.pulumi.ionoscloud.creg.inputs.GetRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CregFunctions.getRegistry(GetRegistryArgs.builder()\n            .name(\"-example\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:creg:getRegistry\n      arguments:\n        name: -example\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRegistry.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the container registry you want to search for.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing container registry that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using name argument. Default value is false.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getRegistry.\n",
                "properties": {
                    "apiSubnetAllowLists": {
                        "description": "The subnet CIDRs that are allowed to connect to the registry.  Specify \"a.b.c.d/32\" for an individual IP address. __Note__: If this list is empty or not set, there are no restrictions.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "features": {
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/getRegistryFeature:getRegistryFeature"
                        },
                        "type": "array"
                    },
                    "garbageCollectionSchedules": {
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/getRegistryGarbageCollectionSchedule:getRegistryGarbageCollectionSchedule"
                        },
                        "type": "array"
                    },
                    "hostname": {
                        "type": "string"
                    },
                    "id": {
                        "description": "Id of the container registry.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/getRegistryMaintenanceWindow:getRegistryMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The name of the container registry.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "storageUsages": {
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/getRegistryStorageUsage:getRegistryStorageUsage"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "apiSubnetAllowLists",
                    "features",
                    "garbageCollectionSchedules",
                    "hostname",
                    "id",
                    "maintenanceWindows",
                    "name",
                    "storageUsages"
                ],
                "type": "object"
            }
        },
        "ionoscloud:creg/getRegistryLocations:getRegistryLocations": {
            "description": "The **Container Registry Locations data source** can be used to get a list of Container Registry Locations\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.creg.getRegistryLocations({});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.get_registry_locations()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Creg.GetRegistryLocations.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.GetRegistryLocations(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.creg.CregFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CregFunctions.getRegistryLocations(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:creg:getRegistryLocations\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getRegistryLocations.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "locations": {
                        "description": "list of container registry locations\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "locations",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:creg/getRegistryToken:getRegistryToken": {
            "description": "The **Container Registry Token data source** can be used to search for and return an existing Container Registry Token.\nYou can provide a string for the name parameter which will be compared with provisioned Container Registry Token.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n## Example Usage\n\n### By Id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.creg.getRegistryToken({\n    registryId: exampleIonoscloudContainerRegistry.id,\n    id: \"token_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.get_registry_token(registry_id=example_ionoscloud_container_registry[\"id\"],\n    id=\"token_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Creg.GetRegistryToken.Invoke(new()\n    {\n        RegistryId = exampleIonoscloudContainerRegistry.Id,\n        Id = \"token_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.LookupRegistryToken(ctx, \u0026creg.LookupRegistryTokenArgs{\n\t\t\tRegistryId: exampleIonoscloudContainerRegistry.Id,\n\t\t\tId:         pulumi.StringRef(\"token_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.creg.CregFunctions;\nimport com.pulumi.ionoscloud.creg.inputs.GetRegistryTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CregFunctions.getRegistryToken(GetRegistryTokenArgs.builder()\n            .registryId(exampleIonoscloudContainerRegistry.id())\n            .id(\"token_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:creg:getRegistryToken\n      arguments:\n        registryId: ${exampleIonoscloudContainerRegistry.id}\n        id: token_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.creg.getRegistryToken({\n    registryId: exampleIonoscloudContainerRegistry.id,\n    name: \"container-registry-token-example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.get_registry_token(registry_id=example_ionoscloud_container_registry[\"id\"],\n    name=\"container-registry-token-example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Creg.GetRegistryToken.Invoke(new()\n    {\n        RegistryId = exampleIonoscloudContainerRegistry.Id,\n        Name = \"container-registry-token-example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.LookupRegistryToken(ctx, \u0026creg.LookupRegistryTokenArgs{\n\t\t\tRegistryId: exampleIonoscloudContainerRegistry.Id,\n\t\t\tName:       pulumi.StringRef(\"container-registry-token-example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.creg.CregFunctions;\nimport com.pulumi.ionoscloud.creg.inputs.GetRegistryTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CregFunctions.getRegistryToken(GetRegistryTokenArgs.builder()\n            .registryId(exampleIonoscloudContainerRegistry.id())\n            .name(\"container-registry-token-example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:creg:getRegistryToken\n      arguments:\n        registryId: ${exampleIonoscloudContainerRegistry.id}\n        name: container-registry-token-example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name with Partial Match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.creg.getRegistryToken({\n    registryId: exampleIonoscloudContainerRegistry.id,\n    name: \"-example\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.creg.get_registry_token(registry_id=example_ionoscloud_container_registry[\"id\"],\n    name=\"-example\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Creg.GetRegistryToken.Invoke(new()\n    {\n        RegistryId = exampleIonoscloudContainerRegistry.Id,\n        Name = \"-example\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/creg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := creg.LookupRegistryToken(ctx, \u0026creg.LookupRegistryTokenArgs{\n\t\t\tRegistryId:   exampleIonoscloudContainerRegistry.Id,\n\t\t\tName:         pulumi.StringRef(\"-example\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.creg.CregFunctions;\nimport com.pulumi.ionoscloud.creg.inputs.GetRegistryTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = CregFunctions.getRegistryToken(GetRegistryTokenArgs.builder()\n            .registryId(exampleIonoscloudContainerRegistry.id())\n            .name(\"-example\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:creg:getRegistryToken\n      arguments:\n        registryId: ${exampleIonoscloudContainerRegistry.id}\n        name: -example\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRegistryToken.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the container registry token you want to search for.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing container registry token that you want to search for. Search by name is case-insensitive. The whole resource name is required if \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e parameter is not set to true.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using name argument. Default value is false.\n\n\u003cspan pulumi-lang-nodejs=\"`registryId`\" pulumi-lang-dotnet=\"`RegistryId`\" pulumi-lang-go=\"`registryId`\" pulumi-lang-python=\"`registry_id`\" pulumi-lang-yaml=\"`registryId`\" pulumi-lang-java=\"`registryId`\"\u003e`registryId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "registryId": {
                        "type": "string",
                        "description": "Registry's UUID.\n"
                    }
                },
                "type": "object",
                "required": [
                    "registryId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getRegistryToken.\n",
                "properties": {
                    "credentials": {
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/getRegistryTokenCredential:getRegistryTokenCredential"
                        },
                        "type": "array"
                    },
                    "expiryDate": {
                        "type": "string"
                    },
                    "id": {
                        "description": "Id of the container registry token.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "registryId": {
                        "type": "string"
                    },
                    "scopes": {
                        "items": {
                            "$ref": "#/types/ionoscloud:creg/getRegistryTokenScope:getRegistryTokenScope"
                        },
                        "type": "array"
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "required": [
                    "credentials",
                    "expiryDate",
                    "id",
                    "name",
                    "registryId",
                    "scopes",
                    "status"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getInMemoryDBReplicaSet:getInMemoryDBReplicaSet": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`ionoscloud.dbaas.InMemoryDBReplicaSet`\" pulumi-lang-dotnet=\"`ionoscloud.dbaas.InMemoryDBReplicaSet`\" pulumi-lang-go=\"`dbaas.InMemoryDBReplicaSet`\" pulumi-lang-python=\"`dbaas.InMemoryDBReplicaSet`\" pulumi-lang-yaml=\"`ionoscloud.dbaas.InMemoryDBReplicaSet`\" pulumi-lang-java=\"`ionoscloud.dbaas.InMemoryDBReplicaSet`\"\u003e`ionoscloud.dbaas.InMemoryDBReplicaSet`\u003c/span\u003e data source can be used to retrieve information about an existing InMemoryDB Replica Set.\n\n## Example Usage\n\n### By id\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getInMemoryDBReplicaSet({\n    id: \"example-id\",\n    location: \"es/vit\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_in_memory_db_replica_set(id=\"example-id\",\n    location=\"es/vit\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetInMemoryDBReplicaSet.Invoke(new()\n    {\n        Id = \"example-id\",\n        Location = \"es/vit\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupInMemoryDBReplicaSet(ctx, \u0026dbaas.LookupInMemoryDBReplicaSetArgs{\n\t\t\tId:       pulumi.StringRef(\"example-id\"),\n\t\t\tLocation: pulumi.StringRef(\"es/vit\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetInMemoryDBReplicaSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getInMemoryDBReplicaSet(GetInMemoryDBReplicaSetArgs.builder()\n            .id(\"example-id\")\n            .location(\"es/vit\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getInMemoryDBReplicaSet\n      arguments:\n        id: example-id\n        location: es/vit\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By\u003cspan pulumi-lang-nodejs=\" displayName\n\" pulumi-lang-dotnet=\" DisplayName\n\" pulumi-lang-go=\" displayName\n\" pulumi-lang-python=\" display_name\n\" pulumi-lang-yaml=\" displayName\n\" pulumi-lang-java=\" displayName\n\"\u003e displayName\n\u003c/span\u003e```hcl\ndata \"ionoscloud_inmemorydb_replicaset\" \"example\" {\n  display_name = \"example-id\"\n  location = \"us/las\"\n}\n```\n",
            "inputs": {
                "description": "A collection of arguments for invoking getInMemoryDBReplicaSet.\n",
                "properties": {
                    "displayName": {
                        "type": "string",
                        "description": "The display name of the InMemoryDB Replica Set.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "The ID of the InMemoryDB Replica Set.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the InMemoryDB Replica Set. Available locations: `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`, `us/ewr`, `us/las`, `us/mci`, `fr/par`\n\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`displayName`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getInMemoryDBReplicaSet.\n",
                "properties": {
                    "connections": {
                        "description": "[object] The network connection for your replica set. Only one connection is allowed. It includes:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getInMemoryDBReplicaSetConnection:getInMemoryDBReplicaSetConnection"
                        },
                        "type": "array"
                    },
                    "credentials": {
                        "description": "[object] Credentials for the InMemoryDB replicaset, only one type of password can be used since they are mutually exclusive. It includes:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getInMemoryDBReplicaSetCredential:getInMemoryDBReplicaSetCredential"
                        },
                        "type": "array"
                    },
                    "displayName": {
                        "type": "string"
                    },
                    "dnsName": {
                        "description": "[string] The DNS name pointing to your replica set. Will be used to connect to the active/standalone instance.\n",
                        "type": "string"
                    },
                    "evictionPolicy": {
                        "description": "[string] The eviction policy for the replica set, possible values are:\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A weekly 4 hour-long window, during which maintenance might occur. It includes:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getInMemoryDBReplicaSetMaintenanceWindow:getInMemoryDBReplicaSetMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "persistenceMode": {
                        "description": "[string] Specifies How and If data is persisted, possible values are:\n* `None` - Data is inMemory only and will not be persisted. Useful for cache only applications.\n* `AOF` - (Append Only File) AOF persistence logs every write operation received by the server. These operations can then be replayed again at server startup, reconstructing the original dataset. Commands are logged using the same format as the InMemoryDB protocol itself.\n* `RDB` - RDB persistence performs snapshots of the current in memory state.\n* `RDB_AOF` - Both, RDB and AOF persistence are enabled.\n",
                        "type": "string"
                    },
                    "replicas": {
                        "description": "[int] The total number of replicas in the replica set (one active and n-1 passive). In case of a standalone instance, the value is 1. In all other cases, the value is \u003e 1. The replicas will not be available as read replicas, they are only standby for a failure of the active instance.\n",
                        "type": "integer"
                    },
                    "resources": {
                        "description": "[object] The resources of the individual replicas. It includes:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getInMemoryDBReplicaSetResource:getInMemoryDBReplicaSetResource"
                        },
                        "type": "array"
                    },
                    "version": {
                        "description": "[string] The InMemoryDB version of your replica set.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "connections",
                    "credentials",
                    "displayName",
                    "dnsName",
                    "evictionPolicy",
                    "id",
                    "maintenanceWindows",
                    "persistenceMode",
                    "replicas",
                    "resources",
                    "version"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getInmemorydbSnapshot:getInmemorydbSnapshot": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`ionoscloud.dbaas.getInmemorydbSnapshot`\" pulumi-lang-dotnet=\"`ionoscloud.dbaas.getInmemorydbSnapshot`\" pulumi-lang-go=\"`dbaas.getInmemorydbSnapshot`\" pulumi-lang-python=\"`dbaas_get_inmemorydb_snapshot`\" pulumi-lang-yaml=\"`ionoscloud.dbaas.getInmemorydbSnapshot`\" pulumi-lang-java=\"`ionoscloud.dbaas.getInmemorydbSnapshot`\"\u003e`ionoscloud.dbaas.getInmemorydbSnapshot`\u003c/span\u003e data source can be used to retrieve information about an existing InMemoryDB Snapshot.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getInmemorydbSnapshot({\n    id: \"snapshot-id\",\n    location: \"de/txl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_inmemorydb_snapshot(id=\"snapshot-id\",\n    location=\"de/txl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetInmemorydbSnapshot.Invoke(new()\n    {\n        Id = \"snapshot-id\",\n        Location = \"de/txl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetInmemorydbSnapshot(ctx, \u0026dbaas.GetInmemorydbSnapshotArgs{\n\t\t\tId:       \"snapshot-id\",\n\t\t\tLocation: \"de/txl\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetInmemorydbSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getInmemorydbSnapshot(GetInmemorydbSnapshotArgs.builder()\n            .id(\"snapshot-id\")\n            .location(\"de/txl\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getInmemorydbSnapshot\n      arguments:\n        id: snapshot-id\n        location: de/txl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getInmemorydbSnapshot.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of the InMemoryDB Snapshot.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the InMemoryDB Snapshot.\n"
                    }
                },
                "type": "object",
                "required": [
                    "id",
                    "location"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getInmemorydbSnapshot.\n",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "metadatas": {
                        "description": "Metadata of the snapshot.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getInmemorydbSnapshotMetadata:getInmemorydbSnapshotMetadata"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "id",
                    "location",
                    "metadatas"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getMariaDBBackups:getMariaDBBackups": {
            "description": "The **DBaaS MariaDB Backups data source** can be used to search for and return existing DBaaS MariaDB Backups for a specific cluster.\n\n## Example Usage\n\n### Get all backups for a specific cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMariaDBBackups({\n    clusterId: \"cluster_id\",\n    location: \"de/txl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_maria_db_backups(cluster_id=\"cluster_id\",\n    location=\"de/txl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMariaDBBackups.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n        Location = \"de/txl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetMariaDBBackups(ctx, \u0026dbaas.GetMariaDBBackupsArgs{\n\t\t\tClusterId: pulumi.StringRef(\"cluster_id\"),\n\t\t\tLocation:  pulumi.StringRef(\"de/txl\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMariaDBBackupsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMariaDBBackups(GetMariaDBBackupsArgs.builder()\n            .clusterId(\"cluster_id\")\n            .location(\"de/txl\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMariaDBBackups\n      arguments:\n        clusterId: cluster_id\n        location: de/txl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Get a specific backup\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMariaDBBackups({\n    backupId: \"backup_id\",\n    location: \"de/txl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_maria_db_backups(backup_id=\"backup_id\",\n    location=\"de/txl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMariaDBBackups.Invoke(new()\n    {\n        BackupId = \"backup_id\",\n        Location = \"de/txl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetMariaDBBackups(ctx, \u0026dbaas.GetMariaDBBackupsArgs{\n\t\t\tBackupId: pulumi.StringRef(\"backup_id\"),\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMariaDBBackupsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMariaDBBackups(GetMariaDBBackupsArgs.builder()\n            .backupId(\"backup_id\")\n            .location(\"de/txl\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMariaDBBackups\n      arguments:\n        backupId: backup_id\n        location: de/txl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getMariaDBBackups.\n",
                "properties": {
                    "backupId": {
                        "type": "string",
                        "description": "[string] The unique ID of the backup.\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The unique ID of the cluster.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the cluster. Different service endpoints are used based on location, possible options are: \"de/fra\", \"de/txl\", \"es/vit\", \"fr/par\", \"gb/lhr\", \"us/ewr\", \"us/las\", \"us/mci\". If not set, the endpoint will be the one corresponding to \"de/txl\".\n\n⚠️ **Note:** Either \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backupId`\u003c/span\u003e must be used, but not both at the same time.\n\n\u003e **⚠ WARNING:** `Location` attribute will become required in the future.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getMariaDBBackups.\n",
                "properties": {
                    "backupId": {
                        "type": "string"
                    },
                    "backups": {
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMariaDBBackupsBackup:getMariaDBBackupsBackup"
                        },
                        "type": "array"
                    },
                    "clusterId": {
                        "description": "The unique ID of the cluster that was backed up.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    }
                },
                "required": [
                    "backupId",
                    "backups",
                    "clusterId",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getMariaDBCluster:getMariaDBCluster": {
            "description": "The **DBaaS MariaDB Cluster data source** can be used to search for and return an existing DBaaS MariaDB Cluster.\n\n## Example Usage\n\n### By ID \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMariaDBCluster({\n    id: \"cluster_id\",\n    location: \"de/txl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_maria_db_cluster(id=\"cluster_id\",\n    location=\"de/txl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMariaDBCluster.Invoke(new()\n    {\n        Id = \"cluster_id\",\n        Location = \"de/txl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupMariaDBCluster(ctx, \u0026dbaas.LookupMariaDBClusterArgs{\n\t\t\tId:       pulumi.StringRef(\"cluster_id\"),\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMariaDBClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMariaDBCluster(GetMariaDBClusterArgs.builder()\n            .id(\"cluster_id\")\n            .location(\"de/txl\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMariaDBCluster\n      arguments:\n        id: cluster_id\n        location: de/txl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMariaDBCluster({\n    displayName: \"MariaDB_cluster\",\n    location: \"de/txl\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_maria_db_cluster(display_name=\"MariaDB_cluster\",\n    location=\"de/txl\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMariaDBCluster.Invoke(new()\n    {\n        DisplayName = \"MariaDB_cluster\",\n        Location = \"de/txl\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupMariaDBCluster(ctx, \u0026dbaas.LookupMariaDBClusterArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"MariaDB_cluster\"),\n\t\t\tLocation:    pulumi.StringRef(\"de/txl\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMariaDBClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMariaDBCluster(GetMariaDBClusterArgs.builder()\n            .displayName(\"MariaDB_cluster\")\n            .location(\"de/txl\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMariaDBCluster\n      arguments:\n        displayName: MariaDB_cluster\n        location: de/txl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getMariaDBCluster.\n",
                "properties": {
                    "displayName": {
                        "type": "string",
                        "description": "[string] Display Name of an existing cluster that you want to search for.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "[string] ID of the cluster you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the cluster. Different service endpoints are used based on location, possible options are: \"de/fra\", \"de/txl\", \"es/vit\", \"fr/par\", \"gb/lhr\", \"us/ewr\", \"us/las\", \"us/mci\". If not set, the endpoint will be the one corresponding to \"de/txl\".\n\n\u003e **⚠ WARNING:** `Location` attribute will become required in the future.\n\nEither \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`displayName`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getMariaDBCluster.\n",
                "properties": {
                    "backups": {
                        "description": "Properties configuring the backup of the cluster.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMariaDBClusterBackup:getMariaDBClusterBackup"
                        },
                        "type": "array"
                    },
                    "connections": {
                        "description": "The network connection for your cluster. Only one connection is allowed.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMariaDBClusterConnection:getMariaDBClusterConnection"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "description": "[int] The number of CPU cores per instance.\n",
                        "type": "integer"
                    },
                    "displayName": {
                        "description": "[string] The friendly name of your cluster.\n",
                        "type": "string"
                    },
                    "dnsName": {
                        "description": "[string] The DNS name pointing to your cluster.\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "instances": {
                        "description": "[int] The total number of instances in the cluster (one primary and n-1 secondary).\n",
                        "type": "integer"
                    },
                    "location": {
                        "description": "[string] The IONOS Object Storage location where the backups will be stored.\n",
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A weekly 4 hour-long window, during which maintenance might occur.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMariaDBClusterMaintenanceWindow:getMariaDBClusterMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "mariadbVersion": {
                        "description": "[string] The MariaDB version of your cluster.\n",
                        "type": "string"
                    },
                    "ram": {
                        "description": "[int] The amount of memory per instance in gigabytes (GB).\n",
                        "type": "integer"
                    },
                    "storageSize": {
                        "description": "[int] The amount of storage per instance in gigabytes (GB).\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "backups",
                    "connections",
                    "cores",
                    "displayName",
                    "dnsName",
                    "id",
                    "instances",
                    "maintenanceWindows",
                    "mariadbVersion",
                    "ram",
                    "storageSize"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getMongoCluster:getMongoCluster": {
            "description": "The **DbaaS Mongo Cluster data source** can be used to search for and return an existing DbaaS MongoDB Cluster.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMongoCluster({\n    id: \"cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_mongo_cluster(id=\"cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMongoCluster.Invoke(new()\n    {\n        Id = \"cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupMongoCluster(ctx, \u0026dbaas.LookupMongoClusterArgs{\n\t\t\tId: pulumi.StringRef(\"cluster_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMongoClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMongoCluster(GetMongoClusterArgs.builder()\n            .id(\"cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMongoCluster\n      arguments:\n        id: cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### By\u003cspan pulumi-lang-nodejs=\" displayName\n\" pulumi-lang-dotnet=\" DisplayName\n\" pulumi-lang-go=\" displayName\n\" pulumi-lang-python=\" display_name\n\" pulumi-lang-yaml=\" displayName\n\" pulumi-lang-java=\" displayName\n\"\u003e displayName\n\u003c/span\u003e\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMongoCluster({\n    displayName: \"display_name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_mongo_cluster(display_name=\"display_name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMongoCluster.Invoke(new()\n    {\n        DisplayName = \"display_name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupMongoCluster(ctx, \u0026dbaas.LookupMongoClusterArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"display_name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMongoClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMongoCluster(GetMongoClusterArgs.builder()\n            .displayName(\"display_name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMongoCluster\n      arguments:\n        displayName: display_name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n* \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`displayName`\u003c/span\u003e - (Optional) Display Name of an existing cluster that you want to search for.\n* \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - (Optional) ID of the cluster you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`displayName`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getMongoCluster.\n",
                "properties": {
                    "displayName": {
                        "type": "string",
                        "description": "The name of your cluster. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location where the cluster backups will be stored. If not set, the backup is stored in the nearest location of the cluster. Possible values are de, eu-south-2, or eu-central-2.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getMongoCluster.\n",
                "properties": {
                    "backups": {
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMongoClusterBackup:getMongoClusterBackup"
                        },
                        "type": "array"
                    },
                    "biConnectors": {
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMongoClusterBiConnector:getMongoClusterBiConnector"
                        },
                        "type": "array"
                    },
                    "connectionString": {
                        "description": "The physical location where the cluster will be created. This will be where all of your instances live. Updates to the value of the field force the cluster to be re-created. Available locations: de/txl, gb/lhr, es/vit\"\n",
                        "type": "string"
                    },
                    "connections": {
                        "description": "Details about the network connection for your cluster. Updates to the value of the field force the cluster to be re-created.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMongoClusterConnection:getMongoClusterConnection"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "description": "The number of CPU cores per replica. Required for enterprise edition.\n",
                        "type": "integer"
                    },
                    "displayName": {
                        "description": "The name of your cluster. Updates to the value of the field force the cluster to be re-created.\n",
                        "type": "string"
                    },
                    "edition": {
                        "description": "Cluster edition. Playground, business or enterprise.\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "instances": {
                        "description": "The total number of instances in the cluster (one master and n-1 standbys). Example: 3, 5, 7. Updates to the value of the field force the cluster to be re-created.\n",
                        "type": "integer"
                    },
                    "location": {
                        "description": "The location where the cluster backups will be stored. If not set, the backup is stored in the nearest location of the cluster. Possible values are de, eu-south-2, or eu-central-2.\n",
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A weekly 4 hour-long window, during which maintenance might occur.  Updates to the value of the field force the cluster to be re-created.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMongoClusterMaintenanceWindow:getMongoClusterMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "mongodbVersion": {
                        "description": "The MongoDB version of your cluster. Updates to the value of the field force the cluster to be re-created.\n",
                        "type": "string"
                    },
                    "ram": {
                        "description": "The amount of memory per instance in megabytes. Required for enterprise edition.\n",
                        "type": "integer"
                    },
                    "shards": {
                        "type": "integer"
                    },
                    "storageSize": {
                        "description": "The amount of storage per instance in MB. Required for enterprise edition.\n",
                        "type": "integer"
                    },
                    "storageType": {
                        "description": "The storage type used in your cluster. Required for enterprise edition.\n",
                        "type": "string"
                    },
                    "templateId": {
                        "description": "The unique ID of the template, which specifies the number of cores, storage size, and memory. Updates to the value of the field force the cluster to be re-created.\n",
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    }
                },
                "required": [
                    "backups",
                    "biConnectors",
                    "connectionString",
                    "connections",
                    "cores",
                    "displayName",
                    "edition",
                    "id",
                    "instances",
                    "location",
                    "maintenanceWindows",
                    "mongodbVersion",
                    "ram",
                    "shards",
                    "storageSize",
                    "storageType",
                    "templateId",
                    "type"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getMongoTemplate:getMongoTemplate": {
            "description": "The **DbaaS Mongo Template data source** can be used to search for and return an existing DbaaS MongoDB Template.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMongoTemplate({\n    id: \"template_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_mongo_template(id=\"template_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMongoTemplate.Invoke(new()\n    {\n        Id = \"template_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetMongoTemplate(ctx, \u0026dbaas.GetMongoTemplateArgs{\n\t\t\tId: pulumi.StringRef(\"template_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMongoTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMongoTemplate(GetMongoTemplateArgs.builder()\n            .id(\"template_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMongoTemplate\n      arguments:\n        id: template_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### By name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMongoTemplate({\n    name: \"name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_mongo_template(name=\"name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMongoTemplate.Invoke(new()\n    {\n        Name = \"name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetMongoTemplate(ctx, \u0026dbaas.GetMongoTemplateArgs{\n\t\t\tName: pulumi.StringRef(\"name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMongoTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMongoTemplate(GetMongoTemplateArgs.builder()\n            .name(\"name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMongoTemplate\n      arguments:\n        name: name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name, using\u003cspan pulumi-lang-nodejs=\" partialMatch\n\" pulumi-lang-dotnet=\" PartialMatch\n\" pulumi-lang-go=\" partialMatch\n\" pulumi-lang-python=\" partial_match\n\" pulumi-lang-yaml=\" partialMatch\n\" pulumi-lang-java=\" partialMatch\n\"\u003e partialMatch\n\u003c/span\u003e\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMongoTemplate({\n    name: \"name\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_mongo_template(name=\"name\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMongoTemplate.Invoke(new()\n    {\n        Name = \"name\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetMongoTemplate(ctx, \u0026dbaas.GetMongoTemplateArgs{\n\t\t\tName:         pulumi.StringRef(\"name\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMongoTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMongoTemplate(GetMongoTemplateArgs.builder()\n            .name(\"name\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMongoTemplate\n      arguments:\n        name: name\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n* \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Optional) The name of the template you want to search for.\n* \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - (Optional) ID of the template you want to search for.\n* \u003cspan pulumi-lang-nodejs=\"`partialMatch`\" pulumi-lang-dotnet=\"`PartialMatch`\" pulumi-lang-go=\"`partialMatch`\" pulumi-lang-python=\"`partial_match`\" pulumi-lang-yaml=\"`partialMatch`\" pulumi-lang-java=\"`partialMatch`\"\u003e`partialMatch`\u003c/span\u003e - (Optional) Whether partial matching is allowed or not when using name argument. Default value is false.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none or both are provided, the datasource will return an error.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getMongoTemplate.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of the template.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the template.\n"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getMongoTemplate.\n",
                "properties": {
                    "cores": {
                        "description": "The number of CPU cores.\n",
                        "type": "integer"
                    },
                    "edition": {
                        "description": "The edition of the template (e.g. enterprise).\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The ID of the template.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the template.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "ram": {
                        "description": "The amount of memory in GB.\n",
                        "type": "integer"
                    },
                    "storageSize": {
                        "description": "The amount of storage size in GB.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "cores",
                    "edition",
                    "id",
                    "name",
                    "ram",
                    "storageSize"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getMongoUser:getMongoUser": {
            "description": "The **DbaaS Mongo User data source** can be used to search for and return an existing DbaaS MongoDB User.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By username\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getMongoUser({\n    clusterId: \"cluster_id\",\n    username: \"username\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_mongo_user(cluster_id=\"cluster_id\",\n    username=\"username\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetMongoUser.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n        Username = \"username\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupMongoUser(ctx, \u0026dbaas.LookupMongoUserArgs{\n\t\t\tClusterId: \"cluster_id\",\n\t\t\tUsername:  \"username\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetMongoUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getMongoUser(GetMongoUserArgs.builder()\n            .clusterId(\"cluster_id\")\n            .username(\"username\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getMongoUser\n      arguments:\n        clusterId: cluster_id\n        username: username\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getMongoUser.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The unique ID of the cluster. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "database": {
                        "type": "string",
                        "description": "[string] The user database to use for authentication. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "roles": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMongoUserRole:getMongoUserRole"
                        },
                        "description": "[string] a list of mongodb user roles. Updates to the value of the field force the cluster to be re-created.\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "[string] Used for authentication. Updates to the value of the field force the cluster to be re-created.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId",
                    "username"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getMongoUser.\n",
                "properties": {
                    "clusterId": {
                        "type": "string"
                    },
                    "database": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "roles": {
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getMongoUserRole:getMongoUserRole"
                        },
                        "type": "array"
                    },
                    "username": {
                        "type": "string"
                    }
                },
                "required": [
                    "clusterId",
                    "database",
                    "id",
                    "roles",
                    "username"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getPSQLBackups:getPSQLBackups": {
            "description": "The **DbaaS Postgres Backups data source** can be used to search for and return existing DbaaS Postgres Backups for a specific Cluster.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLBackups({\n    clusterId: \"cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_backups(cluster_id=\"cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLBackups.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetPSQLBackups(ctx, \u0026dbaas.GetPSQLBackupsArgs{\n\t\t\tClusterId: \"cluster_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLBackupsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLBackups(GetPSQLBackupsArgs.builder()\n            .clusterId(\"cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLBackups\n      arguments:\n        clusterId: cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPSQLBackups.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The unique ID of the cluster.\n\n\u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e must be provided. If it is not provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The IONOS Object Storage location where the backups will be stored.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPSQLBackups.\n",
                "properties": {
                    "clusterBackups": {
                        "description": "List of backups.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getPSQLBackupsClusterBackup:getPSQLBackupsClusterBackup"
                        },
                        "type": "array"
                    },
                    "clusterId": {
                        "description": "The unique ID of the cluster\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "description": "The IONOS Object Storage location where the backups will be stored.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "clusterBackups",
                    "clusterId",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getPSQLCluster:getPSQLCluster": {
            "description": "The **DbaaS Postgres Cluster data source** can be used to search for and return an existing DbaaS Postgres Cluster.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLCluster({\n    id: \"cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_cluster(id=\"cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLCluster.Invoke(new()\n    {\n        Id = \"cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupPSQLCluster(ctx, \u0026dbaas.LookupPSQLClusterArgs{\n\t\t\tId: pulumi.StringRef(\"cluster_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLCluster(GetPSQLClusterArgs.builder()\n            .id(\"cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLCluster\n      arguments:\n        id: cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLCluster({\n    displayName: \"PostgreSQL_cluster\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_cluster(display_name=\"PostgreSQL_cluster\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLCluster.Invoke(new()\n    {\n        DisplayName = \"PostgreSQL_cluster\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupPSQLCluster(ctx, \u0026dbaas.LookupPSQLClusterArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"PostgreSQL_cluster\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLCluster(GetPSQLClusterArgs.builder()\n            .displayName(\"PostgreSQL_cluster\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLCluster\n      arguments:\n        displayName: PostgreSQL_cluster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPSQLCluster.\n",
                "properties": {
                    "displayName": {
                        "type": "string",
                        "description": "Display Name of an existing cluster that you want to search for.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the cluster you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`displayName`\" pulumi-lang-dotnet=\"`DisplayName`\" pulumi-lang-go=\"`displayName`\" pulumi-lang-python=\"`display_name`\" pulumi-lang-yaml=\"`displayName`\" pulumi-lang-java=\"`displayName`\"\u003e`displayName`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The physical location where the cluster will be created. This will be where all of your instances live.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getPSQLCluster.\n",
                "properties": {
                    "backupLocation": {
                        "description": "The IONOS Object Storage location where the backups will be stored.\n",
                        "type": "string"
                    },
                    "connectionPoolers": {
                        "description": "Details about the connection pooler.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getPSQLClusterConnectionPooler:getPSQLClusterConnectionPooler"
                        },
                        "type": "array"
                    },
                    "connections": {
                        "description": "Details about the network connection for your cluster.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getPSQLClusterConnection:getPSQLClusterConnection"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "description": "The number of CPU cores per replica.\n",
                        "type": "integer"
                    },
                    "displayName": {
                        "description": "The friendly name of your cluster.\n",
                        "type": "string"
                    },
                    "dnsName": {
                        "description": "The DNS name pointing to your cluster.\n",
                        "type": "string"
                    },
                    "fromBackups": {
                        "description": "The unique ID of the backup you want to restore.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getPSQLClusterFromBackup:getPSQLClusterFromBackup"
                        },
                        "type": "array"
                    },
                    "id": {
                        "type": "string"
                    },
                    "instances": {
                        "description": "The total number of instances in the cluster (one master and n-1 standbys)\n",
                        "type": "integer"
                    },
                    "location": {
                        "description": "The physical location where the cluster will be created. This will be where all of your instances live.\n",
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A weekly 4 hour-long window, during which maintenance might occur\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getPSQLClusterMaintenanceWindow:getPSQLClusterMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "postgresVersion": {
                        "description": "The PostgreSQL version of your cluster.\n",
                        "type": "string"
                    },
                    "ram": {
                        "description": "The amount of memory per instance in megabytes.\n",
                        "type": "integer"
                    },
                    "storageSize": {
                        "description": "The amount of storage per instance in MB.\n",
                        "type": "integer"
                    },
                    "storageType": {
                        "description": "The storage type used in your cluster.\n",
                        "type": "string"
                    },
                    "synchronizationMode": {
                        "description": "Represents different modes of replication.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "backupLocation",
                    "connectionPoolers",
                    "connections",
                    "cores",
                    "displayName",
                    "dnsName",
                    "fromBackups",
                    "id",
                    "instances",
                    "location",
                    "maintenanceWindows",
                    "postgresVersion",
                    "ram",
                    "storageSize",
                    "storageType",
                    "synchronizationMode"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getPSQLDatabase:getPSQLDatabase": {
            "description": "The **PgSql Database data source** can be used to search for and return an existing PgSql database.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLDatabase({\n    clusterId: \"cluster_id\",\n    name: \"databasename\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_database(cluster_id=\"cluster_id\",\n    name=\"databasename\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLDatabase.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n        Name = \"databasename\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupPSQLDatabase(ctx, \u0026dbaas.LookupPSQLDatabaseArgs{\n\t\t\tClusterId: \"cluster_id\",\n\t\t\tName:      \"databasename\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLDatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLDatabase(GetPSQLDatabaseArgs.builder()\n            .clusterId(\"cluster_id\")\n            .name(\"databasename\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLDatabase\n      arguments:\n        clusterId: cluster_id\n        name: databasename\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPSQLDatabase.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The ID of the cluster.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] Name of an existing database that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId",
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPSQLDatabase.\n",
                "properties": {
                    "clusterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "[string] The id of the database.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "owner": {
                        "description": "[string] The owner of the database.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "clusterId",
                    "id",
                    "name",
                    "owner"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getPSQLDatabases:getPSQLDatabases": {
            "description": "The **PgSql Databases data source** can be used to search for and return multiple existing PgSql databases.\n\n## Example Usage\n\n### All databases from a specific cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLDatabases({\n    clusterId: \"cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_databases(cluster_id=\"cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLDatabases.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetPSQLDatabases(ctx, \u0026dbaas.GetPSQLDatabasesArgs{\n\t\t\tClusterId: \"cluster_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLDatabasesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLDatabases(GetPSQLDatabasesArgs.builder()\n            .clusterId(\"cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLDatabases\n      arguments:\n        clusterId: cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Filter by owner\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLDatabases({\n    clusterId: \"cluster_id\",\n    owner: \"owner\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_databases(cluster_id=\"cluster_id\",\n    owner=\"owner\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLDatabases.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n        Owner = \"owner\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetPSQLDatabases(ctx, \u0026dbaas.GetPSQLDatabasesArgs{\n\t\t\tClusterId: \"cluster_id\",\n\t\t\tOwner:     pulumi.StringRef(\"owner\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLDatabasesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLDatabases(GetPSQLDatabasesArgs.builder()\n            .clusterId(\"cluster_id\")\n            .owner(\"owner\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLDatabases\n      arguments:\n        clusterId: cluster_id\n        owner: owner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPSQLDatabases.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The ID of the cluster.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "owner": {
                        "type": "string",
                        "description": "[string] Filter using a specific owner.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPSQLDatabases.\n",
                "properties": {
                    "clusterId": {
                        "type": "string"
                    },
                    "databases": {
                        "description": "[list] A list that contains either all databases, either some of them (filter by owner). A database from list has the following format:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:dbaas/getPSQLDatabasesDatabase:getPSQLDatabasesDatabase"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "owner": {
                        "description": "[string] The owner of the database.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "clusterId",
                    "databases",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getPSQLUser:getPSQLUser": {
            "description": "The **PgSql User data source** can be used to search for and return an existing PgSql user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLUser({\n    clusterId: \"cluster_id\",\n    username: \"username\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psqluser(cluster_id=\"cluster_id\",\n    username=\"username\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLUser.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n        Username = \"username\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.LookupPSQLUser(ctx, \u0026dbaas.LookupPSQLUserArgs{\n\t\t\tClusterId: \"cluster_id\",\n\t\t\tUsername:  \"username\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLUser(GetPSQLUserArgs.builder()\n            .clusterId(\"cluster_id\")\n            .username(\"username\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLUser\n      arguments:\n        clusterId: cluster_id\n        username: username\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPSQLUser.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] The ID of the cluster.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "username": {
                        "type": "string",
                        "description": "[string] Name of an existing user that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId",
                    "username"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPSQLUser.\n",
                "properties": {
                    "clusterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "[string] The id of the user.\n",
                        "type": "string"
                    },
                    "isSystemUser": {
                        "description": "[bool] Describes whether this user is a system user or not. A system user cannot be updated or deleted.\n",
                        "type": "boolean"
                    },
                    "location": {
                        "type": "string"
                    },
                    "username": {
                        "type": "string"
                    }
                },
                "required": [
                    "clusterId",
                    "id",
                    "isSystemUser",
                    "username"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dbaas/getPSQLVersions:getPSQLVersions": {
            "description": "The **DbaaS Postgres Versions data source** can be used to search for and retrieve list of available postgres versions for a specific cluster or for all clusters.\n\n## Example Usage\n\n### Retrieve list of postgres versions for a specific cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLVersions({\n    clusterId: \"cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_versions(cluster_id=\"cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLVersions.Invoke(new()\n    {\n        ClusterId = \"cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetPSQLVersions(ctx, \u0026dbaas.GetPSQLVersionsArgs{\n\t\t\tClusterId: pulumi.StringRef(\"cluster_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLVersions(GetPSQLVersionsArgs.builder()\n            .clusterId(\"cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLVersions\n      arguments:\n        clusterId: cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Retrieve list of postgres versions for all clusters\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dbaas.getPSQLVersions({});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dbaas.get_psql_versions()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dbaas.GetPSQLVersions.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dbaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dbaas.GetPSQLVersions(ctx, \u0026dbaas.GetPSQLVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dbaas.DbaasFunctions;\nimport com.pulumi.ionoscloud.dbaas.inputs.GetPSQLVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DbaasFunctions.getPSQLVersions(GetPSQLVersionsArgs.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dbaas:getPSQLVersions\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPSQLVersions.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The unique ID of the cluster.\n\nIf \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`clusterId`\u003c/span\u003e is not provided the data source will return the list of postgres version for all cluster.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getPSQLVersions.\n",
                "properties": {
                    "clusterId": {
                        "description": "Id of the cluster\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "postgresVersions": {
                        "description": "list of PostgreSQL versions.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "postgresVersions",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dns/getRecord:getRecord": {
            "description": "The **DNS Record** can be used to search for and return an existing DNS Record.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **ionoscloud_dns_record** data source. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n### By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dns.getRecord({\n    id: \"record_id\",\n    zoneId: \"zone_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.get_record(id=\"record_id\",\n    zone_id=\"zone_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dns.GetRecord.Invoke(new()\n    {\n        Id = \"record_id\",\n        ZoneId = \"zone_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.LookupRecord(ctx, \u0026dns.LookupRecordArgs{\n\t\t\tId:     pulumi.StringRef(\"record_id\"),\n\t\t\tZoneId: \"zone_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dns.DnsFunctions;\nimport com.pulumi.ionoscloud.dns.inputs.GetRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DnsFunctions.getRecord(GetRecordArgs.builder()\n            .id(\"record_id\")\n            .zoneId(\"zone_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dns:getRecord\n      arguments:\n        id: record_id\n        zoneId: zone_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dns.getRecord({\n    name: \"recordexample\",\n    zoneId: \"zone_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.get_record(name=\"recordexample\",\n    zone_id=\"zone_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dns.GetRecord.Invoke(new()\n    {\n        Name = \"recordexample\",\n        ZoneId = \"zone_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.LookupRecord(ctx, \u0026dns.LookupRecordArgs{\n\t\t\tName:   pulumi.StringRef(\"recordexample\"),\n\t\t\tZoneId: \"zone_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dns.DnsFunctions;\nimport com.pulumi.ionoscloud.dns.inputs.GetRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DnsFunctions.getRecord(GetRecordArgs.builder()\n            .name(\"recordexample\")\n            .zoneId(\"zone_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dns:getRecord\n      arguments:\n        name: recordexample\n        zoneId: zone_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name with partial match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dns.getRecord({\n    name: \"record\",\n    partialMatch: true,\n    zoneId: \"zone_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.get_record(name=\"record\",\n    partial_match=True,\n    zone_id=\"zone_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dns.GetRecord.Invoke(new()\n    {\n        Name = \"record\",\n        PartialMatch = true,\n        ZoneId = \"zone_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.LookupRecord(ctx, \u0026dns.LookupRecordArgs{\n\t\t\tName:         pulumi.StringRef(\"record\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t\tZoneId:       \"zone_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dns.DnsFunctions;\nimport com.pulumi.ionoscloud.dns.inputs.GetRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DnsFunctions.getRecord(GetRecordArgs.builder()\n            .name(\"record\")\n            .partialMatch(true)\n            .zoneId(\"zone_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dns:getRecord\n      arguments:\n        name: record\n        partialMatch: true\n        zoneId: zone_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRecord.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "[string] The ID of the DNS Record you want to search for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the DNS Record you want to search for.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "[bool] Whether partial matching is allowed or not when using name argument. Default value is false.\n\nEither \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "zoneId": {
                        "type": "string",
                        "description": "[string] The ID of the DNS Zone in which the DNS Record can be found.\n"
                    }
                },
                "type": "object",
                "required": [
                    "zoneId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getRecord.\n",
                "properties": {
                    "content": {
                        "description": "The content of the DNS Record.\n",
                        "type": "string"
                    },
                    "enabled": {
                        "description": "Indicates if the DNS Record is active or not.\n",
                        "type": "boolean"
                    },
                    "fqdn": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The UUID of the DNS Record.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the DNS Record.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "priority": {
                        "description": "The priority for the DNS Record.\n",
                        "type": "integer"
                    },
                    "ttl": {
                        "description": "The time to live of the DNS Record.\n",
                        "type": "integer"
                    },
                    "type": {
                        "description": "The type of the DNS Record.\n",
                        "type": "string"
                    },
                    "zoneId": {
                        "type": "string"
                    }
                },
                "required": [
                    "content",
                    "enabled",
                    "fqdn",
                    "id",
                    "name",
                    "priority",
                    "ttl",
                    "type",
                    "zoneId"
                ],
                "type": "object"
            }
        },
        "ionoscloud:dns/getZone:getZone": {
            "description": "The **DNS Zone** can be used to search for and return an existing DNS Zone.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **ionoscloud_dns_zone** data source. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n### By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dns.getZone({\n    id: \"zone_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.get_zone(id=\"zone_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dns.GetZone.Invoke(new()\n    {\n        Id = \"zone_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.LookupZone(ctx, \u0026dns.LookupZoneArgs{\n\t\t\tId: pulumi.StringRef(\"zone_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dns.DnsFunctions;\nimport com.pulumi.ionoscloud.dns.inputs.GetZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DnsFunctions.getZone(GetZoneArgs.builder()\n            .id(\"zone_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dns:getZone\n      arguments:\n        id: zone_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dns.getZone({\n    name: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.get_zone(name=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dns.GetZone.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.LookupZone(ctx, \u0026dns.LookupZoneArgs{\n\t\t\tName: pulumi.StringRef(\"example.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dns.DnsFunctions;\nimport com.pulumi.ionoscloud.dns.inputs.GetZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DnsFunctions.getZone(GetZoneArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dns:getZone\n      arguments:\n        name: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name with partial match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.dns.getZone({\n    name: \"example\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.dns.get_zone(name=\"example\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Dns.GetZone.Invoke(new()\n    {\n        Name = \"example\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.LookupZone(ctx, \u0026dns.LookupZoneArgs{\n\t\t\tName:         pulumi.StringRef(\"example\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.dns.DnsFunctions;\nimport com.pulumi.ionoscloud.dns.inputs.GetZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DnsFunctions.getZone(GetZoneArgs.builder()\n            .name(\"example\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:dns:getZone\n      arguments:\n        name: example\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getZone.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "[string] The ID of the DNS Zone you want to search for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the DNS Zone you want to search for.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "[bool] Whether partial matching is allowed or not when using name argument. Default value is false.\n\nEither \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getZone.\n",
                "properties": {
                    "description": {
                        "description": "The description of the DNS Zone.\n",
                        "type": "string"
                    },
                    "enabled": {
                        "description": "Indicates if the DNS Zone is activated or not.\n",
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The UUID of the DNS Zone.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the DNS Zone.\n",
                        "type": "string"
                    },
                    "nameservers": {
                        "description": "A list of available name servers.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    }
                },
                "required": [
                    "description",
                    "enabled",
                    "id",
                    "name",
                    "nameservers"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getContracts:getContracts": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`contracts`\" pulumi-lang-dotnet=\"`Contracts`\" pulumi-lang-go=\"`contracts`\" pulumi-lang-python=\"`contracts`\" pulumi-lang-yaml=\"`contracts`\" pulumi-lang-java=\"`contracts`\"\u003e`contracts`\u003c/span\u003e data source provides information about the contracts available in your IONOS Cloud account, including resource limits and other contract details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getContracts({});\nexport const contracts = example.then(example =\u003e example.contracts);\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_contracts()\npulumi.export(\"contracts\", example.contracts)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetContracts.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"contracts\"] = example.Apply(getContractsResult =\u003e getContractsResult.Contracts),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ionoscloud.GetContracts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"contracts\", example.Contracts)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getContracts(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"contracts\", example.contracts());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getContracts\n      arguments: {}\noutputs:\n  contracts: ${example.contracts}\n```\n\u003c!--End PulumiCodeChooser --\u003e\nThe following attributes are returned by the datasource:\n\nSure! Here's the list of attributes formatted as requested:\n\n* \u003cspan pulumi-lang-nodejs=\"`contracts`\" pulumi-lang-dotnet=\"`Contracts`\" pulumi-lang-go=\"`contracts`\" pulumi-lang-python=\"`contracts`\" pulumi-lang-yaml=\"`contracts`\" pulumi-lang-java=\"`contracts`\"\u003e`contracts`\u003c/span\u003e \n  * \u003cspan pulumi-lang-nodejs=\"`contractNumber`\" pulumi-lang-dotnet=\"`ContractNumber`\" pulumi-lang-go=\"`contractNumber`\" pulumi-lang-python=\"`contract_number`\" pulumi-lang-yaml=\"`contractNumber`\" pulumi-lang-java=\"`contractNumber`\"\u003e`contractNumber`\u003c/span\u003e - The contract number.\n  * \u003cspan pulumi-lang-nodejs=\"`owner`\" pulumi-lang-dotnet=\"`Owner`\" pulumi-lang-go=\"`owner`\" pulumi-lang-python=\"`owner`\" pulumi-lang-yaml=\"`owner`\" pulumi-lang-java=\"`owner`\"\u003e`owner`\u003c/span\u003e - The contract owner's user name.\n  * \u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e - The contract status.\n  * \u003cspan pulumi-lang-nodejs=\"`regDomain`\" pulumi-lang-dotnet=\"`RegDomain`\" pulumi-lang-go=\"`regDomain`\" pulumi-lang-python=\"`reg_domain`\" pulumi-lang-yaml=\"`regDomain`\" pulumi-lang-java=\"`regDomain`\"\u003e`regDomain`\u003c/span\u003e - The registration domain of the contract.\n  * \u003cspan pulumi-lang-nodejs=\"`resourceLimits`\" pulumi-lang-dotnet=\"`ResourceLimits`\" pulumi-lang-go=\"`resourceLimits`\" pulumi-lang-python=\"`resource_limits`\" pulumi-lang-yaml=\"`resourceLimits`\" pulumi-lang-java=\"`resourceLimits`\"\u003e`resourceLimits`\u003c/span\u003e\n    * \u003cspan pulumi-lang-nodejs=\"`coresPerServer`\" pulumi-lang-dotnet=\"`CoresPerServer`\" pulumi-lang-go=\"`coresPerServer`\" pulumi-lang-python=\"`cores_per_server`\" pulumi-lang-yaml=\"`coresPerServer`\" pulumi-lang-java=\"`coresPerServer`\"\u003e`coresPerServer`\u003c/span\u003e - The maximum number of cores per server.\n    * \u003cspan pulumi-lang-nodejs=\"`ramPerServer`\" pulumi-lang-dotnet=\"`RamPerServer`\" pulumi-lang-go=\"`ramPerServer`\" pulumi-lang-python=\"`ram_per_server`\" pulumi-lang-yaml=\"`ramPerServer`\" pulumi-lang-java=\"`ramPerServer`\"\u003e`ramPerServer`\u003c/span\u003e - The maximum RAM per server in MB.\n    * \u003cspan pulumi-lang-nodejs=\"`ramPerContract`\" pulumi-lang-dotnet=\"`RamPerContract`\" pulumi-lang-go=\"`ramPerContract`\" pulumi-lang-python=\"`ram_per_contract`\" pulumi-lang-yaml=\"`ramPerContract`\" pulumi-lang-java=\"`ramPerContract`\"\u003e`ramPerContract`\u003c/span\u003e - The maximum RAM per contract in MB.\n    * \u003cspan pulumi-lang-nodejs=\"`coresPerContract`\" pulumi-lang-dotnet=\"`CoresPerContract`\" pulumi-lang-go=\"`coresPerContract`\" pulumi-lang-python=\"`cores_per_contract`\" pulumi-lang-yaml=\"`coresPerContract`\" pulumi-lang-java=\"`coresPerContract`\"\u003e`coresPerContract`\u003c/span\u003e - The maximum number of cores per contract.\n    * \u003cspan pulumi-lang-nodejs=\"`coresProvisioned`\" pulumi-lang-dotnet=\"`CoresProvisioned`\" pulumi-lang-go=\"`coresProvisioned`\" pulumi-lang-python=\"`cores_provisioned`\" pulumi-lang-yaml=\"`coresProvisioned`\" pulumi-lang-java=\"`coresProvisioned`\"\u003e`coresProvisioned`\u003c/span\u003e - The number of cores provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`dasVolumeProvisioned`\" pulumi-lang-dotnet=\"`DasVolumeProvisioned`\" pulumi-lang-go=\"`dasVolumeProvisioned`\" pulumi-lang-python=\"`das_volume_provisioned`\" pulumi-lang-yaml=\"`dasVolumeProvisioned`\" pulumi-lang-java=\"`dasVolumeProvisioned`\"\u003e`dasVolumeProvisioned`\u003c/span\u003e - The DAS volume provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`hddLimitPerContract`\" pulumi-lang-dotnet=\"`HddLimitPerContract`\" pulumi-lang-go=\"`hddLimitPerContract`\" pulumi-lang-python=\"`hdd_limit_per_contract`\" pulumi-lang-yaml=\"`hddLimitPerContract`\" pulumi-lang-java=\"`hddLimitPerContract`\"\u003e`hddLimitPerContract`\u003c/span\u003e - The HDD limit per contract.\n    * \u003cspan pulumi-lang-nodejs=\"`hddLimitPerVolume`\" pulumi-lang-dotnet=\"`HddLimitPerVolume`\" pulumi-lang-go=\"`hddLimitPerVolume`\" pulumi-lang-python=\"`hdd_limit_per_volume`\" pulumi-lang-yaml=\"`hddLimitPerVolume`\" pulumi-lang-java=\"`hddLimitPerVolume`\"\u003e`hddLimitPerVolume`\u003c/span\u003e - The HDD limit per volume.\n    * \u003cspan pulumi-lang-nodejs=\"`hddVolumeProvisioned`\" pulumi-lang-dotnet=\"`HddVolumeProvisioned`\" pulumi-lang-go=\"`hddVolumeProvisioned`\" pulumi-lang-python=\"`hdd_volume_provisioned`\" pulumi-lang-yaml=\"`hddVolumeProvisioned`\" pulumi-lang-java=\"`hddVolumeProvisioned`\"\u003e`hddVolumeProvisioned`\u003c/span\u003e - The HDD volume provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`k8sClusterLimitTotal`\" pulumi-lang-dotnet=\"`K8sClusterLimitTotal`\" pulumi-lang-go=\"`k8sClusterLimitTotal`\" pulumi-lang-python=\"`k8s_cluster_limit_total`\" pulumi-lang-yaml=\"`k8sClusterLimitTotal`\" pulumi-lang-java=\"`k8sClusterLimitTotal`\"\u003e`k8sClusterLimitTotal`\u003c/span\u003e - The total Kubernetes cluster limit.\n    * \u003cspan pulumi-lang-nodejs=\"`k8sClustersProvisioned`\" pulumi-lang-dotnet=\"`K8sClustersProvisioned`\" pulumi-lang-go=\"`k8sClustersProvisioned`\" pulumi-lang-python=\"`k8s_clusters_provisioned`\" pulumi-lang-yaml=\"`k8sClustersProvisioned`\" pulumi-lang-java=\"`k8sClustersProvisioned`\"\u003e`k8sClustersProvisioned`\u003c/span\u003e - The number of Kubernetes clusters provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`natGatewayLimitTotal`\" pulumi-lang-dotnet=\"`NatGatewayLimitTotal`\" pulumi-lang-go=\"`natGatewayLimitTotal`\" pulumi-lang-python=\"`nat_gateway_limit_total`\" pulumi-lang-yaml=\"`natGatewayLimitTotal`\" pulumi-lang-java=\"`natGatewayLimitTotal`\"\u003e`natGatewayLimitTotal`\u003c/span\u003e - The total NAT gateway limit.\n    * \u003cspan pulumi-lang-nodejs=\"`natGatewayProvisioned`\" pulumi-lang-dotnet=\"`NatGatewayProvisioned`\" pulumi-lang-go=\"`natGatewayProvisioned`\" pulumi-lang-python=\"`nat_gateway_provisioned`\" pulumi-lang-yaml=\"`natGatewayProvisioned`\" pulumi-lang-java=\"`natGatewayProvisioned`\"\u003e`natGatewayProvisioned`\u003c/span\u003e - The number of NAT gateways provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`nlbLimitTotal`\" pulumi-lang-dotnet=\"`NlbLimitTotal`\" pulumi-lang-go=\"`nlbLimitTotal`\" pulumi-lang-python=\"`nlb_limit_total`\" pulumi-lang-yaml=\"`nlbLimitTotal`\" pulumi-lang-java=\"`nlbLimitTotal`\"\u003e`nlbLimitTotal`\u003c/span\u003e - The total NLB limit.\n    * \u003cspan pulumi-lang-nodejs=\"`nlbProvisioned`\" pulumi-lang-dotnet=\"`NlbProvisioned`\" pulumi-lang-go=\"`nlbProvisioned`\" pulumi-lang-python=\"`nlb_provisioned`\" pulumi-lang-yaml=\"`nlbProvisioned`\" pulumi-lang-java=\"`nlbProvisioned`\"\u003e`nlbProvisioned`\u003c/span\u003e - The number of NLBs provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`ramProvisioned`\" pulumi-lang-dotnet=\"`RamProvisioned`\" pulumi-lang-go=\"`ramProvisioned`\" pulumi-lang-python=\"`ram_provisioned`\" pulumi-lang-yaml=\"`ramProvisioned`\" pulumi-lang-java=\"`ramProvisioned`\"\u003e`ramProvisioned`\u003c/span\u003e - The RAM provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`reservableIps`\" pulumi-lang-dotnet=\"`ReservableIps`\" pulumi-lang-go=\"`reservableIps`\" pulumi-lang-python=\"`reservable_ips`\" pulumi-lang-yaml=\"`reservableIps`\" pulumi-lang-java=\"`reservableIps`\"\u003e`reservableIps`\u003c/span\u003e - The number of reservable IPs.\n    * \u003cspan pulumi-lang-nodejs=\"`reservedIpsInUse`\" pulumi-lang-dotnet=\"`ReservedIpsInUse`\" pulumi-lang-go=\"`reservedIpsInUse`\" pulumi-lang-python=\"`reserved_ips_in_use`\" pulumi-lang-yaml=\"`reservedIpsInUse`\" pulumi-lang-java=\"`reservedIpsInUse`\"\u003e`reservedIpsInUse`\u003c/span\u003e - The number of reserved IPs in use.\n    * \u003cspan pulumi-lang-nodejs=\"`reservedIpsOnContract`\" pulumi-lang-dotnet=\"`ReservedIpsOnContract`\" pulumi-lang-go=\"`reservedIpsOnContract`\" pulumi-lang-python=\"`reserved_ips_on_contract`\" pulumi-lang-yaml=\"`reservedIpsOnContract`\" pulumi-lang-java=\"`reservedIpsOnContract`\"\u003e`reservedIpsOnContract`\u003c/span\u003e - The number of reserved IPs on the contract.\n    * \u003cspan pulumi-lang-nodejs=\"`ssdLimitPerContract`\" pulumi-lang-dotnet=\"`SsdLimitPerContract`\" pulumi-lang-go=\"`ssdLimitPerContract`\" pulumi-lang-python=\"`ssd_limit_per_contract`\" pulumi-lang-yaml=\"`ssdLimitPerContract`\" pulumi-lang-java=\"`ssdLimitPerContract`\"\u003e`ssdLimitPerContract`\u003c/span\u003e - The SSD limit per contract.\n    * \u003cspan pulumi-lang-nodejs=\"`ssdLimitPerVolume`\" pulumi-lang-dotnet=\"`SsdLimitPerVolume`\" pulumi-lang-go=\"`ssdLimitPerVolume`\" pulumi-lang-python=\"`ssd_limit_per_volume`\" pulumi-lang-yaml=\"`ssdLimitPerVolume`\" pulumi-lang-java=\"`ssdLimitPerVolume`\"\u003e`ssdLimitPerVolume`\u003c/span\u003e - The SSD limit per volume.\n    * \u003cspan pulumi-lang-nodejs=\"`ssdVolumeProvisioned`\" pulumi-lang-dotnet=\"`SsdVolumeProvisioned`\" pulumi-lang-go=\"`ssdVolumeProvisioned`\" pulumi-lang-python=\"`ssd_volume_provisioned`\" pulumi-lang-yaml=\"`ssdVolumeProvisioned`\" pulumi-lang-java=\"`ssdVolumeProvisioned`\"\u003e`ssdVolumeProvisioned`\u003c/span\u003e - The SSD volume provisioned.\n    * \u003cspan pulumi-lang-nodejs=\"`securityGroupsPerVdc`\" pulumi-lang-dotnet=\"`SecurityGroupsPerVdc`\" pulumi-lang-go=\"`securityGroupsPerVdc`\" pulumi-lang-python=\"`security_groups_per_vdc`\" pulumi-lang-yaml=\"`securityGroupsPerVdc`\" pulumi-lang-java=\"`securityGroupsPerVdc`\"\u003e`securityGroupsPerVdc`\u003c/span\u003e - The number of security groups per VDC.\n    * \u003cspan pulumi-lang-nodejs=\"`securityGroupsPerResource`\" pulumi-lang-dotnet=\"`SecurityGroupsPerResource`\" pulumi-lang-go=\"`securityGroupsPerResource`\" pulumi-lang-python=\"`security_groups_per_resource`\" pulumi-lang-yaml=\"`securityGroupsPerResource`\" pulumi-lang-java=\"`securityGroupsPerResource`\"\u003e`securityGroupsPerResource`\u003c/span\u003e - The number of security groups per resource.\n    * \u003cspan pulumi-lang-nodejs=\"`rulesPerSecurityGroup`\" pulumi-lang-dotnet=\"`RulesPerSecurityGroup`\" pulumi-lang-go=\"`rulesPerSecurityGroup`\" pulumi-lang-python=\"`rules_per_security_group`\" pulumi-lang-yaml=\"`rulesPerSecurityGroup`\" pulumi-lang-java=\"`rulesPerSecurityGroup`\"\u003e`rulesPerSecurityGroup`\u003c/span\u003e - The number of rules per security group.\n",
            "outputs": {
                "description": "A collection of values returned by getContracts.\n",
                "properties": {
                    "contracts": {
                        "items": {
                            "$ref": "#/types/ionoscloud:index/getContractsContract:getContractsContract"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    }
                },
                "required": [
                    "contracts",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getDnsReverseRecord:getDnsReverseRecord": {
            "description": "The **DNS Reverse Record** can be used to search for and return an existing DNS Reverse Record.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search and make sure that your resources have unique names.\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **ionoscloud_dns_reverse_record** data source. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n### By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getDnsReverseRecord({\n    id: \"record_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_dns_reverse_record(id=\"record_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetDnsReverseRecord.Invoke(new()\n    {\n        Id = \"record_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetDnsReverseRecord(ctx, \u0026ionoscloud.LookupDnsReverseRecordArgs{\n\t\t\tId: pulumi.StringRef(\"record_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetDnsReverseRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getDnsReverseRecord(GetDnsReverseRecordArgs.builder()\n            .id(\"record_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getDnsReverseRecord\n      arguments:\n        id: record_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getDnsReverseRecord({\n    name: \"recordexample\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_dns_reverse_record(name=\"recordexample\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetDnsReverseRecord.Invoke(new()\n    {\n        Name = \"recordexample\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetDnsReverseRecord(ctx, \u0026ionoscloud.LookupDnsReverseRecordArgs{\n\t\t\tName: pulumi.StringRef(\"recordexample\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetDnsReverseRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getDnsReverseRecord(GetDnsReverseRecordArgs.builder()\n            .name(\"recordexample\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getDnsReverseRecord\n      arguments:\n        name: recordexample\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name with partial match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getDnsReverseRecord({\n    name: \"record\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_dns_reverse_record(name=\"record\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetDnsReverseRecord.Invoke(new()\n    {\n        Name = \"record\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetDnsReverseRecord(ctx, \u0026ionoscloud.LookupDnsReverseRecordArgs{\n\t\t\tName:         pulumi.StringRef(\"record\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetDnsReverseRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getDnsReverseRecord(GetDnsReverseRecordArgs.builder()\n            .name(\"record\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getDnsReverseRecord\n      arguments:\n        name: record\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By IP\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getDnsReverseRecord({\n    ip: \"exampleIP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_dns_reverse_record(ip=\"exampleIP\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetDnsReverseRecord.Invoke(new()\n    {\n        Ip = \"exampleIP\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetDnsReverseRecord(ctx, \u0026ionoscloud.LookupDnsReverseRecordArgs{\n\t\t\tIp: pulumi.StringRef(\"exampleIP\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetDnsReverseRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getDnsReverseRecord(GetDnsReverseRecordArgs.builder()\n            .ip(\"exampleIP\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getDnsReverseRecord\n      arguments:\n        ip: exampleIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDnsReverseRecord.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "[string] The ID of the DNS Reverse Record you want to search for.\n"
                    },
                    "ip": {
                        "type": "string",
                        "description": "[string] The IP of the DNS Reverse Record you want to search for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the DNS Reverse Record you want to search for.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "[bool] Whether partial matching is allowed or not when using name argument. Default value is false.\n\nEither \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e must be provided. If none, or more are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDnsReverseRecord.\n",
                "properties": {
                    "description": {
                        "description": "Description stored along with the reverse DNS record to describe its usage.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The UUID of the DNS Reverse Record.\n",
                        "type": "string"
                    },
                    "ip": {
                        "description": "Specifies for which IP address the reverse record should be created. The IP addresses needs to be owned by the contract.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The reverse DNS record name.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    }
                },
                "required": [
                    "description",
                    "id",
                    "ip",
                    "name"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getDnsReverseRecords:getDnsReverseRecords": {
            "description": "The **DNS Reverse Records** can be used to search for and return existing DNS Reverse Records.\nMultiple matches will be returned.\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **ionoscloud_dns_reverse_records** data source. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n### By name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getDnsReverseRecords({\n    name: \"recordexample\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_dns_reverse_records(name=\"recordexample\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetDnsReverseRecords.Invoke(new()\n    {\n        Name = \"recordexample\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetDnsReverseRecords(ctx, \u0026ionoscloud.GetDnsReverseRecordsArgs{\n\t\t\tName: pulumi.StringRef(\"recordexample\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetDnsReverseRecordsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getDnsReverseRecords(GetDnsReverseRecordsArgs.builder()\n            .name(\"recordexample\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getDnsReverseRecords\n      arguments:\n        name: recordexample\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name with partial match\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getDnsReverseRecords({\n    name: \"record\",\n    partialMatch: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_dns_reverse_records(name=\"record\",\n    partial_match=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetDnsReverseRecords.Invoke(new()\n    {\n        Name = \"record\",\n        PartialMatch = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetDnsReverseRecords(ctx, \u0026ionoscloud.GetDnsReverseRecordsArgs{\n\t\t\tName:         pulumi.StringRef(\"record\"),\n\t\t\tPartialMatch: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetDnsReverseRecordsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getDnsReverseRecords(GetDnsReverseRecordsArgs.builder()\n            .name(\"record\")\n            .partialMatch(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getDnsReverseRecords\n      arguments:\n        name: record\n        partialMatch: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By IPs\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.getDnsReverseRecords({\n    ips: [\n        \"exampleIP1\",\n        \"exampleIP2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.get_dns_reverse_records(ips=[\n    \"exampleIP1\",\n    \"exampleIP2\",\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Index.GetDnsReverseRecords.Invoke(new()\n    {\n        Ips = new[]\n        {\n            \"exampleIP1\",\n            \"exampleIP2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetDnsReverseRecords(ctx, \u0026ionoscloud.GetDnsReverseRecordsArgs{\n\t\t\tIps: []string{\n\t\t\t\t\"exampleIP1\",\n\t\t\t\t\"exampleIP2\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetDnsReverseRecordsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = IonoscloudFunctions.getDnsReverseRecords(GetDnsReverseRecordsArgs.builder()\n            .ips(            \n                \"exampleIP1\",\n                \"exampleIP2\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:getDnsReverseRecords\n      arguments:\n        ips:\n          - exampleIP1\n          - exampleIP2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDnsReverseRecords.\n",
                "properties": {
                    "ips": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "[list of string] The IPs of the DNS Reverse Records you want to search for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the DNS Reverse Record you want to search for.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "[bool] Whether partial matching is allowed or not when using name argument. Default value is false.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDnsReverseRecords.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "ips": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The reverse DNS record name.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "reverseRecords": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:index/getDnsReverseRecordsReverseRecord:getDnsReverseRecordsReverseRecord"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "reverseRecords",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getGpu:getGpu": {
            "deprecationMessage": "ionoscloud.index/getgpu.getGpu has been deprecated in favor of ionoscloud.compute/getgpu.getGpu",
            "description": "The **GPU data source** can be used to search for and return an existing GPU by either its ID or name.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGpu({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n    id: \"gpu_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\",\n    id=\"gpu_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGpu.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n        Id = \"gpu_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetGpu(ctx, \u0026compute.GetGpuArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tId:           pulumi.StringRef(\"gpu_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGpuArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGpu(GetGpuArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .id(\"gpu_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGpu\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n        id: gpu_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGpu({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n    name: \"GPU Name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\",\n    name=\"GPU Name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGpu.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n        Name = \"GPU Name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetGpu(ctx, \u0026compute.GetGpuArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t\tName:         pulumi.StringRef(\"GPU Name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGpuArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGpu(GetGpuArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .name(\"GPU Name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGpu\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n        name: GPU Name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGpu.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "The ID of the datacenter.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the GPU.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\"\u003e`serverId`\u003c/span\u003e are required. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If both \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the GPU.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "serverId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGpu.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the GPU.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "model": {
                        "description": "The model of the GPU.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the GPU.\n",
                        "type": "string"
                    },
                    "serverId": {
                        "type": "string"
                    },
                    "type": {
                        "description": "The type of the GPU.\n",
                        "type": "string"
                    },
                    "vendor": {
                        "description": "The vendor of the GPU.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "id",
                    "model",
                    "name",
                    "serverId",
                    "type",
                    "vendor"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getGpuServer:getGpuServer": {
            "deprecationMessage": "ionoscloud.index/getgpuserver.getGpuServer has been deprecated in favor of ionoscloud.compute/getgpuserver.getGPUServer",
            "description": "The [GPU Server data source](https://docs.ionos.com/cloud/compute-services/compute-engine/cloud-gpu-vm) can be used to search for and return existing GPU servers. \nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGPUServer({\n    datacenterId: \"datacenter_id\",\n    id: \"server_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu_server(datacenter_id=\"datacenter_id\",\n    id=\"server_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGPUServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Id = \"server_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupGPUServer(ctx, \u0026compute.LookupGPUServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tId:           pulumi.StringRef(\"server_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGPUServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGPUServer(GetGPUServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .id(\"server_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGPUServer\n      arguments:\n        datacenterId: datacenter_id\n        id: server_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGPUServer({\n    datacenterId: \"datacenter_id\",\n    name: \"GPU Server Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpu_server(datacenter_id=\"datacenter_id\",\n    name=\"GPU Server Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGPUServer.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        Name = \"GPU Server Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupGPUServer(ctx, \u0026compute.LookupGPUServerArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tName:         pulumi.StringRef(\"GPU Server Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGPUServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGPUServer(GetGPUServerArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .name(\"GPU Server Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGPUServer\n      arguments:\n        datacenterId: datacenter_id\n        name: GPU Server Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGpuServer.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the server you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "Location of that image/snapshot\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing server that you want to search for.\n"
                    },
                    "templateUuid": {
                        "type": "string",
                        "description": "The UUID of the template for creating a GPU server; the available templates for GPU servers can be found on the templates resource\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGpuServer.\n",
                "properties": {
                    "availabilityZone": {
                        "description": "The availability zone in which the volume should exist\n",
                        "type": "string"
                    },
                    "bootCdrom": {
                        "type": "string"
                    },
                    "bootImage": {
                        "type": "string"
                    },
                    "bootVolume": {
                        "type": "string"
                    },
                    "cdroms": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:index/getGpuServerCdrom:getGpuServerCdrom"
                        },
                        "type": "array"
                    },
                    "cores": {
                        "type": "integer"
                    },
                    "cpuFamily": {
                        "type": "string"
                    },
                    "datacenterId": {
                        "description": "The id of the datacenter\n",
                        "type": "string"
                    },
                    "hostname": {
                        "description": "The hostname of the server\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "Id of the attached volume\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "Location of that image/snapshot\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the attached volume\n",
                        "type": "string"
                    },
                    "nics": {
                        "items": {
                            "$ref": "#/types/ionoscloud:index/getGpuServerNic:getGpuServerNic"
                        },
                        "type": "array"
                    },
                    "ram": {
                        "type": "integer"
                    },
                    "securityGroupsIds": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "templateUuid": {
                        "description": "The UUID of the template for creating a GPU server; the available templates for GPU servers can be found on the templates resource\n",
                        "type": "string"
                    },
                    "token": {
                        "type": "string"
                    },
                    "vmState": {
                        "description": "Status of the virtual Machine\n",
                        "type": "string"
                    },
                    "volumes": {
                        "description": "list of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:index/getGpuServerVolume:getGpuServerVolume"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "availabilityZone",
                    "bootCdrom",
                    "bootImage",
                    "bootVolume",
                    "cdroms",
                    "cores",
                    "cpuFamily",
                    "datacenterId",
                    "hostname",
                    "id",
                    "name",
                    "nics",
                    "ram",
                    "securityGroupsIds",
                    "token",
                    "vmState",
                    "volumes"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getGpus:getGpus": {
            "deprecationMessage": "ionoscloud.index/getgpus.getGpus has been deprecated in favor of ionoscloud.compute/getgpus.getGpus",
            "description": "The **GPUs data source** can be used to retrieve a list of all GPUs attached to a specific server within a datacenter.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getGpus({\n    datacenterId: \"datacenter_id\",\n    serverId: \"server_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_gpus(datacenter_id=\"datacenter_id\",\n    server_id=\"server_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetGpus.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        ServerId = \"server_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetGpus(ctx, \u0026compute.GetGpusArgs{\n\t\t\tDatacenterId: \"datacenter_id\",\n\t\t\tServerId:     \"server_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetGpusArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getGpus(GetGpusArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .serverId(\"server_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getGpus\n      arguments:\n        datacenterId: datacenter_id\n        serverId: server_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGpus.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "The ID of the datacenter.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "serverId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGpus.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string"
                    },
                    "gpuses": {
                        "description": "A list of GPUs. Each GPU has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:index/getGpusGpus:getGpusGpus"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "serverId": {
                        "type": "string"
                    }
                },
                "required": [
                    "datacenterId",
                    "gpuses",
                    "serverId",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getKafkaUserCredentials:getKafkaUserCredentials": {
            "description": "The **Kafka user credentials** data source can be used to retrieve access credentials for a specific user. \n\n\u003e ⚠️  In order to avoid storing sensitive data in the state, the user credentials ephemeral resource can be used.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst kafkaUserCredentialsDs = ionoscloud.getKafkaUserCredentials({\n    clusterId: \"kafka_cluster_id\",\n    id: \"kafka_user_id\",\n    location: \"kafka_cluster_location\",\n    timeouts: {\n        read: \"1m\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nkafka_user_credentials_ds = ionoscloud.get_kafka_user_credentials(cluster_id=\"kafka_cluster_id\",\n    id=\"kafka_user_id\",\n    location=\"kafka_cluster_location\",\n    timeouts={\n        \"read\": \"1m\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafkaUserCredentialsDs = Ionoscloud.Index.GetKafkaUserCredentials.Invoke(new()\n    {\n        ClusterId = \"kafka_cluster_id\",\n        Id = \"kafka_user_id\",\n        Location = \"kafka_cluster_location\",\n        Timeouts = new Ionoscloud.Inputs.GetKafkaUserCredentialsTimeoutsInputArgs\n        {\n            Read = \"1m\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetKafkaUserCredentials(ctx, \u0026ionoscloud.GetKafkaUserCredentialsArgs{\n\t\t\tClusterId: \"kafka_cluster_id\",\n\t\t\tId:        pulumi.StringRef(\"kafka_user_id\"),\n\t\t\tLocation:  pulumi.StringRef(\"kafka_cluster_location\"),\n\t\t\tTimeouts: ionoscloud.GetKafkaUserCredentialsTimeouts{\n\t\t\t\tRead: pulumi.StringRef(\"1m\"),\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetKafkaUserCredentialsArgs;\nimport com.pulumi.ionoscloud.inputs.GetKafkaUserCredentialsTimeoutsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var kafkaUserCredentialsDs = IonoscloudFunctions.getKafkaUserCredentials(GetKafkaUserCredentialsArgs.builder()\n            .clusterId(\"kafka_cluster_id\")\n            .id(\"kafka_user_id\")\n            .location(\"kafka_cluster_location\")\n            .timeouts(GetKafkaUserCredentialsTimeoutsArgs.builder()\n                .read(\"1m\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  kafkaUserCredentialsDs:\n    fn::invoke:\n      function: ionoscloud:getKafkaUserCredentials\n      arguments:\n        clusterId: kafka_cluster_id\n        id: kafka_user_id\n        location: kafka_cluster_location\n        timeouts:\n          read: 1m\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst kafkaUserCredentialsDs = ionoscloud.getKafkaUserCredentials({\n    clusterId: \"kafka_cluster_id\",\n    username: \"kafka_username\",\n    location: \"kafka_cluster_location\",\n    timeouts: {\n        read: \"1m\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nkafka_user_credentials_ds = ionoscloud.get_kafka_user_credentials(cluster_id=\"kafka_cluster_id\",\n    username=\"kafka_username\",\n    location=\"kafka_cluster_location\",\n    timeouts={\n        \"read\": \"1m\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafkaUserCredentialsDs = Ionoscloud.Index.GetKafkaUserCredentials.Invoke(new()\n    {\n        ClusterId = \"kafka_cluster_id\",\n        Username = \"kafka_username\",\n        Location = \"kafka_cluster_location\",\n        Timeouts = new Ionoscloud.Inputs.GetKafkaUserCredentialsTimeoutsInputArgs\n        {\n            Read = \"1m\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetKafkaUserCredentials(ctx, \u0026ionoscloud.GetKafkaUserCredentialsArgs{\n\t\t\tClusterId: \"kafka_cluster_id\",\n\t\t\tUsername:  pulumi.StringRef(\"kafka_username\"),\n\t\t\tLocation:  pulumi.StringRef(\"kafka_cluster_location\"),\n\t\t\tTimeouts: ionoscloud.GetKafkaUserCredentialsTimeouts{\n\t\t\t\tRead: pulumi.StringRef(\"1m\"),\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetKafkaUserCredentialsArgs;\nimport com.pulumi.ionoscloud.inputs.GetKafkaUserCredentialsTimeoutsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var kafkaUserCredentialsDs = IonoscloudFunctions.getKafkaUserCredentials(GetKafkaUserCredentialsArgs.builder()\n            .clusterId(\"kafka_cluster_id\")\n            .username(\"kafka_username\")\n            .location(\"kafka_cluster_location\")\n            .timeouts(GetKafkaUserCredentialsTimeoutsArgs.builder()\n                .read(\"1m\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  kafkaUserCredentialsDs:\n    fn::invoke:\n      function: ionoscloud:getKafkaUserCredentials\n      arguments:\n        clusterId: kafka_cluster_id\n        username: kafka_username\n        location: kafka_cluster_location\n        timeouts:\n          read: 1m\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Attributes reference\n\nThe following attributes are returned by the data source:\n\n* \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - the ID of the user;\n* \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e - the name of the user;\n* \u003cspan pulumi-lang-nodejs=\"`certificateAuthority`\" pulumi-lang-dotnet=\"`CertificateAuthority`\" pulumi-lang-go=\"`certificateAuthority`\" pulumi-lang-python=\"`certificate_authority`\" pulumi-lang-yaml=\"`certificateAuthority`\" pulumi-lang-java=\"`certificateAuthority`\"\u003e`certificateAuthority`\u003c/span\u003e - PEM for the certificate authority;\n* \u003cspan pulumi-lang-nodejs=\"`privateKey`\" pulumi-lang-dotnet=\"`PrivateKey`\" pulumi-lang-go=\"`privateKey`\" pulumi-lang-python=\"`private_key`\" pulumi-lang-yaml=\"`privateKey`\" pulumi-lang-java=\"`privateKey`\"\u003e`privateKey`\u003c/span\u003e - PEM for the private key;\n* \u003cspan pulumi-lang-nodejs=\"`certificate`\" pulumi-lang-dotnet=\"`Certificate`\" pulumi-lang-go=\"`certificate`\" pulumi-lang-python=\"`certificate`\" pulumi-lang-yaml=\"`certificate`\" pulumi-lang-java=\"`certificate`\"\u003e`certificate`\u003c/span\u003e - PEM for the certificate;\n",
            "inputs": {
                "description": "A collection of arguments for invoking getKafkaUserCredentials.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] the ID of the Kafka cluster;\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "[string] the ID of the Kafka user, can be retrieved using \u003cspan pulumi-lang-nodejs=\"`ionoscloud.getKafkaUsers`\" pulumi-lang-dotnet=\"`ionoscloud.getKafkaUsers`\" pulumi-lang-go=\"`getKafkaUsers`\" pulumi-lang-python=\"`get_kafka_users`\" pulumi-lang-yaml=\"`ionoscloud.getKafkaUsers`\" pulumi-lang-java=\"`ionoscloud.getKafkaUsers`\"\u003e`ionoscloud.getKafkaUsers`\u003c/span\u003e data source;\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] the location of the Kafka cluster, can be one of: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If omitted, the default location will be used: `de/fra`;\n"
                    },
                    "timeouts": {
                        "$ref": "#/types/ionoscloud:index/getKafkaUserCredentialsTimeouts:getKafkaUserCredentialsTimeouts"
                    },
                    "username": {
                        "type": "string",
                        "description": "[string] the name of the Kafka user, can be retrieved using \u003cspan pulumi-lang-nodejs=\"`ionoscloud.getKafkaUsers`\" pulumi-lang-dotnet=\"`ionoscloud.getKafkaUsers`\" pulumi-lang-go=\"`getKafkaUsers`\" pulumi-lang-python=\"`get_kafka_users`\" pulumi-lang-yaml=\"`ionoscloud.getKafkaUsers`\" pulumi-lang-java=\"`ionoscloud.getKafkaUsers`\"\u003e`ionoscloud.getKafkaUsers`\u003c/span\u003e data source;\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getKafkaUserCredentials.\n",
                "properties": {
                    "certificate": {
                        "type": "string"
                    },
                    "certificateAuthority": {
                        "type": "string"
                    },
                    "clusterId": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "privateKey": {
                        "type": "string"
                    },
                    "timeouts": {
                        "$ref": "#/types/ionoscloud:index/getKafkaUserCredentialsTimeouts:getKafkaUserCredentialsTimeouts"
                    },
                    "username": {
                        "type": "string"
                    }
                },
                "required": [
                    "certificate",
                    "certificateAuthority",
                    "clusterId",
                    "id",
                    "privateKey",
                    "username"
                ],
                "type": "object"
            }
        },
        "ionoscloud:index/getKafkaUsers:getKafkaUsers": {
            "description": "The **Kafka users** data source can be used to retrieve information about users.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst kafkaUsersDs = ionoscloud.getKafkaUsers({\n    clusterId: \"kafka_cluster_id\",\n    location: \"kafka_cluster_location\",\n    timeouts: {\n        read: \"1s\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nkafka_users_ds = ionoscloud.get_kafka_users(cluster_id=\"kafka_cluster_id\",\n    location=\"kafka_cluster_location\",\n    timeouts={\n        \"read\": \"1s\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafkaUsersDs = Ionoscloud.Index.GetKafkaUsers.Invoke(new()\n    {\n        ClusterId = \"kafka_cluster_id\",\n        Location = \"kafka_cluster_location\",\n        Timeouts = new Ionoscloud.Inputs.GetKafkaUsersTimeoutsInputArgs\n        {\n            Read = \"1s\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ionoscloud.GetKafkaUsers(ctx, \u0026ionoscloud.GetKafkaUsersArgs{\n\t\t\tClusterId: \"kafka_cluster_id\",\n\t\t\tLocation:  pulumi.StringRef(\"kafka_cluster_location\"),\n\t\t\tTimeouts: ionoscloud.GetKafkaUsersTimeouts{\n\t\t\t\tRead: pulumi.StringRef(\"1s\"),\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.IonoscloudFunctions;\nimport com.pulumi.ionoscloud.inputs.GetKafkaUsersArgs;\nimport com.pulumi.ionoscloud.inputs.GetKafkaUsersTimeoutsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var kafkaUsersDs = IonoscloudFunctions.getKafkaUsers(GetKafkaUsersArgs.builder()\n            .clusterId(\"kafka_cluster_id\")\n            .location(\"kafka_cluster_location\")\n            .timeouts(GetKafkaUsersTimeoutsArgs.builder()\n                .read(\"1s\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  kafkaUsersDs:\n    fn::invoke:\n      function: ionoscloud:getKafkaUsers\n      arguments:\n        clusterId: kafka_cluster_id\n        location: kafka_cluster_location\n        timeouts:\n          read: 1s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getKafkaUsers.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "[string] the ID of the Kafka cluster;\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] the location of the Kafka cluster, can be one of: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`. If omitted, the default location will be used: `de/fra`;\n"
                    },
                    "timeouts": {
                        "$ref": "#/types/ionoscloud:index/getKafkaUsersTimeouts:getKafkaUsersTimeouts"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getKafkaUsers.\n",
                "properties": {
                    "clusterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "timeouts": {
                        "$ref": "#/types/ionoscloud:index/getKafkaUsersTimeouts:getKafkaUsersTimeouts"
                    },
                    "users": {
                        "description": "the list of users, for each user inside the list, the following information is retrieved:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:index/getKafkaUsersUser:getKafkaUsersUser"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "clusterId",
                    "users",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:k8s/getCluster:getCluster": {
            "description": "The **k8s Cluster data source** can be used to search for and return existing k8s clusters.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.k8s.getCluster({\n    id: \"cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.k8s.get_cluster(id=\"cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.K8s.GetCluster.Invoke(new()\n    {\n        Id = \"cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.LookupCluster(ctx, \u0026k8s.LookupClusterArgs{\n\t\t\tId: pulumi.StringRef(\"cluster_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = K8sFunctions.getCluster(GetClusterArgs.builder()\n            .id(\"cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:k8s:getCluster\n      arguments:\n        id: cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.k8s.getCluster({\n    name: \"K8s Cluster Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.k8s.get_cluster(name=\"K8s Cluster Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.K8s.GetCluster.Invoke(new()\n    {\n        Name = \"K8s Cluster Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.LookupCluster(ctx, \u0026k8s.LookupClusterArgs{\n\t\t\tName: pulumi.StringRef(\"K8s Cluster Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = K8sFunctions.getCluster(GetClusterArgs.builder()\n            .name(\"K8s Cluster Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:k8s:getCluster\n      arguments:\n        name: K8s Cluster Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example of accessing a kubernetes cluster using the user's token\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst testCluster = new ionoscloud.k8s.Cluster(\"test\", {\n    name: \"test_cluster\",\n    maintenanceWindow: {\n        dayOfTheWeek: \"Saturday\",\n        time: \"03:58:25Z\",\n    },\n});\nconst test = ionoscloud.k8s.getCluster({\n    name: \"test_cluster\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\ntest_cluster = ionoscloud.k8s.Cluster(\"test\",\n    name=\"test_cluster\",\n    maintenance_window={\n        \"day_of_the_week\": \"Saturday\",\n        \"time\": \"03:58:25Z\",\n    })\ntest = ionoscloud.k8s.get_cluster(name=\"test_cluster\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testCluster = new Ionoscloud.K8s.Cluster(\"test\", new()\n    {\n        Name = \"test_cluster\",\n        MaintenanceWindow = new Ionoscloud.K8s.Inputs.ClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Saturday\",\n            Time = \"03:58:25Z\",\n        },\n    });\n\n    var test = Ionoscloud.K8s.GetCluster.Invoke(new()\n    {\n        Name = \"test_cluster\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.NewCluster(ctx, \"test\", \u0026k8s.ClusterArgs{\n\t\t\tName: pulumi.String(\"test_cluster\"),\n\t\t\tMaintenanceWindow: \u0026k8s.ClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Saturday\"),\n\t\t\t\tTime:         pulumi.String(\"03:58:25Z\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = k8s.LookupCluster(ctx, \u0026k8s.LookupClusterArgs{\n\t\t\tName: pulumi.StringRef(\"test_cluster\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.ClusterArgs;\nimport com.pulumi.ionoscloud.k8s.inputs.ClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n            .name(\"test_cluster\")\n            .maintenanceWindow(ClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Saturday\")\n                .time(\"03:58:25Z\")\n                .build())\n            .build());\n\n        final var test = K8sFunctions.getCluster(GetClusterArgs.builder()\n            .name(\"test_cluster\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testCluster:\n    type: ionoscloud:k8s:Cluster\n    name: test\n    properties:\n      name: test_cluster\n      maintenanceWindow:\n        dayOfTheWeek: Saturday\n        time: 03:58:25Z\nvariables:\n  test:\n    fn::invoke:\n      function: ionoscloud:k8s:getCluster\n      arguments:\n        name: test_cluster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Example of accessing a kubernetes cluster using the token from the config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst testCluster = new ionoscloud.k8s.Cluster(\"test\", {\n    name: \"test_cluster\",\n    maintenanceWindow: {\n        dayOfTheWeek: \"Saturday\",\n        time: \"03:58:25Z\",\n    },\n});\nconst test = ionoscloud.k8s.getCluster({\n    name: \"test_cluster\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\ntest_cluster = ionoscloud.k8s.Cluster(\"test\",\n    name=\"test_cluster\",\n    maintenance_window={\n        \"day_of_the_week\": \"Saturday\",\n        \"time\": \"03:58:25Z\",\n    })\ntest = ionoscloud.k8s.get_cluster(name=\"test_cluster\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testCluster = new Ionoscloud.K8s.Cluster(\"test\", new()\n    {\n        Name = \"test_cluster\",\n        MaintenanceWindow = new Ionoscloud.K8s.Inputs.ClusterMaintenanceWindowArgs\n        {\n            DayOfTheWeek = \"Saturday\",\n            Time = \"03:58:25Z\",\n        },\n    });\n\n    var test = Ionoscloud.K8s.GetCluster.Invoke(new()\n    {\n        Name = \"test_cluster\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.NewCluster(ctx, \"test\", \u0026k8s.ClusterArgs{\n\t\t\tName: pulumi.String(\"test_cluster\"),\n\t\t\tMaintenanceWindow: \u0026k8s.ClusterMaintenanceWindowArgs{\n\t\t\t\tDayOfTheWeek: pulumi.String(\"Saturday\"),\n\t\t\t\tTime:         pulumi.String(\"03:58:25Z\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = k8s.LookupCluster(ctx, \u0026k8s.LookupClusterArgs{\n\t\t\tName: pulumi.StringRef(\"test_cluster\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.Cluster;\nimport com.ionoscloud.pulumi.ionoscloud.k8s.ClusterArgs;\nimport com.pulumi.ionoscloud.k8s.inputs.ClusterMaintenanceWindowArgs;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n            .name(\"test_cluster\")\n            .maintenanceWindow(ClusterMaintenanceWindowArgs.builder()\n                .dayOfTheWeek(\"Saturday\")\n                .time(\"03:58:25Z\")\n                .build())\n            .build());\n\n        final var test = K8sFunctions.getCluster(GetClusterArgs.builder()\n            .name(\"test_cluster\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testCluster:\n    type: ionoscloud:k8s:Cluster\n    name: test\n    properties:\n      name: test_cluster\n      maintenanceWindow:\n        dayOfTheWeek: Saturday\n        time: 03:58:25Z\nvariables:\n  test:\n    fn::invoke:\n      function: ionoscloud:k8s:getCluster\n      arguments:\n        name: test_cluster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n",
            "inputs": {
                "description": "A collection of arguments for invoking getCluster.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the cluster you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "this attribute is mandatory if the cluster is private.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing cluster that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getCluster.\n",
                "properties": {
                    "apiSubnetAllowLists": {
                        "description": "access to the K8s API server is restricted to these CIDRs\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "availableUpgradeVersions": {
                        "description": "A list of available versions for upgrading the cluster\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "caCrt": {
                        "description": "base64 decoded cluster certificate authority data (provided as an attribute for direct use)\n",
                        "secret": true,
                        "type": "string"
                    },
                    "configs": {
                        "description": "structured kubernetes config consisting of a list with 1 item with the following fields:\n*\u003cspan pulumi-lang-nodejs=\" apiVersion \" pulumi-lang-dotnet=\" ApiVersion \" pulumi-lang-go=\" apiVersion \" pulumi-lang-python=\" api_version \" pulumi-lang-yaml=\" apiVersion \" pulumi-lang-java=\" apiVersion \"\u003e apiVersion \u003c/span\u003e- Kubernetes API Version\n* kind - \"Config\"\n* current-context - string\n* clusters - list of\n* name - name of cluster\n* cluster - map of\n* certificate-authority-data - **base64 decoded** cluster CA data\n* server -  server address in the form `https://host:port`\n* contexts - list of\n* name - context name\n* context - map of\n* cluster - cluster name\n* user - cluster user\n* users - list of\n* name - user name\n* user - map of\n* token - user token used for authentication\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getClusterConfig:getClusterConfig"
                        },
                        "secret": true,
                        "type": "array"
                    },
                    "id": {
                        "description": "id of the cluster\n",
                        "type": "string"
                    },
                    "k8sVersion": {
                        "description": "Kubernetes version\n",
                        "type": "string"
                    },
                    "kubeConfig": {
                        "description": "Kubernetes configuration\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "this attribute is mandatory if the cluster is private.\n",
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A maintenance window comprise of a day of the week and a time for maintenance to be allowed\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getClusterMaintenanceWindow:getClusterMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "name of the cluster\n",
                        "type": "string"
                    },
                    "natGatewayIp": {
                        "description": "the NAT gateway IP of the cluster if the cluster is private.\n",
                        "type": "string"
                    },
                    "nodePools": {
                        "description": "list of the IDs of the node pools in this cluster\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "nodeSubnet": {
                        "description": "the node subnet of the cluster, if the cluster is private.\n",
                        "type": "string"
                    },
                    "public": {
                        "description": "indicates if the cluster is public or private.\n",
                        "type": "boolean"
                    },
                    "s3Buckets": {
                        "description": "list of IONOS Object Storage bucket configured for K8s usage\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getClusterS3Bucket:getClusterS3Bucket"
                        },
                        "type": "array"
                    },
                    "server": {
                        "description": "cluster server (same as `config[0].clusters[0].cluster.server` but provided as an attribute for ease of use)\n",
                        "secret": true,
                        "type": "string"
                    },
                    "state": {
                        "description": "one of \"AVAILABLE\",\n\"INACTIVE\",\n\"BUSY\",\n\"DEPLOYING\",\n\"ACTIVE\",\n\"FAILED\",\n\"SUSPENDED\",\n\"FAILED_SUSPENDED\",\n\"UPDATING\",\n\"FAILED_UPDATING\",\n\"DESTROYING\",\n\"FAILED_DESTROYING\",\n\"TERMINATED\"\n",
                        "type": "string"
                    },
                    "userTokens": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "a convenience map to be search the token of a specific user\n- key - is the user name\n- value - is the token\n",
                        "secret": true,
                        "type": "object"
                    },
                    "viableNodePoolVersions": {
                        "description": "A list of versions that may be used for node pools under this cluster\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "apiSubnetAllowLists",
                    "availableUpgradeVersions",
                    "caCrt",
                    "configs",
                    "id",
                    "k8sVersion",
                    "kubeConfig",
                    "location",
                    "maintenanceWindows",
                    "name",
                    "natGatewayIp",
                    "nodePools",
                    "nodeSubnet",
                    "public",
                    "s3Buckets",
                    "server",
                    "state",
                    "userTokens",
                    "viableNodePoolVersions"
                ],
                "type": "object"
            }
        },
        "ionoscloud:k8s/getClusters:getClusters": {
            "description": "The **k8s_clusters data source** can be used to search for and return existing kubernetes clusters based on filters used.\n\n## Example Usage\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.k8s.getClusters({\n    filters: [{\n        name: \"name\",\n        value: \"k8sClusterExample\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.k8s.get_clusters(filters=[{\n    \"name\": \"name\",\n    \"value\": \"k8sClusterExample\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.K8s.GetClusters.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new Ionoscloud.K8s.Inputs.GetClustersFilterInputArgs\n            {\n                Name = \"name\",\n                Value = \"k8sClusterExample\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.GetClusters(ctx, \u0026k8s.GetClustersArgs{\n\t\t\tFilters: []k8s.GetClustersFilter{\n\t\t\t\t{\n\t\t\t\t\tName:  \"name\",\n\t\t\t\t\tValue: \"k8sClusterExample\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetClustersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = K8sFunctions.getClusters(GetClustersArgs.builder()\n            .filters(GetClustersFilterArgs.builder()\n                .name(\"name\")\n                .value(\"k8sClusterExample\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:k8s:getClusters\n      arguments:\n        filters:\n          - name: name\n            value: k8sClusterExample\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name and k8s version Family\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example2 = ionoscloud.k8s.getClusters({\n    filters: [\n        {\n            name: \"name\",\n            value: \"k8sClusterExample\",\n        },\n        {\n            name: \"k8s_version\",\n            value: \"1.27\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample2 = ionoscloud.k8s.get_clusters(filters=[\n    {\n        \"name\": \"name\",\n        \"value\": \"k8sClusterExample\",\n    },\n    {\n        \"name\": \"k8s_version\",\n        \"value\": \"1.27\",\n    },\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example2 = Ionoscloud.K8s.GetClusters.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new Ionoscloud.K8s.Inputs.GetClustersFilterInputArgs\n            {\n                Name = \"name\",\n                Value = \"k8sClusterExample\",\n            },\n            new Ionoscloud.K8s.Inputs.GetClustersFilterInputArgs\n            {\n                Name = \"k8s_version\",\n                Value = \"1.27\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.GetClusters(ctx, \u0026k8s.GetClustersArgs{\n\t\t\tFilters: []k8s.GetClustersFilter{\n\t\t\t\t{\n\t\t\t\t\tName:  \"name\",\n\t\t\t\t\tValue: \"k8sClusterExample\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"k8s_version\",\n\t\t\t\t\tValue: \"1.27\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetClustersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example2 = K8sFunctions.getClusters(GetClustersArgs.builder()\n            .filters(            \n                GetClustersFilterArgs.builder()\n                    .name(\"name\")\n                    .value(\"k8sClusterExample\")\n                    .build(),\n                GetClustersFilterArgs.builder()\n                    .name(\"k8s_version\")\n                    .value(\"1.27\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example2:\n    fn::invoke:\n      function: ionoscloud:k8s:getClusters\n      arguments:\n        filters:\n          - name: name\n            value: k8sClusterExample\n          - name: k8s_version\n            value: '1.27'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Retrieve private clusters only, by Name and Cluster State\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.compute.getServers({\n    filters: [\n        {\n            name: \"name\",\n            value: \"k8sClusterExample\",\n        },\n        {\n            name: \"state\",\n            value: \"ACTIVE\",\n        },\n        {\n            name: \"public\",\n            value: \"false\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.compute.get_servers(filters=[\n    {\n        \"name\": \"name\",\n        \"value\": \"k8sClusterExample\",\n    },\n    {\n        \"name\": \"state\",\n        \"value\": \"ACTIVE\",\n    },\n    {\n        \"name\": \"public\",\n        \"value\": \"false\",\n    },\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Compute.GetServers.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new Ionoscloud.Compute.Inputs.GetServersFilterInputArgs\n            {\n                Name = \"name\",\n                Value = \"k8sClusterExample\",\n            },\n            new Ionoscloud.Compute.Inputs.GetServersFilterInputArgs\n            {\n                Name = \"state\",\n                Value = \"ACTIVE\",\n            },\n            new Ionoscloud.Compute.Inputs.GetServersFilterInputArgs\n            {\n                Name = \"public\",\n                Value = \"false\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetServers(ctx, \u0026compute.GetServersArgs{\n\t\t\tFilters: []compute.GetServersFilter{\n\t\t\t\t{\n\t\t\t\t\tName:  \"name\",\n\t\t\t\t\tValue: \"k8sClusterExample\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"state\",\n\t\t\t\t\tValue: \"ACTIVE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"public\",\n\t\t\t\t\tValue: \"false\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.compute.ComputeFunctions;\nimport com.pulumi.ionoscloud.compute.inputs.GetServersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ComputeFunctions.getServers(GetServersArgs.builder()\n            .filters(            \n                GetServersFilterArgs.builder()\n                    .name(\"name\")\n                    .value(\"k8sClusterExample\")\n                    .build(),\n                GetServersFilterArgs.builder()\n                    .name(\"state\")\n                    .value(\"ACTIVE\")\n                    .build(),\n                GetServersFilterArgs.builder()\n                    .name(\"public\")\n                    .value(\"false\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:compute:getServers\n      arguments:\n        filters:\n          - name: name\n            value: k8sClusterExample\n          - name: state\n            value: ACTIVE\n          - name: public\n            value: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getClusters.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getClustersFilter:getClustersFilter"
                        },
                        "description": "One or more property name - value pairs to be used in filtering the cluster list by the specified attributes. You can use most of the top level fields from the \u003cspan pulumi-lang-nodejs=\" k8sCluster \" pulumi-lang-dotnet=\" K8sCluster \" pulumi-lang-go=\" k8sCluster \" pulumi-lang-python=\" k8s_cluster \" pulumi-lang-yaml=\" k8sCluster \" pulumi-lang-java=\" k8sCluster \"\u003e k8sCluster \u003c/span\u003eresource **except** those containing other nested structures such as \u003cspan pulumi-lang-nodejs=\"`maintenanceWindow`\" pulumi-lang-dotnet=\"`MaintenanceWindow`\" pulumi-lang-go=\"`maintenanceWindow`\" pulumi-lang-python=\"`maintenance_window`\" pulumi-lang-yaml=\"`maintenanceWindow`\" pulumi-lang-java=\"`maintenanceWindow`\"\u003e`maintenanceWindow`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e.\n\n**NOTE:** Filtering uses partial matching for all types of values. Searching for a cluster using `name:testCluster` will find all clusters who have the `testCluster` substring in their name. This also applies to values for properties that would normally be boolean or numerical.\n"
                    },
                    "location": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getClusters.\n",
                "properties": {
                    "clusters": {
                        "description": "list of Kubernetes clusters that match the provided filters. The elements of this list are structurally identical to the \u003cspan pulumi-lang-nodejs=\"`k8sCluster`\" pulumi-lang-dotnet=\"`K8sCluster`\" pulumi-lang-go=\"`k8sCluster`\" pulumi-lang-python=\"`k8s_cluster`\" pulumi-lang-yaml=\"`k8sCluster`\" pulumi-lang-java=\"`k8sCluster`\"\u003e`k8sCluster`\u003c/span\u003e datasource, which is limited to retrieving only 1 cluster in a single query.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getClustersCluster:getClustersCluster"
                        },
                        "type": "array"
                    },
                    "entries": {
                        "description": "indicates the number of clusters found and added to the list after the query has been performed with the specified filters.\nFor a full reference of all the attributes returned, check out documentation\n",
                        "type": "integer"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getClustersFilter:getClustersFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    }
                },
                "required": [
                    "clusters",
                    "entries",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:k8s/getNodePool:getNodePool": {
            "description": "The **k8s Node Pool** data source can be used to search for and return existing k8s Node Pools.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.k8s.getNodePool({\n    id: \"k8s_nodepool_id\",\n    k8sClusterId: \"k8s_cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.k8s.get_node_pool(id=\"k8s_nodepool_id\",\n    k8s_cluster_id=\"k8s_cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.K8s.GetNodePool.Invoke(new()\n    {\n        Id = \"k8s_nodepool_id\",\n        K8sClusterId = \"k8s_cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.LookupNodePool(ctx, \u0026k8s.LookupNodePoolArgs{\n\t\t\tId:           pulumi.StringRef(\"k8s_nodepool_id\"),\n\t\t\tK8sClusterId: \"k8s_cluster_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = K8sFunctions.getNodePool(GetNodePoolArgs.builder()\n            .id(\"k8s_nodepool_id\")\n            .k8sClusterId(\"k8s_cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:k8s:getNodePool\n      arguments:\n        id: k8s_nodepool_id\n        k8sClusterId: k8s_cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.k8s.getNodePool({\n    name: \"k8s NodePool Example\",\n    k8sClusterId: \"k8s_cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.k8s.get_node_pool(name=\"k8s NodePool Example\",\n    k8s_cluster_id=\"k8s_cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.K8s.GetNodePool.Invoke(new()\n    {\n        Name = \"k8s NodePool Example\",\n        K8sClusterId = \"k8s_cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.LookupNodePool(ctx, \u0026k8s.LookupNodePoolArgs{\n\t\t\tName:         pulumi.StringRef(\"k8s NodePool Example\"),\n\t\t\tK8sClusterId: \"k8s_cluster_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = K8sFunctions.getNodePool(GetNodePoolArgs.builder()\n            .name(\"k8s NodePool Example\")\n            .k8sClusterId(\"k8s_cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:k8s:getNodePool\n      arguments:\n        name: k8s NodePool Example\n        k8sClusterId: k8s_cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNodePool.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the node pool you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`k8sClusterId`\" pulumi-lang-dotnet=\"`K8sClusterId`\" pulumi-lang-go=\"`k8sClusterId`\" pulumi-lang-python=\"`k8s_cluster_id`\" pulumi-lang-yaml=\"`k8sClusterId`\" pulumi-lang-java=\"`k8sClusterId`\"\u003e`k8sClusterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "k8sClusterId": {
                        "type": "string",
                        "description": "K8s Cluster' UUID\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing node pool that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "k8sClusterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNodePool.\n",
                "properties": {
                    "annotations": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A map of annotations in the form of key \u003e value\n",
                        "type": "object"
                    },
                    "autoScalings": {
                        "description": "The range defining the minimum and maximum number of worker nodes that the managed node group can scale in\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getNodePoolAutoScaling:getNodePoolAutoScaling"
                        },
                        "type": "array"
                    },
                    "availabilityZone": {
                        "description": "The compute availability zone in which the nodes should exist\n",
                        "type": "string"
                    },
                    "availableUpgradeVersions": {
                        "description": "A list of kubernetes versions available for upgrade\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "coresCount": {
                        "description": "CPU cores count\n",
                        "type": "integer"
                    },
                    "cpuFamily": {
                        "description": "CPU Family\n",
                        "type": "string"
                    },
                    "datacenterId": {
                        "description": "The UUID of the VDC\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The LAN ID of an existing LAN at the related datacenter\n",
                        "type": "string"
                    },
                    "k8sClusterId": {
                        "description": "ID of the cluster this node pool is part of\n",
                        "type": "string"
                    },
                    "k8sVersion": {
                        "description": "The kubernetes version\n",
                        "type": "string"
                    },
                    "labels": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A map of labels in the form of key \u003e value\n",
                        "type": "object"
                    },
                    "lans": {
                        "description": "A list of Local Area Networks the node pool is a part of\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getNodePoolLan:getNodePoolLan"
                        },
                        "type": "array"
                    },
                    "location": {
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A maintenance window comprise of a day of the week and a time for maintenance to be allowed\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getNodePoolMaintenanceWindow:getNodePoolMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "name of the node pool\n",
                        "type": "string"
                    },
                    "nodeCount": {
                        "description": "The number of nodes in this node pool\n",
                        "type": "integer"
                    },
                    "publicIps": {
                        "description": "The list of fixed IPs associated with this node pool\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "ramSize": {
                        "description": "The amount of RAM in MB\n",
                        "type": "integer"
                    },
                    "serverType": {
                        "description": "The server type for the compute engine\n",
                        "type": "string"
                    },
                    "state": {
                        "description": "one of \"AVAILABLE\",\n\"INACTIVE\",\n\"BUSY\",\n\"DEPLOYING\",\n\"ACTIVE\",\n\"FAILED\",\n\"SUSPENDED\",\n\"FAILED_SUSPENDED\",\n\"UPDATING\",\n\"FAILED_UPDATING\",\n\"DESTROYING\",\n\"FAILED_DESTROYING\",\n\"TERMINATED\"\n",
                        "type": "string"
                    },
                    "storageSize": {
                        "description": "The size of the volume in GB. The size should be greater than 10GB.\n",
                        "type": "integer"
                    },
                    "storageType": {
                        "description": "HDD or SDD\n",
                        "type": "string"
                    }
                },
                "required": [
                    "annotations",
                    "autoScalings",
                    "availabilityZone",
                    "availableUpgradeVersions",
                    "coresCount",
                    "cpuFamily",
                    "datacenterId",
                    "id",
                    "k8sClusterId",
                    "k8sVersion",
                    "labels",
                    "lans",
                    "maintenanceWindows",
                    "name",
                    "nodeCount",
                    "publicIps",
                    "ramSize",
                    "serverType",
                    "state",
                    "storageSize",
                    "storageType"
                ],
                "type": "object"
            }
        },
        "ionoscloud:k8s/getNodePoolNodes:getNodePoolNodes": {
            "description": "The **k8s Node Pool Nodes** data source can be used to search for and return a list of existing k8s Node Pool nodes.\n## Example Usage\n\n### By IDs\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.k8s.getNodePoolNodes({\n    nodePoolId: \"k8s_nodepool_id\",\n    k8sClusterId: \"k8s_cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.k8s.get_node_pool_nodes(node_pool_id=\"k8s_nodepool_id\",\n    k8s_cluster_id=\"k8s_cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.K8s.GetNodePoolNodes.Invoke(new()\n    {\n        NodePoolId = \"k8s_nodepool_id\",\n        K8sClusterId = \"k8s_cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := k8s.GetNodePoolNodes(ctx, \u0026k8s.GetNodePoolNodesArgs{\n\t\t\tNodePoolId:   \"k8s_nodepool_id\",\n\t\t\tK8sClusterId: \"k8s_cluster_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.k8s.K8sFunctions;\nimport com.pulumi.ionoscloud.k8s.inputs.GetNodePoolNodesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = K8sFunctions.getNodePoolNodes(GetNodePoolNodesArgs.builder()\n            .nodePoolId(\"k8s_nodepool_id\")\n            .k8sClusterId(\"k8s_cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:k8s:getNodePoolNodes\n      arguments:\n        nodePoolId: k8s_nodepool_id\n        k8sClusterId: k8s_cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNodePoolNodes.\n",
                "properties": {
                    "k8sClusterId": {
                        "type": "string",
                        "description": "K8s Cluster' UUID\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "nodePoolId": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "k8sClusterId",
                    "nodePoolId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNodePoolNodes.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "k8sClusterId": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "nodePoolId": {
                        "type": "string"
                    },
                    "nodes": {
                        "description": "a list of the nodes that are in the nodepool\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:k8s/getNodePoolNodesNode:getNodePoolNodesNode"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "k8sClusterId",
                    "nodePoolId",
                    "nodes",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:kafka/getCluster:getCluster": {
            "description": "The **Kafka Cluster data source** can be used to search for and return an existing Kafka Cluster.\nYou can provide a string for the name parameter which will be compared with provisioned Kafka Clusters.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.kafka.getCluster({\n    id: \"your_kafka_cluster_id\",\n    location: \"location_of_kafka_cluster\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.kafka.get_cluster(id=\"your_kafka_cluster_id\",\n    location=\"location_of_kafka_cluster\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Kafka.GetCluster.Invoke(new()\n    {\n        Id = \"your_kafka_cluster_id\",\n        Location = \"location_of_kafka_cluster\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/kafka\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kafka.LookupCluster(ctx, \u0026kafka.LookupClusterArgs{\n\t\t\tId:       pulumi.StringRef(\"your_kafka_cluster_id\"),\n\t\t\tLocation: \"location_of_kafka_cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.kafka.KafkaFunctions;\nimport com.pulumi.ionoscloud.kafka.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = KafkaFunctions.getCluster(GetClusterArgs.builder()\n            .id(\"your_kafka_cluster_id\")\n            .location(\"location_of_kafka_cluster\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:kafka:getCluster\n      arguments:\n        id: your_kafka_cluster_id\n        location: location_of_kafka_cluster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\nNeeds to have the resource be previously created, or a\u003cspan pulumi-lang-nodejs=\" dependsOn \" pulumi-lang-dotnet=\" DependsOn \" pulumi-lang-go=\" dependsOn \" pulumi-lang-python=\" depends_on \" pulumi-lang-yaml=\" dependsOn \" pulumi-lang-java=\" dependsOn \"\u003e dependsOn \u003c/span\u003eclause to ensure that the resource is created before\nthis data source is called.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.kafka.getCluster({\n    name: \"kafka-cluster\",\n    location: \"location_of_kafka_cluster\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.kafka.get_cluster(name=\"kafka-cluster\",\n    location=\"location_of_kafka_cluster\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Kafka.GetCluster.Invoke(new()\n    {\n        Name = \"kafka-cluster\",\n        Location = \"location_of_kafka_cluster\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/kafka\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kafka.LookupCluster(ctx, \u0026kafka.LookupClusterArgs{\n\t\t\tName:     pulumi.StringRef(\"kafka-cluster\"),\n\t\t\tLocation: \"location_of_kafka_cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.kafka.KafkaFunctions;\nimport com.pulumi.ionoscloud.kafka.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = KafkaFunctions.getCluster(GetClusterArgs.builder()\n            .name(\"kafka-cluster\")\n            .location(\"location_of_kafka_cluster\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:kafka:getCluster\n      arguments:\n        name: kafka-cluster\n        location: location_of_kafka_cluster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getCluster.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of an existing Kafka Cluster that you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the Kafka Cluster. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing Kafka Cluster that you want to search for.\n"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    }
                },
                "type": "object",
                "required": [
                    "location"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getCluster.\n",
                "properties": {
                    "brokerAddresses": {
                        "description": "IP address and port of cluster brokers.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "connections": {
                        "description": "Connection information of the Kafka Cluster. Minimum items: 1, maximum items: 1.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:kafka/getClusterConnection:getClusterConnection"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "UUID of the Kafka Cluster.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Kafka Cluster.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "size": {
                        "description": "The size of the Kafka Cluster.\n",
                        "type": "string"
                    },
                    "version": {
                        "description": "The version of the Kafka Cluster.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "brokerAddresses",
                    "connections",
                    "id",
                    "location",
                    "name",
                    "size",
                    "version"
                ],
                "type": "object"
            }
        },
        "ionoscloud:kafka/getTopic:getTopic": {
            "description": "The **Kafka topic data source** can be used to search for and return an existing Kafka Cluster Topic.\nYou can provide a string for the name parameter which will be compared with provisioned Kafka Cluster Topics.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.kafka.getTopic({\n    id: \"your_kafka_cluster_topic_id\",\n    clusterId: \"your_kafka_cluster_id\",\n    location: \"your_kafka_cluster_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.kafka.get_topic(id=\"your_kafka_cluster_topic_id\",\n    cluster_id=\"your_kafka_cluster_id\",\n    location=\"your_kafka_cluster_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Kafka.GetTopic.Invoke(new()\n    {\n        Id = \"your_kafka_cluster_topic_id\",\n        ClusterId = \"your_kafka_cluster_id\",\n        Location = \"your_kafka_cluster_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/kafka\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kafka.LookupTopic(ctx, \u0026kafka.LookupTopicArgs{\n\t\t\tId:        pulumi.StringRef(\"your_kafka_cluster_topic_id\"),\n\t\t\tClusterId: \"your_kafka_cluster_id\",\n\t\t\tLocation:  \"your_kafka_cluster_location\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.kafka.KafkaFunctions;\nimport com.pulumi.ionoscloud.kafka.inputs.GetTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = KafkaFunctions.getTopic(GetTopicArgs.builder()\n            .id(\"your_kafka_cluster_topic_id\")\n            .clusterId(\"your_kafka_cluster_id\")\n            .location(\"your_kafka_cluster_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:kafka:getTopic\n      arguments:\n        id: your_kafka_cluster_topic_id\n        clusterId: your_kafka_cluster_id\n        location: your_kafka_cluster_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\nNeeds to have the resource be previously created, or a\u003cspan pulumi-lang-nodejs=\" dependsOn \" pulumi-lang-dotnet=\" DependsOn \" pulumi-lang-go=\" dependsOn \" pulumi-lang-python=\" depends_on \" pulumi-lang-yaml=\" dependsOn \" pulumi-lang-java=\" dependsOn \"\u003e dependsOn \u003c/span\u003eclause to ensure that the resource is created before\nthis data source is called.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.kafka.getTopic({\n    name: \"kafka-cluster-topic\",\n    clusterId: \"your_kafka_cluster_id\",\n    location: \"location_of_kafka_cluster\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.kafka.get_topic(name=\"kafka-cluster-topic\",\n    cluster_id=\"your_kafka_cluster_id\",\n    location=\"location_of_kafka_cluster\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Kafka.GetTopic.Invoke(new()\n    {\n        Name = \"kafka-cluster-topic\",\n        ClusterId = \"your_kafka_cluster_id\",\n        Location = \"location_of_kafka_cluster\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/kafka\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kafka.LookupTopic(ctx, \u0026kafka.LookupTopicArgs{\n\t\t\tName:      pulumi.StringRef(\"kafka-cluster-topic\"),\n\t\t\tClusterId: \"your_kafka_cluster_id\",\n\t\t\tLocation:  \"location_of_kafka_cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.kafka.KafkaFunctions;\nimport com.pulumi.ionoscloud.kafka.inputs.GetTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = KafkaFunctions.getTopic(GetTopicArgs.builder()\n            .name(\"kafka-cluster-topic\")\n            .clusterId(\"your_kafka_cluster_id\")\n            .location(\"location_of_kafka_cluster\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:kafka:getTopic\n      arguments:\n        name: kafka-cluster-topic\n        clusterId: your_kafka_cluster_id\n        location: location_of_kafka_cluster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getTopic.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "ID of the Kafka Cluster that the topic belongs to.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of an existing Kafka Cluster Topic that you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the Kafka Cluster Topic. Must be the same as the location of the Kafka\nCluster. Possible values: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `es/vit`, `gb/lhr`, `gb/bhx`, `us/las`, `us/mci`, `us/ewr`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing Kafka Cluster Topic that you want to search for.\n"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId",
                    "location"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getTopic.\n",
                "properties": {
                    "clusterId": {
                        "description": "The id of the Kafka Cluster that the topic belongs to.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "UUID of the Kafka Cluster Topic.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Kafka Cluster Topic.\n",
                        "type": "string"
                    },
                    "numberOfPartitions": {
                        "description": "The number of partitions of the topic. Partitions allow for parallel processing of messages.\n",
                        "type": "integer"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "replicationFactor": {
                        "description": "The number of replicas of the topic. The replication factor determines how many copies of the\ntopic are stored on different brokers.\n",
                        "type": "integer"
                    },
                    "retentionTime": {
                        "description": "This configuration controls the maximum time we will retain a log before we will discard old log\nsegments to free up space. This represents an SLA on how soon consumers must read their data. If set to -1, no time\nlimit is applied.\n",
                        "type": "integer"
                    },
                    "segmentBytes": {
                        "description": "This configuration controls the segment file size for the log. Retention and cleaning is always done a file at a time so a larger segment size means fewer files but less granular control over retention.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "clusterId",
                    "id",
                    "location",
                    "name",
                    "numberOfPartitions",
                    "replicationFactor",
                    "retentionTime",
                    "segmentBytes"
                ],
                "type": "object"
            }
        },
        "ionoscloud:logging/getPipeline:getPipeline": {
            "description": "The **Logging pipeline** datasource can be used to search for and return an existing Logging pipeline.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **logging_pipeline** data source. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.logging.getPipeline({\n    location: \"de/txl\",\n    id: \"pipeline_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.logging.get_pipeline(location=\"de/txl\",\n    id=\"pipeline_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Logging.GetPipeline.Invoke(new()\n    {\n        Location = \"de/txl\",\n        Id = \"pipeline_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.LookupPipeline(ctx, \u0026logging.LookupPipelineArgs{\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t\tId:       pulumi.StringRef(\"pipeline_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.logging.LoggingFunctions;\nimport com.pulumi.ionoscloud.logging.inputs.GetPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = LoggingFunctions.getPipeline(GetPipelineArgs.builder()\n            .location(\"de/txl\")\n            .id(\"pipeline_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:logging:getPipeline\n      arguments:\n        location: de/txl\n        id: pipeline_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.logging.getPipeline({\n    location: \"de/txl\",\n    name: \"pipeline_name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.logging.get_pipeline(location=\"de/txl\",\n    name=\"pipeline_name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Logging.GetPipeline.Invoke(new()\n    {\n        Location = \"de/txl\",\n        Name = \"pipeline_name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.LookupPipeline(ctx, \u0026logging.LookupPipelineArgs{\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t\tName:     pulumi.StringRef(\"pipeline_name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.logging.LoggingFunctions;\nimport com.pulumi.ionoscloud.logging.inputs.GetPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = LoggingFunctions.getPipeline(GetPipelineArgs.builder()\n            .location(\"de/txl\")\n            .name(\"pipeline_name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:logging:getPipeline\n      arguments:\n        location: de/txl\n        name: pipeline_name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPipeline.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "[string] The ID of the Logging pipeline you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the Logging pipeline. Default: `de/txl`, other available locations: `de/fra`, `de/fra/2`, `de/txl`, `es/vit`, `gb/bhx`, `gb/lhr`,  `fr/par`, `us/mci`.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Logging pipeline you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getPipeline.\n",
                "properties": {
                    "grafanaAddress": {
                        "description": "The Grafana address is where user can access their logs, create dashboards, and set up alerts.\n",
                        "type": "string"
                    },
                    "httpAddress": {
                        "description": "The HTTP address of the pipeline. This is the address to which logs are sent using the HTTP protocol.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The UUID of the Logging pipeline.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "logs": {
                        "description": "[list] Pipeline logs, a list that contains elements with the following structure:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:logging/getPipelineLog:getPipelineLog"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The name of the Logging pipeline.\n",
                        "type": "string"
                    },
                    "tcpAddress": {
                        "description": "The TCP address of the pipeline. This is the address to which logs are sent using the TCP protocol.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "grafanaAddress",
                    "httpAddress",
                    "id",
                    "logs",
                    "name",
                    "tcpAddress"
                ],
                "type": "object"
            }
        },
        "ionoscloud:monitoring/getPipeline:getPipeline": {
            "description": "The **Monitoring pipeline** datasource can be used to search for and return an existing Monitoring pipeline.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\n\n\u003e ⚠️  Only tokens are accepted for authorization in the **monitoring_pipeline** data source. Please ensure you are using tokens as other methods will not be valid.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.monitoring.getPipeline({\n    location: \"de/txl\",\n    id: \"pipeline_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.monitoring.get_pipeline(location=\"de/txl\",\n    id=\"pipeline_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Monitoring.GetPipeline.Invoke(new()\n    {\n        Location = \"de/txl\",\n        Id = \"pipeline_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := monitoring.LookupPipeline(ctx, \u0026monitoring.LookupPipelineArgs{\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t\tId:       pulumi.StringRef(\"pipeline_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.monitoring.MonitoringFunctions;\nimport com.pulumi.ionoscloud.monitoring.inputs.GetPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MonitoringFunctions.getPipeline(GetPipelineArgs.builder()\n            .location(\"de/txl\")\n            .id(\"pipeline_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:monitoring:getPipeline\n      arguments:\n        location: de/txl\n        id: pipeline_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.monitoring.getPipeline({\n    location: \"de/txl\",\n    name: \"pipeline_name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.monitoring.get_pipeline(location=\"de/txl\",\n    name=\"pipeline_name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Monitoring.GetPipeline.Invoke(new()\n    {\n        Location = \"de/txl\",\n        Name = \"pipeline_name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := monitoring.LookupPipeline(ctx, \u0026monitoring.LookupPipelineArgs{\n\t\t\tLocation: pulumi.StringRef(\"de/txl\"),\n\t\t\tName:     pulumi.StringRef(\"pipeline_name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.monitoring.MonitoringFunctions;\nimport com.pulumi.ionoscloud.monitoring.inputs.GetPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MonitoringFunctions.getPipeline(GetPipelineArgs.builder()\n            .location(\"de/txl\")\n            .name(\"pipeline_name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:monitoring:getPipeline\n      arguments:\n        location: de/txl\n        name: pipeline_name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPipeline.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "[string] The ID of the Monitoring pipeline you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[string] The location of the Monitoring pipeline. Default is `de/fra`. It can be one of `de/fra`, `de/txl`, `gb/lhr`, `es/vit`, `fr/par`. If this is not set and if no value is provided for the `IONOS_API_URL` env var, the default \u003cspan pulumi-lang-nodejs=\"`location`\" pulumi-lang-dotnet=\"`Location`\" pulumi-lang-go=\"`location`\" pulumi-lang-python=\"`location`\" pulumi-lang-yaml=\"`location`\" pulumi-lang-java=\"`location`\"\u003e`location`\u003c/span\u003e will be: `de/fra`.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[string] The name of the Monitoring pipeline you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e must be provided. If none, or both are provided, the datasource will return an error.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getPipeline.\n",
                "properties": {
                    "grafanaEndpoint": {
                        "type": "string"
                    },
                    "httpEndpoint": {
                        "description": "The HTTP endpoint of the Monitoring instance.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The UUID of the Monitoring pipeline.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Monitoring pipeline.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "grafanaEndpoint",
                    "httpEndpoint",
                    "id",
                    "name"
                ],
                "type": "object"
            }
        },
        "ionoscloud:nfs/getCluster:getCluster": {
            "description": "Returns information about clusters of Network File Storage (NFS) on IonosCloud.\n\n## By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nfs.getCluster({\n    location: \"location\",\n    id: \"cluster-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nfs.get_cluster(location=\"location\",\n    id=\"cluster-id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nfs.GetCluster.Invoke(new()\n    {\n        Location = \"location\",\n        Id = \"cluster-id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nfs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nfs.LookupCluster(ctx, \u0026nfs.LookupClusterArgs{\n\t\t\tLocation: \"location\",\n\t\t\tId:       pulumi.StringRef(\"cluster-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nfs.NfsFunctions;\nimport com.pulumi.ionoscloud.nfs.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NfsFunctions.getCluster(GetClusterArgs.builder()\n            .location(\"location\")\n            .id(\"cluster-id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nfs:getCluster\n      arguments:\n        location: location\n        id: cluster-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n",
            "inputs": {
                "description": "A collection of arguments for invoking getCluster.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of the Network File Storage cluster.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location where the Network File Storage cluster is located. Available locations: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the Network File Storage cluster.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using the name filter. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    }
                },
                "type": "object",
                "required": [
                    "location"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getCluster.\n",
                "properties": {
                    "connections": {
                        "description": "A list of connections for the Network File Storage cluster. You can specify only one connection. Each connection supports the following:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:nfs/getClusterConnection:getClusterConnection"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The ID of the Network File Storage cluster.\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "The location where the Network File Storage cluster is located.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Network File Storage cluster.\n",
                        "type": "string"
                    },
                    "nfs": {
                        "description": "The NFS configuration for the Network File Storage cluster. Each NFS configuration supports the following:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:nfs/getClusterNf:getClusterNf"
                        },
                        "type": "array"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "size": {
                        "description": "The size of the Network File Storage cluster in TiB. Note that the cluster size cannot be reduced after provisioning. This value determines the billing fees. Default is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e. The minimum value is \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e and the maximum value is \u003cspan pulumi-lang-nodejs=\"`42`\" pulumi-lang-dotnet=\"`42`\" pulumi-lang-go=\"`42`\" pulumi-lang-python=\"`42`\" pulumi-lang-yaml=\"`42`\" pulumi-lang-java=\"`42`\"\u003e`42`\u003c/span\u003e.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "connections",
                    "id",
                    "location",
                    "name",
                    "nfs",
                    "size"
                ],
                "type": "object"
            }
        },
        "ionoscloud:nfs/getShare:getShare": {
            "description": "Returns information about shares of Network File Storage (NFS) on IonosCloud.\n\n## By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nfs.getShare({\n    location: \"location\",\n    clusterId: \"cluster-id\",\n    id: \"share-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nfs.get_share(location=\"location\",\n    cluster_id=\"cluster-id\",\n    id=\"share-id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nfs.GetShare.Invoke(new()\n    {\n        Location = \"location\",\n        ClusterId = \"cluster-id\",\n        Id = \"share-id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nfs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nfs.LookupShare(ctx, \u0026nfs.LookupShareArgs{\n\t\t\tLocation:  pulumi.StringRef(\"location\"),\n\t\t\tClusterId: \"cluster-id\",\n\t\t\tId:        pulumi.StringRef(\"share-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nfs.NfsFunctions;\nimport com.pulumi.ionoscloud.nfs.inputs.GetShareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NfsFunctions.getShare(GetShareArgs.builder()\n            .location(\"location\")\n            .clusterId(\"cluster-id\")\n            .id(\"share-id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nfs:getShare\n      arguments:\n        location: location\n        clusterId: cluster-id\n        id: share-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n",
            "inputs": {
                "description": "A collection of arguments for invoking getShare.\n",
                "properties": {
                    "clientGroups": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/ionoscloud:nfs/getShareClientGroup:getShareClientGroup"
                        },
                        "description": "The groups of clients are the systems connecting to the Network File Storage cluster. Each client group supports the following:\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the Network File Storage cluster.\n"
                    },
                    "gid": {
                        "type": "integer",
                        "description": "The group ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the Network File Storage share.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location where the Network File Storage share is located. Available locations: `de/fra`, `de/fra/2`, `de/txl`, `fr/par`, `gb/lhr`, `es/vit`, `us/las`, `us/ewr`, `us/mci`.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the Network File Storage share.\n"
                    },
                    "partialMatch": {
                        "type": "boolean",
                        "description": "Whether partial matching is allowed or not when using the name filter. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "quota": {
                        "type": "integer",
                        "description": "The quota in MiB for the export. The quota can restrict the amount of data that can be stored within the export. The quota can be disabled using \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n"
                    },
                    "uid": {
                        "type": "integer",
                        "description": "The user ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getShare.\n",
                "properties": {
                    "clientGroups": {
                        "description": "The groups of clients are the systems connecting to the Network File Storage cluster. Each client group supports the following:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:nfs/getShareClientGroup:getShareClientGroup"
                        },
                        "type": "array"
                    },
                    "clusterId": {
                        "description": "The ID of the Network File Storage cluster.\n",
                        "type": "string"
                    },
                    "gid": {
                        "description": "The group ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The ID of the Network File Storage share.\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "The location where the Network File Storage share is located.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Network File Storage share.\n",
                        "type": "string"
                    },
                    "nfsPath": {
                        "description": "Path to the NFS export. The NFS path is the path to the directory being exported.\n",
                        "type": "string"
                    },
                    "partialMatch": {
                        "type": "boolean"
                    },
                    "quota": {
                        "description": "The quota in MiB for the export. The quota can restrict the amount of data that can be stored within the export. The quota can be disabled using \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n",
                        "type": "integer"
                    },
                    "uid": {
                        "description": "The user ID that will own the exported directory. If not set, **anonymous** (\u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e) will be used.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "clientGroups",
                    "clusterId",
                    "gid",
                    "id",
                    "name",
                    "nfsPath",
                    "quota",
                    "uid"
                ],
                "type": "object"
            }
        },
        "ionoscloud:nlb/getBalancer:getBalancer": {
            "description": "The **Network Load Balancer data source** can be used to search for and return existing network load balancers.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nlb.getBalancer({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    id: \"networkloadbalancer_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nlb.get_balancer(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    id=\"networkloadbalancer_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nlb.GetBalancer.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Id = \"networkloadbalancer_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nlb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nlb.LookupBalancer(ctx, \u0026nlb.LookupBalancerArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tId:           pulumi.StringRef(\"networkloadbalancer_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nlb.NlbFunctions;\nimport com.pulumi.ionoscloud.nlb.inputs.GetBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NlbFunctions.getBalancer(GetBalancerArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .id(\"networkloadbalancer_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nlb:getBalancer\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        id: networkloadbalancer_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nlb.getBalancer({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"Network Load Balancer Name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nlb.get_balancer(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"Network Load Balancer Name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nlb.GetBalancer.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"Network Load Balancer Name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nlb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nlb.LookupBalancer(ctx, \u0026nlb.LookupBalancerArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tName:         pulumi.StringRef(\"Network Load Balancer Name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nlb.NlbFunctions;\nimport com.pulumi.ionoscloud.nlb.inputs.GetBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NlbFunctions.getBalancer(GetBalancerArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"Network Load Balancer Name\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nlb:getBalancer\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        name: Network Load Balancer Name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBalancer.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the network load balancer you want to search for.\n\n\u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing network load balancer that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBalancer.\n",
                "properties": {
                    "centralLogging": {
                        "description": "Turn logging on and off for this product. Default value is 'false'.\n",
                        "type": "boolean"
                    },
                    "datacenterId": {
                        "type": "string"
                    },
                    "flowlogs": {
                        "description": "Only 1 flow log can be configured. Only the name field can change as part of an update. Flow logs holistically capture network information such as source and destination IP addresses, source and destination ports, number of packets, amount of bytes, the start and end time of the recording, and the type of protocol – and log the extent to which your instances are being accessed.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:nlb/getBalancerFlowlog:getBalancerFlowlog"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "Id of that Network Load Balancer\n",
                        "type": "string"
                    },
                    "ips": {
                        "description": "Collection of IP addresses of the Network Load Balancer. (inbound and outbound) IP of the listenerLan must be a customer reserved IP for the public load balancer and private IP for the private load balancer.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "lbPrivateIps": {
                        "description": "Collection of private IP addresses with subnet mask of the Network Load Balancer. IPs must contain valid subnet mask. If user will not provide any IP then the system will generate one IP with /24 subnet.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "listenerLan": {
                        "description": "Id of the listening LAN. (inbound)\n",
                        "type": "integer"
                    },
                    "location": {
                        "type": "string"
                    },
                    "loggingFormat": {
                        "type": "string"
                    },
                    "name": {
                        "description": "Specifies the name of the flow log.\n",
                        "type": "string"
                    },
                    "targetLan": {
                        "description": "Id of the balanced private target LAN. (outbound)\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "centralLogging",
                    "datacenterId",
                    "flowlogs",
                    "id",
                    "ips",
                    "lbPrivateIps",
                    "listenerLan",
                    "loggingFormat",
                    "name",
                    "targetLan"
                ],
                "type": "object"
            }
        },
        "ionoscloud:nlb/getForwardingRule:getForwardingRule": {
            "description": "The **Network Load Balancer Forwarding Rule data source** can be used to search for and return existing network forwarding rules.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nlb.getForwardingRule({\n    datacenterId: \"datacenter_id\",\n    networkloadbalancerId: \"networkloadbalancer_id\",\n    id: \"networkloadbalancer_forwardingrule_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nlb.get_forwarding_rule(datacenter_id=\"datacenter_id\",\n    networkloadbalancer_id=\"networkloadbalancer_id\",\n    id=\"networkloadbalancer_forwardingrule_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nlb.GetForwardingRule.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        NetworkloadbalancerId = \"networkloadbalancer_id\",\n        Id = \"networkloadbalancer_forwardingrule_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nlb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nlb.LookupForwardingRule(ctx, \u0026nlb.LookupForwardingRuleArgs{\n\t\t\tDatacenterId:          \"datacenter_id\",\n\t\t\tNetworkloadbalancerId: \"networkloadbalancer_id\",\n\t\t\tId:                    pulumi.StringRef(\"networkloadbalancer_forwardingrule_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nlb.NlbFunctions;\nimport com.pulumi.ionoscloud.nlb.inputs.GetForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NlbFunctions.getForwardingRule(GetForwardingRuleArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .networkloadbalancerId(\"networkloadbalancer_id\")\n            .id(\"networkloadbalancer_forwardingrule_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nlb:getForwardingRule\n      arguments:\n        datacenterId: datacenter_id\n        networkloadbalancerId: networkloadbalancer_id\n        id: networkloadbalancer_forwardingrule_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nlb.getForwardingRule({\n    datacenterId: \"datacenter_id\",\n    networkloadbalancerId: \"networkloadbalancer_id\",\n    name: \"Network Load Balancer Forwarding Rule Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nlb.get_forwarding_rule(datacenter_id=\"datacenter_id\",\n    networkloadbalancer_id=\"networkloadbalancer_id\",\n    name=\"Network Load Balancer Forwarding Rule Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nlb.GetForwardingRule.Invoke(new()\n    {\n        DatacenterId = \"datacenter_id\",\n        NetworkloadbalancerId = \"networkloadbalancer_id\",\n        Name = \"Network Load Balancer Forwarding Rule Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nlb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nlb.LookupForwardingRule(ctx, \u0026nlb.LookupForwardingRuleArgs{\n\t\t\tDatacenterId:          \"datacenter_id\",\n\t\t\tNetworkloadbalancerId: \"networkloadbalancer_id\",\n\t\t\tName:                  pulumi.StringRef(\"Network Load Balancer Forwarding Rule Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nlb.NlbFunctions;\nimport com.pulumi.ionoscloud.nlb.inputs.GetForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NlbFunctions.getForwardingRule(GetForwardingRuleArgs.builder()\n            .datacenterId(\"datacenter_id\")\n            .networkloadbalancerId(\"networkloadbalancer_id\")\n            .name(\"Network Load Balancer Forwarding Rule Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nlb:getForwardingRule\n      arguments:\n        datacenterId: datacenter_id\n        networkloadbalancerId: networkloadbalancer_id\n        name: Network Load Balancer Forwarding Rule Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getForwardingRule.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n",
                        "willReplaceOnChanges": true
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of the network load balancer forwarding rule you want to search for.\n\nBoth \u003cspan pulumi-lang-nodejs=\"`datacenterId`\" pulumi-lang-dotnet=\"`DatacenterId`\" pulumi-lang-go=\"`datacenterId`\" pulumi-lang-python=\"`datacenter_id`\" pulumi-lang-yaml=\"`datacenterId`\" pulumi-lang-java=\"`datacenterId`\"\u003e`datacenterId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`networkloadbalancerId`\" pulumi-lang-dotnet=\"`NetworkloadbalancerId`\" pulumi-lang-go=\"`networkloadbalancerId`\" pulumi-lang-python=\"`networkloadbalancer_id`\" pulumi-lang-yaml=\"`networkloadbalancerId`\" pulumi-lang-java=\"`networkloadbalancerId`\"\u003e`networkloadbalancerId`\u003c/span\u003e and either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, or both of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e are provided, the datasource will return an error.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing network load balancer forwarding rule that you want to search for.\n"
                    },
                    "networkloadbalancerId": {
                        "type": "string",
                        "description": "Network Load Balancer's UUID.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId",
                    "networkloadbalancerId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getForwardingRule.\n",
                "properties": {
                    "algorithm": {
                        "description": "Algorithm for the balancing.\n",
                        "type": "string"
                    },
                    "datacenterId": {
                        "type": "string"
                    },
                    "healthChecks": {
                        "description": "Health check attributes for Network Load Balancer forwarding rule target.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:nlb/getForwardingRuleHealthCheck:getForwardingRuleHealthCheck"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The id of that Network Load Balancer forwarding rule.\n",
                        "type": "string"
                    },
                    "listenerIp": {
                        "description": "Listening IP. (inbound)\n",
                        "type": "string"
                    },
                    "listenerPort": {
                        "description": "Listening port number. (inbound) (range: 1 to 65535)\n",
                        "type": "integer"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of that Network Load Balancer forwarding rule.\n",
                        "type": "string"
                    },
                    "networkloadbalancerId": {
                        "type": "string"
                    },
                    "protocol": {
                        "description": "Protocol of the balancing.\n",
                        "type": "string"
                    },
                    "targets": {
                        "description": "Array of items in that collection.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:nlb/getForwardingRuleTarget:getForwardingRuleTarget"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "algorithm",
                    "datacenterId",
                    "healthChecks",
                    "id",
                    "listenerIp",
                    "listenerPort",
                    "name",
                    "networkloadbalancerId",
                    "protocol",
                    "targets"
                ],
                "type": "object"
            }
        },
        "ionoscloud:nsg/getNsg:getNsg": {
            "description": "The **NSG Data source** can be used to search for and return an existing security group.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nsg.getNsg({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    id: nsgId,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nsg.get_nsg(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    id=nsg_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nsg.GetNsg.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Id = nsgId,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nsg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nsg.LookupNsg(ctx, \u0026nsg.LookupNsgArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tId:           pulumi.StringRef(nsgId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nsg.NsgFunctions;\nimport com.pulumi.ionoscloud.nsg.inputs.GetNsgArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NsgFunctions.getNsg(GetNsgArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .id(nsgId)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nsg:getNsg\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        id: ${nsgId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.nsg.getNsg({\n    datacenterId: exampleIonoscloudDatacenter.id,\n    name: \"NSG Example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.nsg.get_nsg(datacenter_id=example_ionoscloud_datacenter[\"id\"],\n    name=\"NSG Example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Nsg.GetNsg.Invoke(new()\n    {\n        DatacenterId = exampleIonoscloudDatacenter.Id,\n        Name = \"NSG Example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/nsg\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := nsg.LookupNsg(ctx, \u0026nsg.LookupNsgArgs{\n\t\t\tDatacenterId: exampleIonoscloudDatacenter.Id,\n\t\t\tName:         pulumi.StringRef(\"NSG Example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.nsg.NsgFunctions;\nimport com.pulumi.ionoscloud.nsg.inputs.GetNsgArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NsgFunctions.getNsg(GetNsgArgs.builder()\n            .datacenterId(exampleIonoscloudDatacenter.id())\n            .name(\"NSG Example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:nsg:getNsg\n      arguments:\n        datacenterId: ${exampleIonoscloudDatacenter.id}\n        name: NSG Example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNsg.\n",
                "properties": {
                    "datacenterId": {
                        "type": "string",
                        "description": "Datacenter's UUID.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "Id of an existing Network Security Group that you want to search for.\n"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing Network Security Group that you want to search for.\n\nEither \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e must be provided. If none, the datasource will return an error.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datacenterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNsg.\n",
                "properties": {
                    "datacenterId": {
                        "description": "UUID of the Virtual Data Center\n",
                        "type": "string"
                    },
                    "description": {
                        "description": "Description for the Network Security Group\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "UUID of the Network Security Group\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Network Security Group\n",
                        "type": "string"
                    },
                    "ruleIds": {
                        "description": "List of IDs for the Firewall Rules attached to this group\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "rules": {
                        "description": "List of Firewall Rule objects attached to this group\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:nsg/getNsgRule:getNsgRule"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "datacenterId",
                    "description",
                    "id",
                    "name",
                    "ruleIds",
                    "rules"
                ],
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/getBucket:getBucket": {
            "description": "The **Bucket data source** can be used to search for and return existing buckets.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.objectstorage.getBucket({\n    name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.get_bucket(name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Objectstorage.GetBucket.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.LookupBucket(ctx, \u0026objectstorage.LookupBucketArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.objectstorage.ObjectstorageFunctions;\nimport com.pulumi.ionoscloud.objectstorage.inputs.GetBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ObjectstorageFunctions.getBucket(GetBucketArgs.builder()\n            .name(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:objectstorage:getBucket\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBucket.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "[string] The bucket name. [ 3 .. 63 ] characters\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBucket.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "region": {
                        "description": "The region where the bucket is located.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "name",
                    "region",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/getBucketPolicy:getBucketPolicy": {
            "description": "The **Bucket Policy data source** can be used to search for and return existing bucket policies.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.objectstorage.getBucketPolicy({\n    bucket: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.get_bucket_policy(bucket=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Objectstorage.GetBucketPolicy.Invoke(new()\n    {\n        Bucket = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.LookupBucketPolicy(ctx, \u0026objectstorage.LookupBucketPolicyArgs{\n\t\t\tBucket: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.objectstorage.ObjectstorageFunctions;\nimport com.pulumi.ionoscloud.objectstorage.inputs.GetBucketPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ObjectstorageFunctions.getBucketPolicy(GetBucketPolicyArgs.builder()\n            .bucket(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:objectstorage:getBucketPolicy\n      arguments:\n        bucket: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBucketPolicy.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object will be stored.\n"
                    }
                },
                "type": "object",
                "required": [
                    "bucket"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBucketPolicy.\n",
                "properties": {
                    "bucket": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "policy": {
                        "description": "The policy of the bucket.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "bucket",
                    "policy",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/getObject:getObject": {
            "description": "The **Object data source** can be used to search for and return existing objects.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.objectstorage.getObject({\n    bucket: \"example\",\n    key: \"object\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.get_object(bucket=\"example\",\n    key=\"object\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Objectstorage.GetObject.Invoke(new()\n    {\n        Bucket = \"example\",\n        Key = \"object\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.GetObject(ctx, \u0026objectstorage.GetObjectArgs{\n\t\t\tBucket: \"example\",\n\t\t\tKey:    \"object\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.objectstorage.ObjectstorageFunctions;\nimport com.pulumi.ionoscloud.objectstorage.inputs.GetObjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ObjectstorageFunctions.getObject(GetObjectArgs.builder()\n            .bucket(\"example\")\n            .key(\"object\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:objectstorage:getObject\n      arguments:\n        bucket: example\n        key: object\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getObject.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the object is stored.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "[string] The name of the object.\n"
                    },
                    "range": {
                        "type": "string",
                        "description": "[string] Downloads the specified range bytes of an object. For more information about the HTTP Range header\n"
                    },
                    "versionId": {
                        "type": "string",
                        "description": "[string] The version of the object.\n"
                    }
                },
                "type": "object",
                "required": [
                    "bucket",
                    "key"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getObject.\n",
                "properties": {
                    "body": {
                        "description": "The content of the object.\n",
                        "type": "string"
                    },
                    "bucket": {
                        "type": "string"
                    },
                    "cacheControl": {
                        "description": "The caching behavior along the request/reply chain.\n",
                        "type": "string"
                    },
                    "contentDisposition": {
                        "description": "Presentational information for the object.\n",
                        "type": "string"
                    },
                    "contentEncoding": {
                        "description": "The content encodings applied to the object.\n",
                        "type": "string"
                    },
                    "contentLanguage": {
                        "description": "The natural language of the intended audience for the object.\n",
                        "type": "string"
                    },
                    "contentLength": {
                        "description": "The size of the object in bytes.\n",
                        "type": "integer"
                    },
                    "contentType": {
                        "description": "The MIME type describing the format of the contents.\n",
                        "type": "string"
                    },
                    "etag": {
                        "description": "An entity tag (ETag) assigned by a web server to a specific version of a resource.\n",
                        "type": "string"
                    },
                    "expires": {
                        "description": "The date and time at which the object is no longer cacheable.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "key": {
                        "type": "string"
                    },
                    "metadata": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A map of metadata stored with the object.\n",
                        "type": "object"
                    },
                    "objectLockLegalHold": {
                        "description": "The legal hold status of the object, which can be either ON or OFF.\n",
                        "type": "string"
                    },
                    "objectLockMode": {
                        "description": "The object lock mode, which can be either GOVERNANCE or COMPLIANCE.\n",
                        "type": "string"
                    },
                    "objectLockRetainUntilDate": {
                        "description": "The date until which the object will remain locked.\n",
                        "type": "string"
                    },
                    "range": {
                        "type": "string"
                    },
                    "requestPayer": {
                        "description": "Confirms that the requester knows that they will be charged for the request.\n",
                        "type": "string"
                    },
                    "serverSideEncryption": {
                        "description": "The server-side encryption algorithm used when storing this object.\n",
                        "type": "string"
                    },
                    "serverSideEncryptionContext": {
                        "description": "The encryption context to use for object encryption. This attribute is sensitive.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "serverSideEncryptionCustomerAlgorithm": {
                        "description": "The algorithm to use for encrypting the object (e.g., AES256).\n",
                        "type": "string"
                    },
                    "serverSideEncryptionCustomerKey": {
                        "description": "The 256-bit, base64-encoded encryption key to encrypt and decrypt your data. This attribute is sensitive.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "serverSideEncryptionCustomerKeyMd5": {
                        "description": "The 128-bit MD5 digest of the encryption key.\n",
                        "type": "string"
                    },
                    "storageClass": {
                        "description": "The storage class of the object.\n",
                        "type": "string"
                    },
                    "tags": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The tag-set for the object, represented as a map of string key-value pairs.\n",
                        "type": "object"
                    },
                    "versionId": {
                        "description": "The version of the object. This attribute is optional.\n",
                        "type": "string"
                    },
                    "websiteRedirect": {
                        "description": "If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "body",
                    "bucket",
                    "cacheControl",
                    "contentDisposition",
                    "contentEncoding",
                    "contentLanguage",
                    "contentLength",
                    "contentType",
                    "etag",
                    "expires",
                    "key",
                    "metadata",
                    "objectLockLegalHold",
                    "objectLockMode",
                    "objectLockRetainUntilDate",
                    "requestPayer",
                    "serverSideEncryption",
                    "serverSideEncryptionContext",
                    "serverSideEncryptionCustomerAlgorithm",
                    "serverSideEncryptionCustomerKey",
                    "serverSideEncryptionCustomerKeyMd5",
                    "storageClass",
                    "tags",
                    "versionId",
                    "websiteRedirect",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:objectstorage/getObjects:getObjects": {
            "description": "The **Objects data source** can be used to search for and return existing objects.\n\n⚠️ **Note:** The Terraform provider **only supports contract-owned buckets. User-owned buckets are not supported,** and there are no plans to introduce support for them. As a result, **user-owned buckets cannot be created, updated, deleted, read, or imported** using this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.objectstorage.getObjects({\n    bucket: \"example\",\n    prefix: \"prefix1/\",\n    delimiter: \"/\",\n    maxKeys: 100,\n    fetchOwner: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstorage.get_objects(bucket=\"example\",\n    prefix=\"prefix1/\",\n    delimiter=\"/\",\n    max_keys=100,\n    fetch_owner=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Objectstorage.GetObjects.Invoke(new()\n    {\n        Bucket = \"example\",\n        Prefix = \"prefix1/\",\n        Delimiter = \"/\",\n        MaxKeys = 100,\n        FetchOwner = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.GetObjects(ctx, \u0026objectstorage.GetObjectsArgs{\n\t\t\tBucket:     \"example\",\n\t\t\tPrefix:     pulumi.StringRef(\"prefix1/\"),\n\t\t\tDelimiter:  pulumi.StringRef(\"/\"),\n\t\t\tMaxKeys:    pulumi.IntRef(100),\n\t\t\tFetchOwner: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.objectstorage.ObjectstorageFunctions;\nimport com.pulumi.ionoscloud.objectstorage.inputs.GetObjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ObjectstorageFunctions.getObjects(GetObjectsArgs.builder()\n            .bucket(\"example\")\n            .prefix(\"prefix1/\")\n            .delimiter(\"/\")\n            .maxKeys(100)\n            .fetchOwner(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:objectstorage:getObjects\n      arguments:\n        bucket: example\n        prefix: prefix1/\n        delimiter: /\n        maxKeys: 100\n        fetchOwner: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getObjects.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "[string] The name of the bucket where the objects are stored.\n"
                    },
                    "delimiter": {
                        "type": "string",
                        "description": "[string] A character used to group keys.\n"
                    },
                    "encodingType": {
                        "type": "string",
                        "description": "[string] Specifies the encoding method used to encode the object keys in the response. Default is url.\n"
                    },
                    "fetchOwner": {
                        "type": "boolean",
                        "description": "[bool] If set to true, the response includes the owner field in the metadata.\n"
                    },
                    "maxKeys": {
                        "type": "integer",
                        "description": "[int] Sets the maximum number of keys returned in the response body.Default is 1000.\n"
                    },
                    "prefix": {
                        "type": "string",
                        "description": "[string] Limits the response to keys that begin with the specified prefix.\n"
                    },
                    "startAfter": {
                        "type": "string",
                        "description": "[string] Specifies the key to start after when listing objects in a bucket.\n"
                    }
                },
                "type": "object",
                "required": [
                    "bucket"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getObjects.\n",
                "properties": {
                    "bucket": {
                        "type": "string"
                    },
                    "commonPrefixes": {
                        "description": "A list of keys that act as a delimiter for grouping keys.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "delimiter": {
                        "type": "string"
                    },
                    "encodingType": {
                        "type": "string"
                    },
                    "fetchOwner": {
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "keys": {
                        "description": "A list of objects in the bucket.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "maxKeys": {
                        "type": "integer"
                    },
                    "owners": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "prefix": {
                        "type": "string"
                    },
                    "startAfter": {
                        "type": "string"
                    }
                },
                "required": [
                    "bucket",
                    "commonPrefixes",
                    "keys",
                    "owners",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:objectstoragemanagement/getAccesskey:getAccesskey": {
            "description": "The **Object Storage Accesskey data source** can be used to search for and return an existing Object Storage Accesskeys.\n\n## Example Usage\n\n### By ID \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.objectstoragemanagement.getAccesskey({\n    id: \"accesskey_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstoragemanagement.get_accesskey(id=\"accesskey_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Objectstoragemanagement.GetAccesskey.Invoke(new()\n    {\n        Id = \"accesskey_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstoragemanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstoragemanagement.LookupAccesskey(ctx, \u0026objectstoragemanagement.LookupAccesskeyArgs{\n\t\t\tId: pulumi.StringRef(\"accesskey_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.objectstoragemanagement.ObjectstoragemanagementFunctions;\nimport com.pulumi.ionoscloud.objectstoragemanagement.inputs.GetAccesskeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ObjectstoragemanagementFunctions.getAccesskey(GetAccesskeyArgs.builder()\n            .id(\"accesskey_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:objectstoragemanagement:getAccesskey\n      arguments:\n        id: accesskey_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getAccesskey.\n",
                "properties": {
                    "accesskey": {
                        "type": "string",
                        "description": "Access key metadata is a string of 92 characters.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description of the Access key.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "Id of an existing object storage accesskey that you want to search for.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getAccesskey.\n",
                "properties": {
                    "accesskey": {
                        "description": "Access key metadata is a string of 92 characters.\n",
                        "type": "string"
                    },
                    "canonicalUserId": {
                        "description": "The canonical user ID which is valid for user-owned buckets.\n",
                        "type": "string"
                    },
                    "contractUserId": {
                        "description": "The contract user ID which is valid for contract-owned buckets\n",
                        "type": "string"
                    },
                    "description": {
                        "description": "Description of the Access key.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The ID (UUID) of the AccessKey.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "accesskey",
                    "canonicalUserId",
                    "contractUserId",
                    "description",
                    "id"
                ],
                "type": "object"
            }
        },
        "ionoscloud:objectstoragemanagement/getRegion:getRegion": {
            "description": "The **Object storage region data source** can be used to search for and return an existing S3 Regions.\n\n## Example Usage\n\n### By ID \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.objectstoragemanagement.getRegion({\n    id: \"region_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.objectstoragemanagement.get_region(id=\"region_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Objectstoragemanagement.GetRegion.Invoke(new()\n    {\n        Id = \"region_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/objectstoragemanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstoragemanagement.GetRegion(ctx, \u0026objectstoragemanagement.GetRegionArgs{\n\t\t\tId: \"region_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.objectstoragemanagement.ObjectstoragemanagementFunctions;\nimport com.pulumi.ionoscloud.objectstoragemanagement.inputs.GetRegionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ObjectstoragemanagementFunctions.getRegion(GetRegionArgs.builder()\n            .id(\"region_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:objectstoragemanagement:getRegion\n      arguments:\n        id: region_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRegion.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Id of an existing object storage Region that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "id"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getRegion.\n",
                "properties": {
                    "capability": {
                        "$ref": "#/types/ionoscloud:objectstoragemanagement/getRegionCapability:getRegionCapability",
                        "description": "The capabilities of the region\n"
                    },
                    "endpoint": {
                        "description": "The endpoint URL for the region\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The id of the region\n",
                        "type": "string"
                    },
                    "location": {
                        "description": "The data center location of the region as per [Get Location](https://api.ionos.com/docs/cloud/v6/#tag/Locations/operation/locationsGet). *Can't be used as `LocationConstraint` on bucket creation.*\n",
                        "type": "string"
                    },
                    "storageClasses": {
                        "description": "The available classes in the region\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "version": {
                        "description": "The version of the region properties\n",
                        "type": "integer"
                    },
                    "website": {
                        "description": "The website URL for the region\n",
                        "type": "string"
                    }
                },
                "required": [
                    "capability",
                    "endpoint",
                    "id",
                    "location",
                    "storageClasses",
                    "version",
                    "website"
                ],
                "type": "object"
            }
        },
        "ionoscloud:vpn/getIpsecGateway:getIpsecGateway": {
            "description": "The **VPN IPSec Gateway data source** can be used to search for and return an existing IPSec Gateway.\nYou can provide a string for the name parameter which will be compared with provisioned IPSec Gateways.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.vpn.getIpsecGateway({\n    id: \"gateway_id\",\n    location: \"gateway_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.vpn.get_ipsec_gateway(id=\"gateway_id\",\n    location=\"gateway_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Vpn.GetIpsecGateway.Invoke(new()\n    {\n        Id = \"gateway_id\",\n        Location = \"gateway_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpn.LookupIpsecGateway(ctx, \u0026vpn.LookupIpsecGatewayArgs{\n\t\t\tId:       pulumi.StringRef(\"gateway_id\"),\n\t\t\tLocation: pulumi.StringRef(\"gateway_location\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.vpn.VpnFunctions;\nimport com.pulumi.ionoscloud.vpn.inputs.GetIpsecGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VpnFunctions.getIpsecGateway(GetIpsecGatewayArgs.builder()\n            .id(\"gateway_id\")\n            .location(\"gateway_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:vpn:getIpsecGateway\n      arguments:\n        id: gateway_id\n        location: gateway_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\nNeeds to have the resource be previously created, or a\u003cspan pulumi-lang-nodejs=\" dependsOn \" pulumi-lang-dotnet=\" DependsOn \" pulumi-lang-go=\" dependsOn \" pulumi-lang-python=\" depends_on \" pulumi-lang-yaml=\" dependsOn \" pulumi-lang-java=\" dependsOn \"\u003e dependsOn \u003c/span\u003eclause to ensure that the resource is created before\nthis data source is called.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.vpn.getIpsecGateway({\n    name: \"ipsec-gateway\",\n    location: \"gateway_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.vpn.get_ipsec_gateway(name=\"ipsec-gateway\",\n    location=\"gateway_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Vpn.GetIpsecGateway.Invoke(new()\n    {\n        Name = \"ipsec-gateway\",\n        Location = \"gateway_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpn.LookupIpsecGateway(ctx, \u0026vpn.LookupIpsecGatewayArgs{\n\t\t\tName:     pulumi.StringRef(\"ipsec-gateway\"),\n\t\t\tLocation: pulumi.StringRef(\"gateway_location\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.vpn.VpnFunctions;\nimport com.pulumi.ionoscloud.vpn.inputs.GetIpsecGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VpnFunctions.getIpsecGateway(GetIpsecGatewayArgs.builder()\n            .name(\"ipsec-gateway\")\n            .location(\"gateway_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:vpn:getIpsecGateway\n      arguments:\n        name: ipsec-gateway\n        location: gateway_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getIpsecGateway.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "ID of an existing IPSec Gateway that you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the IPSec Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing IPSec Gateway that you want to search for.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "The IKE version that is permitted for the VPN tunnels.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getIpsecGateway.\n",
                "properties": {
                    "connections": {
                        "description": "The network connection for your gateway.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getIpsecGatewayConnection:getIpsecGatewayConnection"
                        },
                        "type": "array"
                    },
                    "description": {
                        "description": "(Optional)[string] The human-readable description of the IPSec Gateway.\n",
                        "type": "string"
                    },
                    "gatewayIp": {
                        "description": "Public IP address to be assigned to the gateway.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The unique ID of the IPSec Gateway.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A weekly 4 hour-long window, during which maintenance might occur.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getIpsecGatewayMaintenanceWindow:getIpsecGatewayMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The name of the IPSec Gateway.\n",
                        "type": "string"
                    },
                    "tier": {
                        "description": "Gateway performance options.\n",
                        "type": "string"
                    },
                    "version": {
                        "description": "The IKE version that is permitted for the VPN tunnels.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "connections",
                    "description",
                    "gatewayIp",
                    "id",
                    "maintenanceWindows",
                    "name",
                    "tier",
                    "version"
                ],
                "type": "object"
            }
        },
        "ionoscloud:vpn/getIpsecTunnel:getIpsecTunnel": {
            "description": "The **VPN IPSec Gateway Tunnel data source** can be used to search for and return an existing IPSec Gateway Tunnel.\nYou can provide a string for the name parameter which will be compared with provisioned IPSec Gateway Tunnels.\nIf a single match is found, it will be returned. If your search results in multiple matches, an error will be returned.\nWhen this happens, please refine your search string so that it is specific enough to return only one result.\n\n## Example Usage\n\n### By ID\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.vpn.getIpsecTunnel({\n    id: \"tunnel_id\",\n    gatewayId: \"gateway_id\",\n    location: \"gateway_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.vpn.get_ipsec_tunnel(id=\"tunnel_id\",\n    gateway_id=\"gateway_id\",\n    location=\"gateway_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Vpn.GetIpsecTunnel.Invoke(new()\n    {\n        Id = \"tunnel_id\",\n        GatewayId = \"gateway_id\",\n        Location = \"gateway_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpn.LookupIpsecTunnel(ctx, \u0026vpn.LookupIpsecTunnelArgs{\n\t\t\tId:        pulumi.StringRef(\"tunnel_id\"),\n\t\t\tGatewayId: \"gateway_id\",\n\t\t\tLocation:  pulumi.StringRef(\"gateway_location\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.vpn.VpnFunctions;\nimport com.pulumi.ionoscloud.vpn.inputs.GetIpsecTunnelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VpnFunctions.getIpsecTunnel(GetIpsecTunnelArgs.builder()\n            .id(\"tunnel_id\")\n            .gatewayId(\"gateway_id\")\n            .location(\"gateway_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:vpn:getIpsecTunnel\n      arguments:\n        id: tunnel_id\n        gatewayId: gateway_id\n        location: gateway_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### By Name\n\nNeeds to have the resource be previously created, or a\u003cspan pulumi-lang-nodejs=\" dependsOn \" pulumi-lang-dotnet=\" DependsOn \" pulumi-lang-go=\" dependsOn \" pulumi-lang-python=\" depends_on \" pulumi-lang-yaml=\" dependsOn \" pulumi-lang-java=\" dependsOn \"\u003e dependsOn \u003c/span\u003eclause to ensure that the resource is created before\nthis data source is called.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.vpn.getIpsecTunnel({\n    name: \"ipsec-tunnel\",\n    gatewayId: \"gateway_id\",\n    location: \"gateway_location\",\n});\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.vpn.get_ipsec_tunnel(name=\"ipsec-tunnel\",\n    gateway_id=\"gateway_id\",\n    location=\"gateway_location\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Vpn.GetIpsecTunnel.Invoke(new()\n    {\n        Name = \"ipsec-tunnel\",\n        GatewayId = \"gateway_id\",\n        Location = \"gateway_location\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpn.LookupIpsecTunnel(ctx, \u0026vpn.LookupIpsecTunnelArgs{\n\t\t\tName:      pulumi.StringRef(\"ipsec-tunnel\"),\n\t\t\tGatewayId: \"gateway_id\",\n\t\t\tLocation:  pulumi.StringRef(\"gateway_location\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.vpn.VpnFunctions;\nimport com.pulumi.ionoscloud.vpn.inputs.GetIpsecTunnelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VpnFunctions.getIpsecTunnel(GetIpsecTunnelArgs.builder()\n            .name(\"ipsec-tunnel\")\n            .gatewayId(\"gateway_id\")\n            .location(\"gateway_location\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:vpn:getIpsecTunnel\n      arguments:\n        name: ipsec-tunnel\n        gatewayId: gateway_id\n        location: gateway_location\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Attributes reference\n\nThe following attributes are returned by the datasource:\n\n* \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e - The unique ID of the IPSec Gateway Tunnel.\n* \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - The name of the IPSec Gateway Tunnel.\n* \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e - The human-readable description of your IPSec Gateway Tunnel.\n* \u003cspan pulumi-lang-nodejs=\"`remoteHost`\" pulumi-lang-dotnet=\"`RemoteHost`\" pulumi-lang-go=\"`remoteHost`\" pulumi-lang-python=\"`remote_host`\" pulumi-lang-yaml=\"`remoteHost`\" pulumi-lang-java=\"`remoteHost`\"\u003e`remoteHost`\u003c/span\u003e - The remote peer host fully qualified domain name or public IPV4 IP to connect to.\n* \u003cspan pulumi-lang-nodejs=\"`ike`\" pulumi-lang-dotnet=\"`Ike`\" pulumi-lang-go=\"`ike`\" pulumi-lang-python=\"`ike`\" pulumi-lang-yaml=\"`ike`\" pulumi-lang-java=\"`ike`\"\u003e`ike`\u003c/span\u003e - Settings for the initial security exchange phase.\n    * \u003cspan pulumi-lang-nodejs=\"`diffieHellmanGroup`\" pulumi-lang-dotnet=\"`DiffieHellmanGroup`\" pulumi-lang-go=\"`diffieHellmanGroup`\" pulumi-lang-python=\"`diffie_hellman_group`\" pulumi-lang-yaml=\"`diffieHellmanGroup`\" pulumi-lang-java=\"`diffieHellmanGroup`\"\u003e`diffieHellmanGroup`\u003c/span\u003e - The Diffie-Hellman Group to use for IPSec Encryption.\n    * \u003cspan pulumi-lang-nodejs=\"`encryptionAlgorithm`\" pulumi-lang-dotnet=\"`EncryptionAlgorithm`\" pulumi-lang-go=\"`encryptionAlgorithm`\" pulumi-lang-python=\"`encryption_algorithm`\" pulumi-lang-yaml=\"`encryptionAlgorithm`\" pulumi-lang-java=\"`encryptionAlgorithm`\"\u003e`encryptionAlgorithm`\u003c/span\u003e - The encryption algorithm to use for IPSec Encryption.\n    * \u003cspan pulumi-lang-nodejs=\"`integrityAlgorithm`\" pulumi-lang-dotnet=\"`IntegrityAlgorithm`\" pulumi-lang-go=\"`integrityAlgorithm`\" pulumi-lang-python=\"`integrity_algorithm`\" pulumi-lang-yaml=\"`integrityAlgorithm`\" pulumi-lang-java=\"`integrityAlgorithm`\"\u003e`integrityAlgorithm`\u003c/span\u003e - The integrity algorithm to use for IPSec Encryption.\n    * \u003cspan pulumi-lang-nodejs=\"`lifetime`\" pulumi-lang-dotnet=\"`Lifetime`\" pulumi-lang-go=\"`lifetime`\" pulumi-lang-python=\"`lifetime`\" pulumi-lang-yaml=\"`lifetime`\" pulumi-lang-java=\"`lifetime`\"\u003e`lifetime`\u003c/span\u003e - The phase lifetime in seconds.\n* \u003cspan pulumi-lang-nodejs=\"`esp`\" pulumi-lang-dotnet=\"`Esp`\" pulumi-lang-go=\"`esp`\" pulumi-lang-python=\"`esp`\" pulumi-lang-yaml=\"`esp`\" pulumi-lang-java=\"`esp`\"\u003e`esp`\u003c/span\u003e - Settings for the IPSec SA (ESP) phase.\n    * \u003cspan pulumi-lang-nodejs=\"`diffieHellmanGroup`\" pulumi-lang-dotnet=\"`DiffieHellmanGroup`\" pulumi-lang-go=\"`diffieHellmanGroup`\" pulumi-lang-python=\"`diffie_hellman_group`\" pulumi-lang-yaml=\"`diffieHellmanGroup`\" pulumi-lang-java=\"`diffieHellmanGroup`\"\u003e`diffieHellmanGroup`\u003c/span\u003e - The Diffie-Hellman Group to use for IPSec Encryption.\n    * \u003cspan pulumi-lang-nodejs=\"`encryptionAlgorithm`\" pulumi-lang-dotnet=\"`EncryptionAlgorithm`\" pulumi-lang-go=\"`encryptionAlgorithm`\" pulumi-lang-python=\"`encryption_algorithm`\" pulumi-lang-yaml=\"`encryptionAlgorithm`\" pulumi-lang-java=\"`encryptionAlgorithm`\"\u003e`encryptionAlgorithm`\u003c/span\u003e - The encryption algorithm to use for IPSec Encryption.\n    * \u003cspan pulumi-lang-nodejs=\"`integrityAlgorithm`\" pulumi-lang-dotnet=\"`IntegrityAlgorithm`\" pulumi-lang-go=\"`integrityAlgorithm`\" pulumi-lang-python=\"`integrity_algorithm`\" pulumi-lang-yaml=\"`integrityAlgorithm`\" pulumi-lang-java=\"`integrityAlgorithm`\"\u003e`integrityAlgorithm`\u003c/span\u003e - The integrity algorithm to use for IPSec Encryption.\n    * \u003cspan pulumi-lang-nodejs=\"`lifetime`\" pulumi-lang-dotnet=\"`Lifetime`\" pulumi-lang-go=\"`lifetime`\" pulumi-lang-python=\"`lifetime`\" pulumi-lang-yaml=\"`lifetime`\" pulumi-lang-java=\"`lifetime`\"\u003e`lifetime`\u003c/span\u003e - The phase lifetime in seconds.\n* \u003cspan pulumi-lang-nodejs=\"`auth`\" pulumi-lang-dotnet=\"`Auth`\" pulumi-lang-go=\"`auth`\" pulumi-lang-python=\"`auth`\" pulumi-lang-yaml=\"`auth`\" pulumi-lang-java=\"`auth`\"\u003e`auth`\u003c/span\u003e - Properties with all data needed to define IPSec Authentication.\n    * \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\"\u003e`method`\u003c/span\u003e - The authentication method to use for IPSec Authentication.\n* \u003cspan pulumi-lang-nodejs=\"`cloudNetworkCidrs`\" pulumi-lang-dotnet=\"`CloudNetworkCidrs`\" pulumi-lang-go=\"`cloudNetworkCidrs`\" pulumi-lang-python=\"`cloud_network_cidrs`\" pulumi-lang-yaml=\"`cloudNetworkCidrs`\" pulumi-lang-java=\"`cloudNetworkCidrs`\"\u003e`cloudNetworkCidrs`\u003c/span\u003e - The network CIDRs on the \"Left\" side that are allowed to connect to the IPSec\n  tunnel, i.e. the CIDRs within your IONOS Cloud LAN. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses.\n* \u003cspan pulumi-lang-nodejs=\"`peerNetworkCidrs`\" pulumi-lang-dotnet=\"`PeerNetworkCidrs`\" pulumi-lang-go=\"`peerNetworkCidrs`\" pulumi-lang-python=\"`peer_network_cidrs`\" pulumi-lang-yaml=\"`peerNetworkCidrs`\" pulumi-lang-java=\"`peerNetworkCidrs`\"\u003e`peerNetworkCidrs`\u003c/span\u003e - The network CIDRs on the \"Right\" side that are allowed to connect to the IPSec\n  tunnel. Specify \"0.0.0.0/0\" or \"::/0\" for all addresses.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getIpsecTunnel.\n",
                "properties": {
                    "gatewayId": {
                        "type": "string",
                        "description": "The ID of the IPSec Gateway that the tunnel belongs to.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "ID of an existing IPSec Gateway Tunnel that you want to search for.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "The location of the IPSec Gateway Tunnel. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of an existing IPSec Gateway Tunnel that you want to search for.\n"
                    }
                },
                "type": "object",
                "required": [
                    "gatewayId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getIpsecTunnel.\n",
                "properties": {
                    "auths": {
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getIpsecTunnelAuth:getIpsecTunnelAuth"
                        },
                        "type": "array"
                    },
                    "cloudNetworkCidrs": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "description": {
                        "type": "string"
                    },
                    "esps": {
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getIpsecTunnelEsp:getIpsecTunnelEsp"
                        },
                        "type": "array"
                    },
                    "gatewayId": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "ikes": {
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getIpsecTunnelIke:getIpsecTunnelIke"
                        },
                        "type": "array"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "peerNetworkCidrs": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "remoteHost": {
                        "type": "string"
                    }
                },
                "required": [
                    "auths",
                    "cloudNetworkCidrs",
                    "description",
                    "esps",
                    "gatewayId",
                    "id",
                    "ikes",
                    "name",
                    "peerNetworkCidrs",
                    "remoteHost"
                ],
                "type": "object"
            }
        },
        "ionoscloud:vpn/getWireguardGateway:getWireguardGateway": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-dotnet=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-go=\"`vpn.WireguardGateway`\" pulumi-lang-python=\"`vpn.WireguardGateway`\" pulumi-lang-yaml=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-java=\"`ionoscloud.vpn.WireguardGateway`\"\u003e`ionoscloud.vpn.WireguardGateway`\u003c/span\u003e data source provides information about a specific IonosCloud VPN WireGuard Gateway. You can use this data source to retrieve details of a WireGuard Gateway for use in other resources and configurations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.vpn.getWireguardGateway({\n    location: \"de/fra\",\n    name: \"example-gateway\",\n});\nexport const vpnWireguardGatewayPublicKey = exampleVpnWireguardGateway.publicKey;\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.vpn.get_wireguard_gateway(location=\"de/fra\",\n    name=\"example-gateway\")\npulumi.export(\"vpnWireguardGatewayPublicKey\", example_vpn_wireguard_gateway[\"publicKey\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Vpn.GetWireguardGateway.Invoke(new()\n    {\n        Location = \"de/fra\",\n        Name = \"example-gateway\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"vpnWireguardGatewayPublicKey\"] = exampleVpnWireguardGateway.PublicKey,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpn.LookupWireguardGateway(ctx, \u0026vpn.LookupWireguardGatewayArgs{\n\t\t\tLocation: pulumi.StringRef(\"de/fra\"),\n\t\t\tName:     pulumi.StringRef(\"example-gateway\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vpnWireguardGatewayPublicKey\", pulumi.Any(exampleVpnWireguardGateway.PublicKey))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.vpn.VpnFunctions;\nimport com.pulumi.ionoscloud.vpn.inputs.GetWireguardGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VpnFunctions.getWireguardGateway(GetWireguardGatewayArgs.builder()\n            .location(\"de/fra\")\n            .name(\"example-gateway\")\n            .build());\n\n        ctx.export(\"vpnWireguardGatewayPublicKey\", exampleVpnWireguardGateway.publicKey());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:vpn:getWireguardGateway\n      arguments:\n        location: de/fra\n        name: example-gateway\noutputs:\n  vpnWireguardGatewayPublicKey: ${exampleVpnWireguardGateway.publicKey}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getWireguardGateway.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the WireGuard Gateway.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "[String] The ID of the WireGuard Gateway.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[String] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[String] The name of the WireGuard Gateway.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getWireguardGateway.\n",
                "properties": {
                    "connections": {
                        "description": "A list of connection configurations for the WireGuard Gateway. Each \u003cspan pulumi-lang-nodejs=\"`connections`\" pulumi-lang-dotnet=\"`Connections`\" pulumi-lang-go=\"`connections`\" pulumi-lang-python=\"`connections`\" pulumi-lang-yaml=\"`connections`\" pulumi-lang-java=\"`connections`\"\u003e`connections`\u003c/span\u003e block contains:\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getWireguardGatewayConnection:getWireguardGatewayConnection"
                        },
                        "type": "array"
                    },
                    "description": {
                        "description": "The description of the WireGuard Gateway.\n",
                        "type": "string"
                    },
                    "gatewayIp": {
                        "description": "The IP address of the WireGuard Gateway.\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "interfaceIpv4Cidr": {
                        "description": "The IPv4 CIDR for the WireGuard Gateway interface.\n",
                        "type": "string"
                    },
                    "interfaceIpv6Cidr": {
                        "description": "The IPv6 CIDR for the WireGuard Gateway interface.\n",
                        "type": "string"
                    },
                    "listenPort": {
                        "type": "integer"
                    },
                    "location": {
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "A weekly 4 hour-long window, during which maintenance might occur.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getWireguardGatewayMaintenanceWindow:getWireguardGatewayMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "publicKey": {
                        "description": "The public key for the WireGuard Gateway.\n",
                        "type": "string"
                    },
                    "status": {
                        "description": "The current status of the WireGuard Gateway.\n",
                        "type": "string"
                    },
                    "tier": {
                        "description": "Gateway performance options.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "connections",
                    "gatewayIp",
                    "id",
                    "interfaceIpv4Cidr",
                    "interfaceIpv6Cidr",
                    "listenPort",
                    "maintenanceWindows",
                    "name",
                    "publicKey",
                    "status",
                    "tier"
                ],
                "type": "object"
            }
        },
        "ionoscloud:vpn/getWireguardPeer:getWireguardPeer": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-dotnet=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-go=\"`vpn.WireguardGateway`\" pulumi-lang-python=\"`vpn.WireguardGateway`\" pulumi-lang-yaml=\"`ionoscloud.vpn.WireguardGateway`\" pulumi-lang-java=\"`ionoscloud.vpn.WireguardGateway`\"\u003e`ionoscloud.vpn.WireguardGateway`\u003c/span\u003e data source provides information about a specific IonosCloud VPN WireGuard Gateway. You can use this data source to retrieve details of a WireGuard Gateway for use in other resources and configurations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as ionoscloud from \"@ionos-cloud/sdk-pulumi\";\n\nconst example = ionoscloud.vpn.getWireguardPeer({\n    location: \"de/fra\",\n    gatewayId: \"example-gateway\",\n    name: \"example-peer\",\n});\nexport const vpnWireguardPeerPublicKey = exampleVpnWireguardPeer.publicKey;\n```\n```python\nimport pulumi\nimport pulumi_ionoscloud as ionoscloud\n\nexample = ionoscloud.vpn.get_wireguard_peer(location=\"de/fra\",\n    gateway_id=\"example-gateway\",\n    name=\"example-peer\")\npulumi.export(\"vpnWireguardPeerPublicKey\", example_vpn_wireguard_peer[\"publicKey\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Ionoscloud.Vpn.GetWireguardPeer.Invoke(new()\n    {\n        Location = \"de/fra\",\n        GatewayId = \"example-gateway\",\n        Name = \"example-peer\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"vpnWireguardPeerPublicKey\"] = exampleVpnWireguardPeer.PublicKey,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/vpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpn.LookupWireguardPeer(ctx, \u0026vpn.LookupWireguardPeerArgs{\n\t\t\tLocation:  pulumi.StringRef(\"de/fra\"),\n\t\t\tGatewayId: \"example-gateway\",\n\t\t\tName:      pulumi.StringRef(\"example-peer\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vpnWireguardPeerPublicKey\", pulumi.Any(exampleVpnWireguardPeer.PublicKey))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.ionoscloud.vpn.VpnFunctions;\nimport com.pulumi.ionoscloud.vpn.inputs.GetWireguardPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VpnFunctions.getWireguardPeer(GetWireguardPeerArgs.builder()\n            .location(\"de/fra\")\n            .gatewayId(\"example-gateway\")\n            .name(\"example-peer\")\n            .build());\n\n        ctx.export(\"vpnWireguardPeerPublicKey\", exampleVpnWireguardPeer.publicKey());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: ionoscloud:vpn:getWireguardPeer\n      arguments:\n        location: de/fra\n        gatewayId: example-gateway\n        name: example-peer\noutputs:\n  vpnWireguardPeerPublicKey: ${exampleVpnWireguardPeer.publicKey}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getWireguardPeer.\n",
                "properties": {
                    "gatewayId": {
                        "type": "string",
                        "description": "[String] The ID of the WireGuard Gateway.\n"
                    },
                    "id": {
                        "type": "string",
                        "description": "[String] The ID of the WireGuard Peer.\n"
                    },
                    "location": {
                        "type": "string",
                        "description": "[String] The location of the WireGuard Gateway. Supported locations: de/fra, de/fra/2, de/txl, es/vit, gb/bhx, gb/lhr, us/ewr, us/las, us/mci, fr/par.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "[String] The name of the WireGuard Peer.\n"
                    }
                },
                "type": "object",
                "required": [
                    "gatewayId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getWireguardPeer.\n",
                "properties": {
                    "allowedIps": {
                        "description": "The subnet CIDRs that are allowed to connect to the WireGuard Gateway.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "description": {
                        "description": "The description of the WireGuard Peer.\n",
                        "type": "string"
                    },
                    "endpoints": {
                        "description": "The endpoint of the WireGuard Peer.\n",
                        "items": {
                            "$ref": "#/types/ionoscloud:vpn/getWireguardPeerEndpoint:getWireguardPeerEndpoint"
                        },
                        "type": "array"
                    },
                    "gatewayId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The unique ID of the WireGuard Peer.\n",
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the WireGuard Peer.\n",
                        "type": "string"
                    },
                    "publicKey": {
                        "description": "WireGuard public key of the connecting peer.\n",
                        "type": "string"
                    },
                    "status": {
                        "description": "The current status of the WireGuard Peer.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "allowedIps",
                    "description",
                    "endpoints",
                    "gatewayId",
                    "id",
                    "name",
                    "publicKey",
                    "status"
                ],
                "type": "object"
            }
        },
        "pulumi:providers:ionoscloud/terraformConfig": {
            "description": "This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.",
            "inputs": {
                "properties": {
                    "__self__": {
                        "type": "ref",
                        "$ref": "#/provider"
                    }
                },
                "type": "pulumi:providers:ionoscloud/terraformConfig",
                "required": [
                    "__self__"
                ]
            },
            "outputs": {
                "properties": {
                    "result": {
                        "additionalProperties": {
                            "$ref": "pulumi.json#/Any"
                        },
                        "type": "object"
                    }
                },
                "required": [
                    "result"
                ],
                "type": "object"
            }
        }
    }
}